error.code is an integer and always matches the HTTP status of the response.
Shape
request_id— correlate with theX-Request-Idresponse header.details— optional object; extra keys allowed for forward compatibility.
HTTP status reference
| HTTP | Typical case |
|---|---|
| 400 | Validation (bad JSON, missing field, duplicate name on create tag / project code, …) |
| 401 | Missing API key, invalid key, or revoked key |
| 403 | Forbidden (action or resource not allowed for this key / team) |
| 404 | Resource not found (e.g. activity report not visible for this team) |
| 429 | Rate limited (details.retryAfterSeconds; see Rate limits) |
| 500 | Unexpected server error |
message and details.
Validation details.reason (create tag / project code)
When code is 400 from those endpoints, details.reason may be:
invalid_json— body is not valid JSONrequired_field— e.g. missingname(details.fieldmay bename)duplicate_name— name already exists for the team (details.fieldmay bename)
openapi.yaml).