Understand how Coop responds to API requests and errors.
| Status | Meaning |
|---|---|
200 OK |
Request succeeded; response body contains data |
202 Accepted |
Item submission received and queued for async processing |
204 No Content |
Request succeeded; no response body (e.g. report and appeal submissions) |
400 Bad Request |
Invalid request: malformed JSON, missing required fields, or schema mismatch (e.g. a report referencing a non-existent item). See error body for details. |
401 or 403 |
Authentication failure: API key is missing, invalid, or expired |
429 Too Many Requests |
Rate limit exceeded |
500 or 503 |
Internal server error. Typically transient; safe to retry |
502 or 504 |
Gateway or dependency error: an upstream service is unavailable; retry |
All 4xx errors return a JSON body in this format:
{
"errors": [
{
"status": 400,
"type": ["/errors/invalid-user-input"],
"title": "Short error description",
"detail": "Detailed explanation of the problem (optional)",
"pointer": "/path/to/problematic/field (optional)",
"requestId": "correlation-id (optional)"
}
]
}| Field | Description |
|---|---|
status |
HTTP status code |
type |
Array of error type identifiers |
title |
Short human-readable summary |
detail |
Additional context about the error, if available |
pointer |
JSON pointer to the field that caused the error, if applicable |
requestId |
Correlation ID for tracing |