The API serves its own spec
GET /v1/openapi.yaml and /v1/openapi.json serve the public contract — the same document this reference is built from, no API key needed.
The API now serves its own contract at GET /v1/openapi.yaml and GET /v1/openapi.json — byte for byte the document this reference is generated from, so a client generated from the API and a client generated from the docs are the same client. Only the public spec is served.
What else changed
- No API key required. It is the contract, not your data.
- Deliberately absent from the spec it serves, so a generated client does not grow a method for downloading its own definition.
/openapi.yamland/openapi.jsonanswer the same document.
Endpoints
- GET/v1/openapi.yamlThe public contract, as YAML
- GET/v1/openapi.jsonThe public contract, as JSON
Where to go next
Addresses can be missing, and accept more characters
`issuer.address` is optional and is no longer filled with invented values, and one character set governs every address field.
The PDF download waits instead of asking you to poll
`GET .../invoices/{id}/pdf` now waits for the PDF and answers `200`. `Prefer: wait=0` keeps the old pure polling behaviour.