# Standards

URL: /code/api/guides/standards · Id: `page:code/api/guides/standards`

> An Interface speaks a Standard through one translator the platform writes once; a Startup maps the Standard's operations onto its own Verbs.

A [Standard](/business/nouns/standard) is an outside spec an [Interface](/business/nouns/interface) also speaks, so its callers reach a [Product](/business/nouns/product)'s [Verbs](/business/nouns/verb) unchanged. The platform writes each Standard once as a translator, and a [Startup](/business/nouns/startup) maps the Standard's operations onto its own Verbs.

## Why Standards exist
Every route on every API compiles from a Verb, and nobody writes a route by hand. That holds while every caller speaks the Product's own grammar.

Some callers arrive in a shape someone else defined. A model client posts chat completions, a [Customer](/business/nouns/customer)'s identity provider provisions users with SCIM, and a file tool speaks S3.

A Standard answers those callers without opening the door to hand-written routes. A path that no Standard covers is refused.

## Declare a mapping
`listsmith.ai` sells an [Agent](/business/nouns/agent) that writes product listings through its own Verb, `Listing.write`. Its developer Customers already call models through chat-completions clients and want to switch by changing the base URL. The Startup's API Interface declares one mapping in `conformsTo`:

```ts
conformsTo: [
  { standard: 'openai-chat', operations: { 'chat.completions.create': 'Listing.write' } },
]
```

A Customer's client then posts to `https://api.listsmith.ai/v1/chat/completions` with its usual request and reads the usual response. The Standard's path sits on the Startup's own API host, under its [Publication](/business/nouns/publication).

## What the translator does
The translator accepts the request in the Standard's shape and runs the mapped Verb as an ordinary [Action](/business/nouns/action). Everything a native call gets, the translated call gets:

| On every translated call | Detail |
| --- | --- |
| Keys and [Permissions](/business/nouns/permission) | The caller's key and [Role](/business/nouns/role), checked as on any route |
| [Limits](/business/nouns/limit) and [Meters](/business/nouns/meter) | The same Limits apply, and usage meters against the caller's [Subscription](/business/nouns/subscription) |
| [Events](/business/nouns/event) and history | One Action, its Events, and its record, kept forever |
| Errors | Each refusal returned in the Standard's own error shape |

A Startup writes no translation code. A second Agent Product declares its own mapping and gets the same translator, so a fix to it reaches every Startup that speaks the Standard.

## Standards the platform speaks
| Standard | Callers | Maps onto |
| --- | --- | --- |
| SCIM 2.0 | A Customer's identity provider provisioning its people | [Tenant.invite](/business/nouns/tenant/invite) and membership Verbs |
| Chat completions | Model clients calling an Agent Product | The Agent's own Verb, such as `Listing.write` |
| S3 | Clients that read and write stored objects | [File](/business/nouns/file) Verbs |
| OIDC discovery | Clients signing in to a Startup as an authorization server | The Startup's sign-in |
| RSS | Feed readers following a [Site](/business/nouns/site) | [Page](/business/nouns/page) lists |
| Standard Webhooks | Receivers verifying deliveries | Every [Watch](/business/nouns/watch) delivery ([Webhooks](/code/api/guides/webhooks)) |

A Standard records its `spec`, the `path` where its translator answers, and the `operations` it accepts. List them with `Standard.list`.