# API declaration reference

URL: /products/api/reference · Id: `page:products/api/reference`

> Every key a founder or coding agent writes to declare an API, with its type, what it holds and the page that explains it.

An API is declared in four places: the [Product](/business/nouns/product) file, its [Interface](/business/nouns/interface), its [Offers](/business/nouns/offer) and its [Publication](/business/nouns/publication). Every other part compiles from these keys.

## Product file
`products/pro.mdx`, frontmatter. [Products](/code/file-conventions/products) is the file convention.

| Key | Type | Holds | Explained in |
| --- | --- | --- | --- |
| `$type` | list | `API`, alone or beside `App`, `Agent`, `Dataset` or `Service` | [Anatomy of an API](/products/api/anatomy) |
| `nouns` | [Noun](/business/nouns/noun) names | The Nouns it exposes | [Design an API](/products/api/design) |
| `verbs` | [Verb](/business/nouns/verb) ids | The Verbs a [Customer](/business/nouns/customer) may call | [Customize an API](/products/api/customize) |
| `interfaces` | list | The Interfaces it ships on; every kind by default | [Packages under your name](/products/api/your-sdks) |

## Interface
| Key | Type | Holds | Explained in |
| --- | --- | --- | --- |
| `kind` | `api`, `mcp`, `cli`, `sdk`, `site`, `app`, `docs` or `webhooks` | Which Interface it is | [Packages under your name](/products/api/your-sdks) |
| `path` | string | Where it mounts on the [Domain](/business/nouns/domain), such as `/api` | [Customize an API](/products/api/customize) |
| `conformsTo` | list | The [Standards](/business/nouns/standard) it also speaks, each mapping operations onto Verbs | [Standards your API speaks](/products/api/standards) |

## Offer
`offers/portfolio.mdx`, frontmatter. [Offers](/code/file-conventions/offers) has every key; these decide what an API caller gets.

| Key | Type | Holds | Explained in |
| --- | --- | --- | --- |
| `price` | `{ amount, currency }` | What it charges each interval | [Sell an API](/products/api/sell) |
| `interval` | `once`, `day`, `week`, `month` or `year` | How often it bills | [Sell an API](/products/api/sell) |
| `atBound` | `stop`, `overage` or `upgrade` | What a call past a [Limit](/business/nouns/limit) gets | [API plans, limits and uptime](/products/api/plans-and-uptime) |
| `credit` | `{ amount, currency }` | Prepaid credit each purchase issues | [Sell an API](/products/api/sell) |

[`Offer.grant`](/business/nouns/offer/grant) adds each [Entitlement](/business/nouns/entitlement): a Verb, optionally with a Limit.

## Publication
Compiled from the [Brand](/business/nouns/brand), the Domain and one [Version](/business/nouns/version). Each field can be set.

| Key | Holds | Explained in |
| --- | --- | --- |
| `api`, `mcp`, `docs`, `statusPage`, `portal` | Where each Interface answers on the Domain | [Customize an API](/products/api/customize) |
| `packages` | The SDK, CLI and MCP package names, per package registry | [Packages under your name](/products/api/your-sdks) |
| `envPrefix` | The prefix of the key variable the packages read | [Packages under your name](/products/api/your-sdks) |
| `webhookHeader` | The signature header on every delivery | [Webhooks for your customers](/products/api/webhooks) |
| `errorNamespace` | The base of every error `type` | [Design an API](/products/api/design) |

## Per Tenant and per Watch
| Record | Key | Holds | Explained in |
| --- | --- | --- | --- |
| [Tenant](/business/nouns/tenant) | `apiVersion` | The version an unversioned call answers at | [Versioning your API](/products/api/versions) |
| [Watch](/business/nouns/watch) | `selector`, `url`, `payload` | Which [Events](/business/nouns/event) go where, in full or thin | [Webhooks for your customers](/products/api/webhooks) |

Every route, method, command and tool: [API](/code/api/interface) · [SDK](/code/sdk/interface) · [CLI](/code/cli/interface) · [MCP](/code/mcp/interface).