Documentation Index
Fetch the complete documentation index at: https://docs.apivalk.com/llms.txt
Use this file to discover all available pages before exploring further.
Response format and status codes
Response format and status codes
Base success response (200, 201, 202)
Base collection response (200)
The pre-built resource responses (Empty response must be an empty array:ResourceListResponse,ResourceViewResponse, …) emit exactly this shape — thedataenvelope and pagination wrapper come from the framework, not your controller code.
Base error response (400-500)
- error.key is mandatory and machine-readable
- error.message is human-readable and should be localized
Base deleted response (204)
HTTP 204 responses have no body.Base validation error response (422)
- parameter should use snake_case and match the request field name where possible
- message should be localized
- key should be stable and machine-readable
Base OPTIONS response
OPTIONS responses should rely on headers, not a body. Example headers:HTTP status codes
| Code | Meaning | Use when |
|---|---|---|
| 200 | OK | Standard GET, PUT, PATCH, DELETE |
| 201 | Created | New resource created (POST) |
| 202 | Accepted | Async operation started |
| 204 | No Content | Successful with no body |
| 400 | Bad Request | Validation error or bad input |
| 401 | Unauthorized | Auth missing or invalid |
| 403 | Forbidden | No permission |
| 404 | Not Found | Resource does not exist |
| 409 | Conflict | Duplicate or inconsistent data |
| 422 | Unprocessable Entity | Semantic validation failure |
| 429 | Too Many Requests | Rate limit exceeded |
| 500 | Internal Server Error | Unexpected backend failure |
Rate limiting
All REST APIs should expose standardized rate-limit information via HTTP response headers. Headers:| Header | Description |
|---|---|
| X-RateLimit-Limit | Maximum number of requests allowed within the time window |
| X-RateLimit-Remaining | Requests remaining in the current window |
| X-RateLimit-Reset | UNIX timestamp (seconds) when the window resets |
| Retry-After | Seconds to wait before retrying (429 only) |