Errors & idempotency

Every error response is JSON with a stable code and a human error message.

{
  "error": "Invalid or missing API key",
  "code": "unauthorized"
}

Idempotency

Pass an Idempotency-Key header on any POST. Replays within 24h return the original response.

await atp.payouts.create({ /* … */ }, "6f2a-…");