Errors, idempotency & rate limits
Errors
Every error shares one shape:error.code (a stable slug), not the human-readable message.
Idempotency
POST / PATCH accept an Idempotency-Key header. Replaying the same key on the same route within 24h returns the original response with Idempotency-Replayed: true.
Rate limits
Limits are per key. Exceeding one returns429.
Per-account rate tiers are a Phase-2 item. Phase 1 applies these flat defaults to every key.