Errors & troubleshooting
Every error response from the Reporting API is served as application/problem+json (RFC 9457) with the following shape:
{
"type": "ANL_00400",
"title": "Validation Error",
"detail": "Maximum of 50 campaignIds allowed."
}
| Field | Use |
|---|---|
type |
Machine-readable code — branch on this value in integration code. |
title |
Short static label for the type. Stable per failure mode, but not intended for programmatic branching. |
detail |
Human-readable explanation for this request. Safe to log for operators; wording may evolve, so do not parse it. |
There is no status field in the JSON body; rely on the HTTP status line.
Error type values
All error responses share a single ANL_00xxx namespace, whether they originate at the authentication gateway or at the Reporting API itself. Branch on type rather than HTTP status alone.
type |
HTTP | When it happens | What to do |
|---|---|---|---|
ANL_00400 |
400 | Query parameter validation failed — bad shape, date range > 2 years, more than 50 campaignIds, unsupported metrics for the requested platform / contentType, etc. |
Fix parameters; read detail for the offending fields. |
ANL_00422 |
400 | The sortProperty is not supported for this endpoint, or not available for the selected filters. |
Choose a value from Querying the API. |
ANL_00401 |
401 | JWT is missing, malformed, invalid, or expired. When the token has expired, the detail field will say so. |
Fetch a new JWT via POST /oauth/token and retry once. |
ANL_00403 |
403 | JWT is valid but the requested scope is not accessible — typically one or more instanceIds are not bound to your client credentials. |
Verify the instanceIds you are requesting are included in your contract. |
ANL_00404 |
404 | The requested resource or route could not be found. | Verify IDs and path. |
ANL_00500 |
500 | Unexpected server-side failure. | Retry with exponential backoff; if persistent, contact support with timestamp and any request / trace ID. |
Note:
ANL_00422is returned with HTTP 400 (not 422). The422suffix in the code reflects its domain meaning (unprocessablesortProperty) but the transport status remains 400 to keep a single "validation failed" class for clients.
401 and 403 responses are produced at the authentication gateway before requests reach the Reporting API itself, but use the same application/problem+json envelope so a single error-handling code path works for every error.
Rate limiting
Requests are rate-limited per IP at 120 requests per minute.
Every response includes the following headers:
| Header | Description | Example |
|---|---|---|
X-Ratelimit-Limit |
Maximum requests allowed in the current window | 120 |
X-Ratelimit-Window |
Window duration in seconds | 60 |
When the limit is exceeded, the API responds with 429 status (Too Many Requests).
Clients should implement retry logic with exponential backoff to avoid hitting the limit.
Support
Need help with the Reporting API? Contact support through these channels:
| Need | Channel |
|---|---|
| Credentials & access | Your Later account team or urvash.chheda@later.com |
| API bugs / unexpected 5xx | Email urvash.chheda@later.com with timestamps (UTC), request path, and redacted params |
| Product how-tos | Later Influence Help Center |
When reporting an issue, include:
- HTTP status code and error
type/detailfrom the response - Approximate UTC timestamp of the request
- Request path and redacted query parameters
- Instance IDs you were querying (if applicable)
- Any request / trace IDs provided by the gateway
Enterprise customers: Request dedicated onboarding sessions (architecture review, pagination patterns, warehouse integration) through your Account Manager or urvash.chheda@later.com.