Integration playbook
The short list of things that will save you time, distilled from the integrator journey. If you read only one page beyond the quickstart, read this and Deviations.
Build in this order
- Wire
GET /healthinto your smoke test; pullpublic/openapi.jsonfor discovery. - Get one credential working end-to-end (key or OAuth) before touching products.
- Confirm a category resolves by doing a real create, don't trust hint lists.
- Drive the full happy path once by hand, then codify it. Capture
productIdandpassportUidonly from documented response fields. - Subscribe to webhooks before you build polling, most state you want is pushed.
Idempotency
- Generate one
Idempotency-Key(uuid) per logical operation and reuse it on retries. - Required on
publish-dppandoauth/token; recommended everywhere else. - Same key + different body → typed conflict. Never recycle a key across different operations.
- Telling a replay from a fresh execution: a response served from a previously completed execution carries the header
Idempotency-Status: replayed. The header is absent on a first execution: absence means fresh, andreplayedis the only value ever sent. This covers both replay layers on the AIDC surface: the sharedIdempotency-Keycache, and the job routes that replay from job state (those also keep theirreplayedbody field). The legacyX-Idempotency-Hit: trueheader still accompanies cache replays; preferIdempotency-Statusin new integrations.
Correlation & debugging
Attach X-Correlation-Id to every request from day one. It shows up in audit-logs as requestId and ties your call to metrics, it is the fastest way to answer "what happened to my request?".
Versioning, pagination & limits
| Topic | Contract today |
|---|---|
| Versioning | One stable major, /api/v2. Ignore any /v1 examples elsewhere, the /api/v2 contract is authoritative. |
| Rate limiting | Enforced, per-tier budgets (Redis-backed). Over budget → 429 RATE_LIMITED + Retry-After; watch the X-RateLimit-* headers. |
| Pagination | Not specified in the current contract, do not assume a cursor convention. |
Sandbox safety
Run everything in sandbox first: no anchoring, no production email, no registry submission, no billing. Treat full isolation as the design contract and verify anything safety-critical yourself while guards are hardened.