Poll a background store fetch started by a read that answered refreshing:true (free).
Poll every few seconds until status is done / partial / failed, then repeat the original call.
Request
curl "https://api.appgoat.ai/v1/jobs/fetch_123" \
-H "x-api-key: $APPGOAT_API_KEY"const res = await fetch("https://api.appgoat.ai/v1/jobs/fetch_123", {
headers: {
"x-api-key": process.env.APPGOAT_API_KEY,
},
});
const { data, meta } = await res.json();import os, requests
res = requests.get(
"https://api.appgoat.ai/v1/jobs/fetch_123",
headers={"x-api-key": os.environ["APPGOAT_API_KEY"]}
)
body = res.json()Path parameters
idstringrequiredmeta.freshness.job_id, e.g. fetch_123.Response
200 with data: Job. See the envelope for meta.
idstringkind"fetch"status"queued" | "running" | "done" | "partial" | "failed"storeStoreapp_idstringcountriesstring[]progressobjectcountry → ok | unavailable | cached | error: …
doneintegertotalintegererrorstring | nullcreated_atstringfinished_atstring | nullExample
{
"data": {
"id": "fetch_123",
"kind": "fetch",
"status": "queued",
"store": "apple",
"app_id": "324684580",
"countries": [
"string"
],
"progress": {},
"done": 1,
"total": 1,
"error": "string",
"created_at": "2026-10-22T10:00:00Z",
"finished_at": "2026-10-22T10:00:00Z"
},
"meta": {
"credits_used": 0,
"credits_remaining": 9981,
"request_id": "req_123"
}
}Status codes
200
The job.
Missing or invalid API key.
404
not_foundNot found.
429
rate_limitedToo many requests per second for your plan.