Error Reference
All error responses returned by the AEO API, with causes and remediation steps.
Error Reference
Error response shape
All errors follow this structure:
{ "statusCode": 401, "message": "Invalid API key" }The statusCode matches the HTTP status code. The message describes the specific error.
Error codes
| Status | Meaning | When it happens |
|---|---|---|
400 | Bad request | Missing required parameters. Most common on explain endpoints that require brand_id, and on sources/detail which requires the scope parameter. Check the message field for the specific missing param. |
401 | Unauthorized | The x-api-key header is missing, the key value is invalid, or the key has been revoked. |
402 | Payment required | The API key is valid, but the organization is not on the Pro plan. Upgrade at app.reddgrow.ai/settings/billing |
404 | Not found | The requested resource (prompt, run, brand, or topic) does not exist, or exists but belongs to a different organization. The API does not distinguish between "not found" and "not yours" to avoid enumeration. |
429 | Too many requests | Rate limit exceeded — 60 req/min or 1,000 req/hour. See Rate Limits for retry guidance. |
500 | Server error | An unexpected error on the ReddGrow infrastructure. If this persists, contact support. |
Common causes and fixes
400 on visibility/explain
brand_id is a required query parameter on this endpoint. Include it explicitly:
# Wrong — brand_id missing
curl "https://api.reddgrow.ai/v1/aeo/visibility/explain" -H "x-api-key: rg_..."
# Correct
curl "https://api.reddgrow.ai/v1/aeo/visibility/explain?brand_id=42" -H "x-api-key: rg_..."400 on sources/detail
The scope parameter is required. Valid values are domain and url.
curl "https://api.reddgrow.ai/v1/aeo/sources/detail?scope=domain&target=example.com" \
-H "x-api-key: rg_..."401 on every request
Check that:
- The
x-api-keyheader name is spelled correctly (lowercase, hyphenated) - The key value starts with
rg_ - The key has not been revoked in Settings → API Keys
404 on a prompt or run you just created
The resource exists only after it's been persisted. If you're calling GET /v1/aeo/prompts/:id immediately after POST /v1/aeo/prompts, add a small delay or check the id returned in the POST response matches what you're querying.
If you're certain the resource exists, verify the API key belongs to the same organization that created it. Resources are org-scoped — a key from Org A cannot access resources created by Org B.