Skip to content

Error Reference

All error responses return JSON with an error field describing the problem:

{
"error": "Human-readable description of what went wrong"
}

The request was missing required input data or contained invalid values.

Common causes:

  • The inputs field is missing from the request body
  • A required input field is not present

What to do: Check that your request body includes all required fields. Confirm the expected fields with your administrator.


The API key is missing, invalid, expired, or inactive.

Common causes:

  • No Authorization or X-API-Key header included
  • Key format is wrong (should start with ila_)
  • Key has been disabled or expired by your administrator

What to do: Verify your API key is correct and active. Contact your administrator if the key needs to be reissued.


Your API key is valid but is not authorized to access the requested product.

Common causes:

  • Wrong product slug for the API key you’re using
  • Key was not set up with access to this product

What to do: Confirm the correct product slug with your administrator.


The product slug does not exist or the product is inactive.

Common causes:

  • Typo in the product slug
  • Product has been deactivated

What to do: Verify the exact product slug with your administrator.


Your API key has exceeded its rate limit (per-minute or per-day).

Response headers:

Retry-After: 30
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 0

What to do: Wait for the number of seconds specified in the Retry-After header before retrying. See Rate Limits for details.


An unexpected error occurred on the server.

What to do: If this persists, contact your administrator with the timestamp of the failed request.


The upstream service returned an authentication error. This is a configuration issue, not a problem with your request.

What to do: Contact your administrator — the API configuration needs to be updated.


The upstream service is temporarily unavailable.

What to do: Retry the request with exponential backoff. If the issue persists, contact your administrator.


For transient errors (429, 503), use exponential backoff:

async function callWithRetry(inputs, maxRetries = 3) {
for (let attempt = 0; attempt < maxRetries; attempt++) {
const response = await fetch(`${BASE_URL}/api/${PRODUCT_SLUG}`, {
method: 'POST',
headers: { 'Authorization': `Bearer ${API_KEY}`, 'Content-Type': 'application/json' },
body: JSON.stringify({ inputs }),
})
if (response.status === 429) {
const retryAfter = parseInt(response.headers.get('Retry-After') || '60')
await new Promise(resolve => setTimeout(resolve, retryAfter * 1000))
continue
}
if (response.status === 503 && attempt < maxRetries - 1) {
await new Promise(resolve => setTimeout(resolve, Math.pow(2, attempt) * 1000))
continue
}
return response
}
}
CodeNameRetryableAction
400Bad RequestNoFix your request body
401UnauthorizedNoCheck your API key
403ForbiddenNoContact administrator
404Not FoundNoVerify product slug
429Too Many RequestsYesWait for Retry-After seconds
500Internal Server ErrorSometimesRetry once; contact support if persistent
502Bad GatewayNoContact administrator
503Service UnavailableYesRetry with exponential backoff