> ## 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.

# Field reference

> Every field the REST API and the MCP tools return, and what it means.

Every field the API returns, grouped as on the profile. Empty fields are left out of a reply, never sent as `null`.

## Identity

| Field | Type | Meaning |
| - | - | - |
| `enterpriseNumber` | string | Belgian enterprise number, normalised to `BE0712345630`. The key for every other route. A small share of records carry a foreign identifier instead |
| `nameNl` | string | Legal name, Dutch |
| `nameFr` | string | Legal name, French |
| `abbreviationNl` | string | Registered abbreviation |
| `commercialName` | string | Trading name, where one is registered |

## Search results

Each entry in `companies` from `GET /v1/companies`.

| Field | Type | Meaning |
| - | - | - |
| `enterpriseNumber` | string | The key for every other route |
| `name` | string | The name that matched: legal, commercial, Dutch or French |
| `employees` | number | The register's own figure. Can differ from the profile's `financials.employees`, which comes from the latest filing |
| `statusCode` | string | Raw KBO status code. **Unlabelled** |

## Status and lifecycle

| Field | Type | Meaning |
| - | - | - |
| `statusCode` | string | Raw KBO status code, for example `AC`. **Unlabelled** |
| `juridicalFormCode` | string | Raw legal-form code. **Unlabelled** |
| `juridicalSituationCode` | string | Raw legal-situation code |
| `typeOfEnterpriseCode` | string | Natural person or legal entity, as a code |
| `deleted` | boolean | Flagged as deleted in the source register. The details are historical |
| `startDate` | date | Registration date |
| `endDate` | date | Cessation date, where one exists |

## Contact and activity

| Field | Type | Meaning |
| - | - | - |
| `street` | string | Registered seat, street and number |
| `zipCode` | string | Postal code |
| `city` | string | Municipality |
| `telephone` | string | Where registered |
| `email` | string | Where registered |
| `website` | string | Where registered |
| `activities` | string | A packed string: `MAIN :: 006 :: 2025 :: 58120`, repeated and separated by `;`. The last part is the NACE code and the third is a year. The first two are source codes with no published meaning |

## Financials

Headline figures from the single most recent filing, under `financials` on the profile, and on every row of the financials route. Absent entirely when the filing carried no numbers.

| Field | Type | Meaning |
| - | - | - |
| `closingDate` | date | Last day of the accounting period the figures cover |
| `reference` | string | The filing's reference at the National Bank, which is how a number is checked |
| `schemaType` | string | `full`, `abbreviated` and so on. A company that changes schema reports a different level of detail |
| `corrected` | boolean | This filing replaced an earlier one for the same period. It is the figure that counts |
| `comparative` | boolean | Lifted from the prior-year column of a later filing. Its reference cannot be looked up |
| `employees` | number | Average full-time equivalents (FTE) over the period, not headcount. Fractional by design |
| `equity` | number | EUR |
| `operatingIncome` | number | EUR |
| `ebitda` | number | EUR. The source's derived figure: Belgian accounts have no EBITDA line |
| `resultForPeriod` | number | EUR |
| `healthIndicator` | number | The source's score, a whole number from 1 to 10. The method is not published |

## Financials, with `detail=true`

Two objects added to every row of the financials route. Amounts in EUR.

| Field | Type | Meaning |
| - | - | - |
| `cashFlow.operating`, `.investing`, `.financing`, `.free` | number | The filed cash flow statement |
| `cashFlow.cashAtPeriodEnd` | number | Cash at the closing date |
| `cashFlow.distributionsToOwners` | number | Dividends and other distributions to owners, as filed |
| `balanceSheet.operatingProfit`, `.depreciation`, `.staffCosts` | number | Named lines from the filing |
| `balanceSheet.totalAssets` | number | The balance sheet total |
| `balanceSheet.totalDebt`, `.interestPaid` | number | Debt, and the cost of debt for the period |

## Ownership

One shape for each entry in `shareholders` and `participations`.

| Field | Type | Meaning |
| - | - | - |
| `name`, `enterpriseNumber` | string | The other party. The number is not always Belgian |
| `stakePercent` | number | The direct stake as a real percentage: 50 means half |
| `indirectPercent` | number | A stake held through another entity, on the same scale |
| `shareClass` | string | The share class as filed, in the language it was filed in |
| `asOf` | date | The end of the period the filing covers, so a stake can be aged |
| `sourceSystem`, `sourceReference` | string | Where the stake was read. `NBB` references match the annual accounts and can be looked up |
| `exact` | boolean | The source's confidence that the link is precisely sourced. `false` is the sign of a stale or inferred entry |

## People

One entry per mandate in `people`.

| Field | Type | Meaning |
| - | - | - |
| `lastName`, `firstName` | string | The person |
| `category` | string | `ADMINISTER`, `SHAREHOLDER`, `LOCALPOLITICALMANDATE` or `OTHERMANDATE` |
| `role` | string | For `ADMINISTER`, an unlabelled source code such as `13`. Otherwise the role in words, in the language it was filed in |
| `profession` | string | As filed |
| `startDate`, `endDate` | date | The end date is usually the end of the term, not the day the person left |
| `current` | boolean | Whether the mandate is held today. **Read this, not the dates** |
| `viaCompany`, `viaEnterpriseNumber` | string | Set when the mandate is held through a company, with this person as its permanent representative |
| `sourceSystem`, `sourceReference` | string | Where the mandate was read |

## Availability flags

`has` says what the source holds for this company without fetching it, so an agent or a job can decide whether a follow-up is worth making. **A true flag is an upper bound**: it means the source has the dataset, not that a call will return rows. Most companies flagged for participations have nothing the ownership route can return.

| Field | Meaning |
| - | - |
| `has.annualAccounts` | Filed accounts exist. Read them with the financials route |
| `has.participations` | Shareholdings exist in the source. Read them with the ownership route |
| `has.accountants` | An accountant or auditor is on record. Not served yet |
| `has.valuations` | A valuation exists. Not served yet |
| `has.socialBalances` | A social balance sheet exists. Not served yet |

## Provenance

| Field | Meaning |
| - | - |
| `snapshotDate` | When this record was last refreshed from the source. Every answer is an answer as of a date |


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