API 1.3 — pagination, one error shape, idempotent actions
The customer API grows up a little for scripts, CI and AI agents. Every list endpoint now pages with ?limit= (up to 100) and ?cursor=, answering with meta.next_cursor and meta.has_more beside the array you already read — a site with hundreds of deploys or backups is no longer cut off at 20. Every error, from a bad token to a full rate bucket, has the same body: error.type to branch on, error.message to read, error.details per field on validation, and error.request_id, which every response also carries as X-Request-Id so support can find your exact request.
Actions that queue work — deploy, backup, restore, staging, cron and DNS writes — accept an Idempotency-Key header: retry a timed-out call with the same key within 24 hours and you get the stored first answer back instead of a second deploy. The OpenAPI spec (version 1.3) now carries full response schemas, the failure responses, the rate-limit headers and a written deprecation policy: breaking changes only under /api/v2. On the API tokens page each token now shows the address it was last used from, and points to Security → Connected apps for OAuth-connected assistants.