Skip to main content
Product API errors return a JSON body:
code is present for domain errors. Generic HTTP errors may omit it.

Status codes

Idempotent retries

Every POST accepts an optional Idempotency-Key header (any unique string ≤255 chars, e.g. a UUID). Retrying with the same key within 24 hours replays the original response — with an Idempotency-Replayed: true header — instead of re-executing, so a network failure mid-request can never create a duplicate watch or double-charge credits. Reusing a key with a different body returns 422 (IDEMPOTENCY_KEY_REUSED); a concurrent duplicate returns 409 (IDEMPOTENCY_CONFLICT). Responses with status 401, 429, or 5xx are never stored, so those retries re-execute. The Node SDK sends a generated key on every POST automatically.

Domain codes

Rate limits

/v1/* is quota-limited per Account per minute, and the ceiling depends on your plan — see Limits. Over the quota you get 429 with code: "TOO_MANY_REQUESTS":
Every response carries IETF draft-7 RateLimit and RateLimit-Policy headers so you can pace yourself before being throttled; a 429 also carries Retry-After in seconds. The Node SDK retries 429 automatically and honours Retry-After.
Every response includes X-Request-Id for support correlation.