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. 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 | On /oauth/token: the clientId is unknown or the clientSecret is incorrect. Elsewhere: the JWT is missing, malformed, invalid, or expired — when it has expired, the detail field will say so. |
Check your credentials, or fetch a new JWT via POST /oauth/token and retry once. |
ANL_00403 |
403 | Your credentials or JWT were accepted, but access is not permitted. See the three causes below. | Depends on the cause — see below. |
ANL_00404 |
404 | The requested resource or route could not be found. | Verify IDs and path. |
ANL_00500 |
500 | Unexpected server-side failure. Your request was not processed and your credentials are not implicated. | 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.
Every error uses the same application/problem+json envelope, so a single error-handling code path works for all of them.
Understanding 403 responses
A 403 means your credentials were accepted but the request is not permitted. All three cases share type: ANL_00403 and are distinguished by title.
title |
Meaning | What to do |
|---|---|---|
Client Disabled |
Your API client has been deactivated. | Retrying will not help. Contact your Later account team. |
No Accessible Instances |
No instances are currently associated with your client. | Retrying will not help. Contact your Later account team to have the associations restored. |
Forbidden |
One or more requested instanceIds are not bound to your client credentials. |
Verify the values you are requesting are included in your contract. |
Browser and CORS errors
If you see CORS policy errors or Failed to fetch when calling the API from a browser or frontend framework:
- The Reporting API does not support browser clients. Cross-origin requests from web pages are intentionally blocked and CORS is not enabled.
clientIdandclientSecretmust not be used in client-side code. Route all API traffic through a backend service you operate.
Server-side clients with valid credentials (see Getting started) are unaffected. For the full policy, see Authentication → Server-side integrations only.
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.