> ## Documentation Index
> Fetch the complete documentation index at: https://docs.otbstudio.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# L'API REST

> Cinq endpoints JSON en lecture seule pour les entreprises belges : recherche, profil, actionnariat, comptes annuels et personnes. Clé en jeton bearer, spécification OpenAPI 3.0.

| Route | Requiert | Renvoie |
| - | - | - |
| `GET /v1/companies?q=&limit=` | clé | Jusqu'à 25 résultats |
| `GET /v1/companies/{id}` | clé | Un profil, ou `404` |
| `GET /v1/companies/{id}/ownership` | clé | Actionnaires et participations |
| `GET /v1/companies/{id}/financials?years=&detail=` | clé | Les chiffres déposés, une ligne par exercice |
| `GET /v1/companies/{id}/people?limit=` | clé | Administrateurs et autres mandats, les mandats en cours d'abord |
| `POST /mcp` | clé | Le [serveur MCP](https://docs.otbstudio.ai/fr/mcp.md), aussi accessible sur `https://mcp.otbstudio.ai/mcp` |
| `GET /v1/pricing` | aucune | La [liste de prix](https://docs.otbstudio.ai/fr/pricing.md) en direct |
| `GET /openapi.json` | aucune | La spécification OpenAPI 3.0. `/openapi.nl.json` et `/openapi.fr.json` en sont les versions néerlandaise et française |
| `GET /health` | aucune | Disponibilité du service |

`{id}` est le numéro d'entreprise sous toute forme usuelle : `BE0712345630`, `0712.345.630` ou `0712345630`. Chaque réponse servie porte `X-Credits-Cost` et `X-Credits-Remaining` ([Limites](https://docs.otbstudio.ai/fr/limits.md)). Les champs vides pour une entreprise sont omis, jamais envoyés à `null`.

Il n'y a pas de pagination : une réponse contient au maximum la `limit` de la route. Il n'existe pas de SDK officiel ; la [spécification OpenAPI](https://api.otbstudio.ai/openapi.fr.json) fait foi, et vous pouvez en générer un client.

La version figure dans le chemin, `/v1/`. Au sein de cette version, une modification ne fait qu'ajouter une route, un paramètre ou un champ : écrivez des clients qui ignorent les champs qu'ils ne connaissent pas.

## Recherche

```bash theme={null}
curl -s "https://api.otbstudio.ai/v1/companies?q=noordkaap&limit=2" \
  -H "Authorization: Bearer $OTB_KEY"
```

> **Exemple de réponse**
>
> ```json theme={null}
> {
>   "companies": [
>     { "enterpriseNumber": "BE0734567835", "name": "Noordkaap Warehousing", "employees": 214, "statusCode": "AC" },
>     { "enterpriseNumber": "BE0712345630", "name": "Noordkaap Logistics", "employees": 187, "statusCode": "AC" }
>   ]
> }
> ```

`limit` n'est jamais refusé : une valeur absente ou hors limites (inférieure à 1 ou supérieure à 25) est remplacée par la valeur par défaut, 10. `q` est obligatoire : sans lui, la réponse est `400 query_required`. La correspondance porte sur des mots entiers et ne corrige pas les fautes de frappe. Les entreprises marquées `deleted` sont exclues de la recherche, mais restent consultables par numéro. La recherche ne coûte aucun crédit.

`name` est le nom qui a correspondu. Ici, `employees` est le chiffre propre au registre et peut différer de `financials.employees` dans le profil, qui provient du dernier dépôt.

## Profil

```bash theme={null}
curl -s "https://api.otbstudio.ai/v1/companies/0712.345.630" \
  -H "Authorization: Bearer $OTB_KEY"
```

> **Exemple de réponse**
>
> ```json theme={null}
> {
>   "enterpriseNumber": "BE0712345630",
>   "nameNl": "Noordkaap Logistics",
>   "statusCode": "AC",
>   "juridicalFormCode": "014",
>   "juridicalSituationCode": "000",
>   "typeOfEnterpriseCode": "2",
>   "deleted": false,
>   "startDate": "1998-06-15",
>   "street": "Kaaiweg 14",
>   "zipCode": "9000",
>   "city": "Gent",
>   "website": "noordkaap.example",
>   "activities": "MAIN :: 006 :: 2025 :: 49410;MAIN :: 001 :: 2025 :: 52100",
>   "financials": {
>     "closingDate": "2025-03-31",
>     "reference": "2025-00184417",
>     "schemaType": "full",
>     "employees": 186.4,
>     "equity": 12480310.52,
>     "operatingIncome": 3912774.18,
>     "ebitda": 5240118.66,
>     "resultForPeriod": 2731905.07,
>     "healthIndicator": 10
>   },
>   "has": {
>     "annualAccounts": true,
>     "participations": true,
>     "accountants": true,
>     "valuations": false,
>     "socialBalances": true
>   },
>   "snapshotDate": "2026-04-29"
> }
> ```

`financials` est le dépôt le plus récent. C'est le même enregistrement que celui que la route des comptes annuels renvoie en premier : les deux ne peuvent donc pas se contredire.

## Actionnariat

```bash theme={null}
curl -s "https://api.otbstudio.ai/v1/companies/BE0712345630/ownership" \
  -H "Authorization: Bearer $OTB_KEY"
```

> **Exemple de réponse**
>
> ```json theme={null}
> {
>   "enterpriseNumber": "BE0712345630",
>   "shareholders": [
>     {
>       "name": "Noordkaap Holding NV",
>       "enterpriseNumber": "BE0723456781",
>       "stakePercent": 72.5,
>       "shareClass": "Gewone aandelen",
>       "asOf": "2025-03-31",
>       "sourceReference": "2025-00184417",
>       "sourceSystem": "NBB",
>       "exact": true
>     }
>   ],
>   "participations": [
>     {
>       "name": "Noordkaap Warehousing",
>       "enterpriseNumber": "BE0734567835",
>       "stakePercent": 100,
>       "asOf": "2025-03-31",
>       "sourceReference": "2025-00184417",
>       "sourceSystem": "NBB",
>       "exact": true
>     }
>   ]
> }
> ```

Les deux sens ont la même structure. Les `shareholders` détiennent une participation dans cette entreprise ; les `participations` sont celles qu'elle détient dans d'autres. Chaque `enterpriseNumber` peut être repassé tel quel à cette route, ce qui permet de remonter une chaîne. Chacune des deux listes peut être vide.

## Comptes annuels

```bash theme={null}
curl -s "https://api.otbstudio.ai/v1/companies/BE0712345630/financials?years=1&detail=true" \
  -H "Authorization: Bearer $OTB_KEY"
```

> **Exemple de réponse**
>
> ```json theme={null}
> {
>   "periods": [
>     {
>       "closingDate": "2025-03-31",
>       "reference": "2025-00184417",
>       "schemaType": "full",
>       "employees": 186.4,
>       "equity": 12480310.52,
>       "operatingIncome": 3912774.18,
>       "ebitda": 5240118.66,
>       "resultForPeriod": 2731905.07,
>       "healthIndicator": 10,
>       "cashFlow": {
>         "operating": 4410228.35,
>         "investing": -1876340.12,
>         "financing": -1504377.8,
>         "free": 2533888.23,
>         "cashAtPeriodEnd": 1388902.41,
>         "distributionsToOwners": 600000
>       },
>       "balanceSheet": {
>         "operatingProfit": 3480112.9,
>         "depreciation": 1328006.48,
>         "staffCosts": 9876540.21,
>         "totalAssets": 31902554.7,
>         "totalDebt": 8044120.33,
>         "interestPaid": 288410.12
>       }
>     }
>   ]
> }
> ```

Une ligne par exercice, du plus récent au plus ancien. `years` va de 1 à 20 ; une valeur absente ou hors limites est remplacée par la valeur par défaut, 10. Sans `detail=true`, chaque ligne ne contient que les six chiffres clés. Chaque exercice est facturé : dix ans coûtent donc environ dix fois un an.

## Personnes

```bash theme={null}
curl -s "https://api.otbstudio.ai/v1/companies/BE0712345630/people?limit=2" \
  -H "Authorization: Bearer $OTB_KEY"
```

> **Exemple de réponse**
>
> ```json theme={null}
> {
>   "people": [
>     {
>       "lastName": "Verhaegen",
>       "firstName": "Lotte",
>       "category": "ADMINISTER",
>       "role": "13",
>       "profession": "Gedelegeerd bestuurder",
>       "startDate": "2024-09-25",
>       "endDate": "2028-09-27",
>       "current": true,
>       "viaCompany": "Verhaegen Consult BV",
>       "viaEnterpriseNumber": "BE1023456797",
>       "sourceSystem": "NBB",
>       "sourceReference": "2025-00184417"
>     },
>     {
>       "lastName": "Peeters",
>       "firstName": "Luc",
>       "category": "OTHERMANDATE",
>       "role": "Aankoper",
>       "current": true,
>       "sourceSystem": "BSDM"
>     }
>   ]
> }
> ```
>
> Les noms de cet exemple sont fictifs.

Les mandats en cours d'abord, puis l'historique. `limit` va de 1 à 200 ; une valeur absente ou hors limites est remplacée par la valeur par défaut, 50. Au-delà des 200 premiers, les mandats ne peuvent pas être récupérés. L'appartenance politique, la rémunération et l'adresse privée ne sont jamais renvoyées, et les personnes que la source marque comme masquées sont exclues.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.