---
title: "Documentation API — NexaLab | Audit web et contact"
description: "Documentation de l'API publique NexaLab : audit web automatisé gratuit et prise de contact. Spécification OpenAPI 3.1, sans authentification, données en Suisse et UE."
canonical: https://nexa-lab.ch/docs/api/
lang: fr-CH
site: NexaLab
---

# Documentation API

NexaLab expose deux capacités publiques : lancer un **audit web automatisé gratuit** et transmettre une **demande de contact**. Aucune authentification n'est requise. Ces endpoints sont utilisables par un humain comme par un agent IA.

## En bref

- **Base URL** : `https://nexa-lab.ch`

- **Spécification machine** : [OpenAPI 3.1](https://nexa-lab.ch/openapi.json) (`/openapi.json`)

- **Catalogue d'API** : [`/.well-known/api-catalog`](https://nexa-lab.ch/.well-known/api-catalog) (RFC 9727)

- **État du service** : [`/api/status`](https://nexa-lab.ch/api/status)

- **Authentification** : aucune

- **Format** : JSON en entrée et en sortie (`Content-Type: application/json`)

- **Limites** : 10 requêtes par adresse IP et 5 par e-mail sur 24 heures

- **Hébergement des données** : Suisse et Union européenne, conforme nLPD et RGPD

## Audit web gratuit

### `POST /api/audit`

Démarre un audit automatisé du site indiqué. Le traitement est **asynchrone** : la réponse renvoie immédiatement un `token`, le rapport arrive par e-mail en quelques minutes et reste consultable sur `/audit/r/{token}`.

**Champs requis** : `url`, `prenom`, `email`, `consent` (qui doit valoir exactement `true` — consentement nLPD/RGPD explicite).
 **Champs optionnels** : `entreprise`, `secteur`, `socials`, `competitor`.

```
`curl -X POST https://nexa-lab.ch/api/audit \
 -H "Content-Type: application/json" \
 -d '{
 "url": "https://exemple-pme.ch",
 "prenom": "Camille",
 "email": "camille@exemple-pme.ch",
 "entreprise": "Exemple PME SA",
 "secteur": "Fiduciaire",
 "consent": true
 }'`
```

Réponse `200` :

```
`{
 "ok": true,
 "message": "Votre audit est lancé. Vous recevrez le rapport par e-mail dans quelques minutes.",
 "token": "9f2c1ab74e5d0836bb41c7e29da5f0631c8ee47a25b9d0f3"
}`
```

Les cibles internes sont refusées : `localhost`, plages IP privées, adresses IPv6 littérales, domaines en `.local` et `.internal`.

### `GET /audit/r/{token}`

Affiche le rapport d'audit en HTML, ou une page d'attente si le traitement est encore en cours. Le `token` fait 48 caractères hexadécimaux. La page est servie en `noindex` : elle n'est pas destinée à être partagée publiquement.

## Contact

### `POST /api/contact`

Transmet une demande commerciale. Réponse humaine sous 24 heures ouvrées.

**Champs requis** : `prenom`, `email`, `message` (10 caractères minimum, 4000 maximum).
 **Champs optionnels** : `nom`, `entreprise`, `site`.

```
`curl -X POST https://nexa-lab.ch/api/contact \
 -H "Content-Type: application/json" \
 -d '{
 "prenom": "Camille",
 "email": "camille@exemple-pme.ch",
 "entreprise": "Exemple PME SA",
 "message": "Nous cherchons à automatiser la relance de nos factures impayées."
 }'`
```

Réponse `200` :

```
`{ "ok": true, "message": "Votre message a bien été envoyé. On vous répond sous 24h." }`
```

## Codes d'erreur

- `400` — validation échouée. Les messages sont en français et concaténés par `, `. Exemple : `{"error": "email invalide, consentement RGPD requis"}`

- `405` — méthode HTTP non supportée.

- `429` — limite de débit atteinte : réessayez dans 24 heures ou écrivez à [contact@nexa-lab.ch](mailto:contact@nexa-lab.ch).

- `500` — erreur interne.

## Pour les agents IA

NexaLab publie plusieurs points d'entrée destinés aux agents autonomes :

- [`/llms.txt`](https://nexa-lab.ch/llms.txt) — résumé structuré de l'agence, des services, des tarifs et des délais.

- [`/.well-known/agent-skills/index.json`](https://nexa-lab.ch/.well-known/agent-skills/index.json) — index de compétences *Agent Skills* installables.

- [`/.well-known/ai-catalog.json`](https://nexa-lab.ch/.well-known/ai-catalog.json) — catalogue Agentic Resource Discovery.

- Chaque page du site répond en Markdown si la requête porte l'en-tête `Accept: text/markdown`.

## Conditions d'usage

Ces endpoints sont fournis pour permettre à une PME — ou à l'agent qui la représente — d'obtenir un audit et d'entrer en contact. Toute utilisation automatisée doit respecter les limites de débit, n'auditer que des sites dont l'utilisateur a le droit de demander l'analyse, et n'envoyer que des demandes de contact légitimes. Voir les [mentions légales](https://nexa-lab.ch/mentions-legales/) et la [politique de confidentialité](https://nexa-lab.ch/confidentialite/).
