List significant changes on your watched apps and keywords, newest first (free; poll this to wake an agent).
Each event has a deterministic one-line title, an AI summary (or null), a significance (0–1) and a typed
payload. Only changes that reach the watch's settings.significance become events. To poll, pass
since= the created_at of the newest event you already handled (or remember its id and stop paging there).
Request
curl "https://api.appgoat.ai/v1/events" \
-H "x-api-key: $APPGOAT_API_KEY"const res = await fetch("https://api.appgoat.ai/v1/events", {
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/events",
headers={"x-api-key": os.environ["APPGOAT_API_KEY"]}
)
body = res.json()Query parameters
typestringComma list of event types.
appstringOnly events of this app (any
{app} input).store"apple" | "play"Disambiguates
{app} (a bundle id vs a Play package, or a name).watchintegerOnly events of this watch id.
sincestringOnly items at or after this ISO date / datetime.
min_significancenumberlimitintegerDefault 50
cursorstringmeta.next_cursor from the previous page.Response
200 with data: Event[]. See the envelope for meta.
idstringtypeEventTypeApp / competitor_set watches:
new_version (version + release notes), metadata_change (title, subtitle,
description, screenshots, icon, category…; payload.changes), price_change (price or in-app purchases),
featured (Editors' Choice, featuring, badges), in_app_event, installs_milestone (Play install bucket),
rating_drop (7-day drop ≥ settings.rating_drop), ratings_spike / review_spike (day count ≥
settings.spike_factor × the 14-day average), negative_review_spike (negative reviews per topic),
chart_enter / chart_leave (crossing the top settings.chart_top_n). Keyword watches: rank_change (the
watch's app moved ≥ settings.rank_move, or entered / left the ranking), keyword_entrant (new apps in the
top settings.keyword_top_n).
created_atstringwatch_idinteger | nullnull once the watch is deleted.
appanycountrystring | nulltitlestringDeterministic one-liner, e.g. "Spotify released version 9.0.2 (was 9.0.1)".
summarystring | nullAI one-line summary (null when AI is off or for low-significance events).
significancenumber | nullpayloadobjectType-specific: version / release_notes, changes[{field, old, new}], rating / previous_rating / drop, keyword / rank / previous_rank, chart / category / rank, topic / sample…
Example
{
"data": [
{
"id": "4812",
"type": "new_version",
"created_at": "2026-10-22T08:15:02.000Z",
"watch_id": 12,
"app": {
"store": "apple",
"app_id": "324684580",
"title": "Spotify",
"icon_url": null
},
"country": "us",
"title": "Spotify released version 9.0.2 (was 9.0.1)",
"summary": "Spotify 9.0.2 adds offline lyrics and fixes CarPlay crashes.",
"significance": 0.81,
"payload": {
"version": "9.0.2",
"previous_version": "9.0.1",
"release_notes": "Offline lyrics. CarPlay fixes."
}
}
],
"meta": {
"credits_used": 0,
"credits_remaining": 9981,
"request_id": "req_123"
}
}Status codes
200
Events.
A parameter is missing or invalid (
error.param names it).Missing or invalid API key.
429
rate_limitedToo many requests per second for your plan.