Error codes
Every error is { "error": { code, message, hint, docs } } with the matching HTTP status. docs links to the code's entry on this page. Failed requests never cost credits.
- Why
- A query, path or body parameter has the wrong type, is out of range (for example
limitabove the maximum) or is required and missing.error.paramnames it. - Fix
- Fix the parameter named in
error.paramand send the request again. The API reference lists every parameter with its type and range. - Retry
- Yes, after fixing the request
- Why
- The
x-api-keyheader is missing, the key is mistyped, or it was revoked. - Fix
- Send your key in the
x-api-keyheader. Create or copy a key in the dashboard at dash.appgoat.ai under API keys. - Retry
- Yes, after fixing the request
- Why
- The call costs more credits than you have left: your monthly plan credits and any credit packs are used up. Nothing was done and nothing was charged.
- Fix
- Upgrade your plan in the dashboard under Settings > Billing, or, on Indie and Studio, buy a credit pack there (packs never expire). Plan credits also reset at the start of your next billing cycle.
- Retry
- No
- Why
- The request needs a feature or allowance of a higher plan: more tracked keywords or watched apps than your plan holds, several countries in one call,
country=all, or a Studio-only endpoint such as developer lead lists. - Fix
- Upgrade in the dashboard under Settings > Billing, or stay within your plan (untrack keywords, ask for one country).
error.hintnames the limit you hit. - Retry
- No
- Why
- No such endpoint, or the resource (for example a tracked keyword id or a chart for that store, country and category) does not exist.
- Fix
- Check the path against the API reference or https://api.appgoat.ai/v1/openapi.json, and the id you passed.
- Retry
- No
- Why
- Nothing matches
{app}: the id, bundle id, package or URL is unknown to the store, the app was removed, or a name search found no match. - Fix
- Pass the store URL or numeric id, URL-encode it, and add
store=appleorstore=playwhen an identifier could belong to either store. - Retry
- Yes, after fixing the request
- Why
- Nothing matches
{dev}. - Fix
- Pass
apple:<artist id>,play:<developer id>, a numeric id or the website domain, and addstore=apple|play. - Retry
- Yes, after fixing the request
- Why
- The job id is unknown or has expired.
- Fix
- Use
meta.freshness.job_idfrom the response that started the refresh, then repeat the original call. - Retry
- No
- Why
- The endpoint exists but not with this HTTP method (for example
POSTon a read-only endpoint). - Fix
- Use the method listed in the API reference.
- Retry
- Yes, after fixing the request
- Why
- The request conflicts with the current state of the resource, for example an action that was already applied.
- Fix
- Read the resource again and decide whether the request is still needed.
- Retry
- Yes, after fixing the request
- Why
- The data you asked for is still being prepared.
- Fix
- Wait, poll the job in
meta.freshness.job_idif there is one, and call again. - Retry
- Yes, after a wait
- Why
- More requests per second than your plan allows. Rate limits are per organization.
- Fix
- Wait for the number of seconds in the
Retry-Afterheader, then retry. Spread bursts out or upgrade for a higher limit. - Retry
- Yes, after a wait
- Why
- Something failed on our side. Failed requests are never charged.
- Fix
- Retry with backoff. If it persists, email support@appgoat.ai with the endpoint and the time of the request.
- Retry
- Yes