Reading data
Every panel call needs the pt:read scope and a live package on that panel. If the package of a panel has ended, its calls return 402 package_inactive, and GET /v1/panels shows package_active: false.
curl https://api.messgeo.com/v1/panels -H "Authorization: Bearer mgk_xxxxxxxxxx_your_secret"What each call returns
| Call | Result |
|---|---|
/panels | Your panels |
/panels/{panel_id} | Brand, market, engines, package |
/panels/{panel_id}/prompts | Prompts. Filters: active, topic |
/panels/{panel_id}/stats | Visibility per measurement, the same series as your panel. Filters: runs or from and to, at most 90 days |
/panels/{panel_id}/prompts/{prompt_id}/results | Per engine result of one prompt |
/panels/{panel_id}/answers | AI answers, one per measurement, prompt and engine |
/panels/{panel_id}/sources | Cited sources |
/panels/{panel_id}/competitors | Competitors and share |
/panels/{panel_id}/opportunities | Source opportunities of active prompts and your marks |
/panels/{panel_id}/alerts, /events, /actions | Alerts, chart events, actions |
/panels/{panel_id}/market, /brand, /insights | Market map, brand image, recommendations |
/panels/{panel_id}/prompts/metrics, /engines, /sources/gaps | Prompt metrics, engine details, source gaps |
/panels/{panel_id}/gsc, /ga4, /integrations, /shares | Search Console, AI traffic, connections, share links |
/panels/{panel_id}/export?tab=overview | The same CSV as the panel, once per minute per key |
Pages
Lists with many rows use limit and cursor. Send the next_cursor of the answer as cursor until it is null.