400 | Invalid request (e.g. model_not_served, unknown collection ID) | Fix the request — the message says exactly what’s wrong |
401 | Missing or invalid key | Check the Bearer token |
402 | Usage allowance and overage budget exhausted | Response includes balance/reset metadata — surface it, don’t blind-retry |
403 | Key lacks the required scope | Grant the scope on the Integration |
409 | Version conflict on the source lifecycle | See source-owned memories — usually means “already durable” |
413 | Content too large | Split the payload |
429 | Rate limited | Back off per the rate-limit headers |
503 | Backend not ready (e.g. integration_unbillable) | Retry with backoff; check /api/v1/status |