/api/v2/ is Django REST Framework. Error bodies are usually {"detail": "…"} or a field-keyed validation object. There is no { data, error, meta.request_id } wrapper and no doc_… ids.
Statuses you will see
404, not 403, on a foreign or missing id is intentional. Do not treat 404 as “delete and recreate” without checking you have the right organization and id.
Validation
Serializer errors look like:detail string. Branch on the HTTP status first, then on field names if you need to highlight a form field.
Retries
Retry 503 and network failures with backoff. Do not blindly retry POSTs that start billable work (upload, reprocess, chat turn, ingest process) — a second call can charge again or create a second turn. Idempotent GETs and the ingest upload register (deduped on org + sha256) are safe to repeat.Uploads
Accepted library/chat uploads today: PDF and images (.jpg, .jpeg, .png, .webp, .heic, .tiff, .tif). 20 files per single upload, 1,024 per batch, 64 MB per file. Digital formats (docx, xlsx, …) are not accepted until that flag is on.
