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

# API conventions

> Auth, jobs, idempotency, and the generated reference

Every page in this tab after the group overviews is generated from the public
`/v1` OpenAPI projection. Field lists, required flags, and response unions
come from the same schemas the service validates.

## Host and auth

```text theme={"dark"}
https://ndi-api.nace.ai
```

Send `X-API-Key: ndi_sk_…` on every call. See [Authentication](/authentication).

## Jobs

Any operation that can outlast a request returns a `Job`. Pass
`?wait_seconds=` (0–300) as a **query parameter** to hold the response open.
`Idempotency-Key` is an **HTTP header**. Strict bodies reject those names if
you put them in JSON.

See [Jobs and idempotency](/concepts/jobs-idempotency).

## Errors

Failures use one envelope — documented on [Errors and limits](/concepts/errors).
Generated pages show the **success** body (200/202) and a single `default`
error example. They do not repeat 400/401/402/… on every operation; HTTP
status is a consequence of `error.code`.

## SDKs

Application code should use the [Python](/sdks/python) or
[TypeScript](/sdks/typescript) client. Method pages there document signatures,
parameters, and returns.

Generated pages in this tab show **curl** only. Device-code CLI and console
playground routes are not listed here — see [MCP and CLI](/guides/mcp-cli) and
[Playground](/guides/playground).

## Local preview

Generate the spec before `mintlify dev`:

```bash theme={"dark"}
uv run python services/ndi_service/scripts/export_public_openapi.py
cd services/ndi_service/docs-site
mintlify dev
```
