Errors
400— validation. Validation errors use two alternative shapes, never combined in one response. Field validation failures — each offending field maps to a list of messages:
{ "plaintiff_name": ["This field is required."]}Cross-field rule violations (the conditional-requirement rules — “required when”, “at least one of”, etc.) arrive under non_field_errors, and are returned only once field-level validation passes:
{ "non_field_errors": [ "Fields 'policy_number' and 'claim_number' can not both be empty.You must define one (or both) of the fields." ]}400onGET /api/v1/partner/invoices/—{"error": "invalid_filter", "detail": "<what to fix>"}. See Invoices.401— missing or bad token. NoAuthorizationheader:{"detail": "Authentication credentials were not provided."}. Header present but the token is invalid or expired:{"detail": "Invalid token."}.403— not currently returned by the partner API. Every partner endpoint only requires an authenticated user; cross-organization access to a case is reported as404(below), not403, so as not to leak whether a case exists outside your organization.404— unknowncase_ref, a case your organization can’t access, or results not yet available on the results endpoint.409— two sources with different bodies. Cancel returns it for a non-cancellable state (already closed, substantially complete, or intake still processing) with anerror-keyed body — see the endpoint’s schema for the specificerrorcode. The file-append endpoint returns it when the per-case cap is reached (25 files or 500 MB total per case) with adetail-keyed body:{"detail": "Per-case file limit reached (25 files / 524288000 bytes)."}. Files sent when replying to acase.action_requiredinteraction are not counted against this cap.413— request body too large. A backstop you will normally never observe: bodies above the ceiling are rejected at our network edge first, with a generic413/502that carries neither of the fields below. The coded form appears only when an oversized request reaches Red Folder directly — for example if edge configuration changes, or on a request that reaches our origin without passing through the edge. The edge and application ceilings are currently the same 200 MB of total body, so in normal operation the edge rejects first. Body:{"detail": ..., "error_code": "request_too_large"}. It is returned by every upload endpoint (case create, file append, interaction response, and the deprecated upload route), so branch on the code rather than the endpoint. Split the upload into smaller requests, or reduce file sizes, and see Size limits for the ladder and recovery steps.429— rate limited. Most endpoints allow100/minper authenticated user; the file-append endpoint (POST .../cases/{case_ref}/files) is capped separately at60/min, and the two invoice endpoints (GET .../invoices/) share their own60/minlimit. Body:{"detail": "Request was throttled. Expected available in <N> seconds."}. HonorRetry-Afterwhen present and retry with exponential backoff.- File-level failures are reported differently by endpoint: case creation reports each file’s outcome per-file in the
attachmentsarray viaerror_code— the case itself still succeeds. The single-file append endpoint instead fails the whole request with400and{"detail": ..., "error_code": ...}. See each endpoint’serror_codetable. A file over the 150 MB per-file limit carrieserror_code: file_too_largein either shape; a create request over 10 files or 192 MB of file bytes fails as a top-levelfilesfield error instead. Interaction responses (POST .../cases/{case_ref}/respond/) validate their attachments the same way and return the same{"detail": ..., "error_code": ...}envelope. Full ladder: Size limits.