Error Code Reference
Every ChatAds error includes a code, message, and optional details. Here’s how to resolve each one:Authentication Errors
UNAUTHORIZED (401)
UNAUTHORIZED (401)
FORBIDDEN (403)
FORBIDDEN (403)
Cause: API key is invalid or disabled.Solution:
- Verify your key starts with
cak_ - Check if the key was revoked at app.getchatads.com/settings/api-keys
- Generate a new key if needed
- Typo in the API key
- Key was regenerated (old key no longer valid)
- Team account suspended
API_KEY_DISABLED (403)
API_KEY_DISABLED (403)
Cause: The API key has been explicitly disabled.Solution:
Re-enable the key in the dashboard or generate a new one at app.getchatads.com/settings/api-keys.
Input Validation Errors
INVALID_INPUT (400)
INVALID_INPUT (400)
Cause: Request body is missing or malformed.Solution:Checklist:
-
Content-Type: application/jsonheader is set - Request body is valid JSON
-
messagefield is present and non-empty
MESSAGE_TOO_LONG (400)
MESSAGE_TOO_LONG (400)
Cause: Message exceeds 5000 characters.Response details:Solution:
Truncate or summarize the message. For long conversations, send only the relevant portion:
Content Restriction Errors
CONTENT_BLOCKED (422)
CONTENT_BLOCKED (422)
Cause: Message contains a keyword blocked by your team’s rules.Response details:Solution:
- Review blocked keywords at app.getchatads.com/settings/rules
- Remove the rule if blocking was unintended
- This request does NOT count against your quota
GEO_BLOCKED (422)
GEO_BLOCKED (422)
Cause: Request originated from a disallowed country.Response details:Solution:
- Review geo-restrictions in your team settings
- Pass the correct
countryparameter to override IP detection - This request does NOT count against your quota
Rate Limit Errors
DAILY_QUOTA_EXCEEDED (429)
DAILY_QUOTA_EXCEEDED (429)
Cause: Daily request limit reached.Response details:Solution:
- Wait until midnight UTC for reset
- Upgrade your plan for higher limits
- Check
Retry-Afterheader for seconds until reset
MONTHLY_QUOTA_EXCEEDED (429)
MONTHLY_QUOTA_EXCEEDED (429)
Cause: Monthly request limit reached (free tier only).Response details:Solution:
- Wait until the 1st of next month
- Upgrade to a paid plan (unlimited monthly)
RATE_LIMIT_EXCEEDED (429)
RATE_LIMIT_EXCEEDED (429)
Cause: Too many requests per minute.Solution:
Implement exponential backoff:
Server Errors
INTERNAL_ERROR (500)
INTERNAL_ERROR (500)
Cause: Unexpected server error.Solution:
- Retry the request after a short delay
- If persistent, check status.getchatads.com for outages
- Contact support@getchatads.com with your
request_id
SERVICE_UNAVAILABLE (503)
SERVICE_UNAVAILABLE (503)
RATE_LIMIT_UNAVAILABLE (503)
RATE_LIMIT_UNAVAILABLE (503)
Common Integration Issues
No Matches Found
matched: false in response
Symptoms: API returns successfully but
data.matched is false.Possible causes:-
No product detected - The message doesn’t contain a clear product reference
-
Intent score too low - Query filtered by
min_intent - No affiliate available - Product identified but no affiliate link exists
- Lower
min_intent(try"any"for testing) - Use more specific product queries
- Check the
reasonfield for specifics
Slow Response Times
API latency exceeds expectations
Expected latencies:
If consistently slow:
| Configuration | Typical Latency |
|---|---|
fast + speed | 50-100ms |
balanced + coverage | 150-300ms |
thorough + coverage | 300-500ms |
-
Check your configuration
-
Use skip_message_analysis for known products
- Check network latency - API is hosted on Modal (US regions)
- Cache responses - Same queries return same results
SDK Issues
SDK not working as expected
TypeScript SDK:Python SDK:Common issues:
- Not handling
data: nullwhensuccess: false - Not checking
matchedbefore accessingad - Using wrong import path
Debug Checklist
When troubleshooting, work through this checklist:1
Verify API key
2
Check response structure
Always check
success field first:3
Log the request_id
Every response includes a unique ID for debugging:Include this when contacting support.
4
Check usage
Verify you haven’t hit rate limits:
5
Review configuration
Ensure parameters match your expectations: