Completed records ordered by changed_at then id, not by record date, so a late completion appears at its completion update. Uses a dedicated index and a safe watermark at least five minutes behind database time; a long-running database transaction that has already written holds the watermark at five minutes before its start until it ends, and polls in that time return nothing newer but are still billed. Scan work is bounded, so an empty page can have next_cursor. Follow next_cursor until it is null, then save page.sync_cursor and poll with it; every 5 to 15 minutes is enough, because nothing newer than the watermark is returned. Bound the first sync with updated_since rather than business_date_from, which filters inside each scanned batch and does not shorten the scan. With a cursor, updated_since is ignored; keep limit, business_date_from and include unchanged. Repeated records are updates: upsert by id. Analysis fields are read-time values: mention_rank backfills do not advance changed_at, so a rank change alone is not re-emitted. Deletions and records that leave completed are not emitted either. Reconcile by starting a separate pass without a cursor from an updated_since rewound at least 24 hours (a rewound updated_since sent together with a saved cursor is ignored and reconciles nothing), or by re-reading records by record date. Optional answer_text and citations expansions; citations cap at 30 with a flag. Every call, including an empty poll, is billed at the price in x-geoly-cost.
GET
/
api
/
v1
/
records
Incremental completed records and subsequent changes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"GEOly Docs","colors":{"primary":"#0A0A0A","light":"#FAFAFA","dark":"#0A0A0A"},"logo":{"light":"https://mintcdn.com/ge-oly/Cn9GPNuGnA715ktI/logo/light.svg?fit=max\u0026auto=format\u0026n=Cn9GPNuGnA715ktI\u0026q=85\u0026s=d3cea28520cc9660b9bd70ab642920fe","dark":"https://mintcdn.com/ge-oly/Cn9GPNuGnA715ktI/logo/dark.svg?fit=max\u0026auto=format\u0026n=Cn9GPNuGnA715ktI\u0026q=85\u0026s=27331f9b0a5bcd18013b345d305edbcd","href":"https://www.geoly.ai"},"favicon":"https://mintcdn.com/ge-oly/Cn9GPNuGnA715ktI/favicon.png?fit=max\u0026auto=format\u0026n=Cn9GPNuGnA715ktI\u0026q=85\u0026s=357b47b037719a7aee6ea367a758d2e2","api":{"playground":{"display":"interactive"},"examples":{"defaults":"required","languages":["curl","python","javascript"]}},"navbar":{"links":[{"href":"https://www.geoly.ai/blog","label":"Blog"},{"href":"https://www.geoly.ai/pricing","label":"Pricing"}],"primary":{"type":"button","label":"Sign in","href":"https://app.geoly.ai"}},"footer":{"socials":{"website":"https://www.geoly.ai"}},"icons":{"library":"lucide"},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":true},"navigation":{"languages":[{"language":"en","href":""},{"language":"zh","href":"zh"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"ge-oly","hasAudioNarration":false,"actualSubdomain":"ge-oly","customDomains":["docs.geoly.ai"],"gitSource":{"type":"github","owner":"geoly-ai","repo":"geoly-web-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":"","_id":"6ae8442a0b211b76a285b925"},"chroma":{"latestBuiltDeploymentHistoryId":"6ae8637e3630049289fe671b","collectionId":"7b03849a-937f-4c9a-8d6f-3a2946910f66","liveDeploymentHistoryId":"6ae8637e3630049289fe671b","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae868924729f9837cf157d2","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"zh","tag":"文档","count":20},{"language":"en","tag":"Documentation","count":15},{"language":"zh","tag":"洞察","count":6},{"language":"en","tag":"Insights","count":3},{"language":"en","tag":"MCP Server","count":3},{"language":"en","tag":"Get started","count":3},{"language":"en","tag":"Shopify app","count":3},{"language":"zh","tag":"监测","count":3},{"language":"zh","tag":"MCP Server","count":3},{"language":"zh","tag":"入门","count":3},{"language":"zh","tag":"Shopify 应用","count":3},{"language":"en","tag":"Monitoring","count":2},{"language":"en","tag":"Integrations","count":2},{"language":"zh","tag":"集成","count":2},{"language":"en","tag":"CLI","count":1},{"language":"en","tag":"API Reference","count":1},{"language":"en","tag":"Data API","count":1},{"language":"zh","tag":"CLI","count":1},{"language":"zh","tag":"API Reference","count":1},{"language":"zh","tag":"Data API","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/records/sync-records","slug":"/api-reference/records/sync-records","pageMetadata":{"title":"Sync records","openapi":"api-reference/openapi.json GET /api/v1/records","description":"Completed records ordered by changed_at then id, not by record date, so a late completion appears at its completion update. Uses a dedicated index and a safe watermark at least five minutes behind database time; a long-running database transaction that has already written holds the watermark at five minutes before its start until it ends, and polls in that time return nothing newer but are still billed. Scan work is bounded, so an empty page can have next_cursor. Follow next_cursor until it is null, then save page.sync_cursor and poll with it; every 5 to 15 minutes is enough, because nothing newer than the watermark is returned. Bound the first sync with updated_since rather than business_date_from, which filters inside each scanned batch and does not shorten the scan. With a cursor, updated_since is ignored; keep limit, business_date_from and include unchanged. Repeated records are updates: upsert by id. Analysis fields are read-time values: mention_rank backfills do not advance changed_at, so a rank change alone is not re-emitted. Deletions and records that leave completed are not emitted either. Reconcile by starting a separate pass without a cursor from an updated_since rewound at least 24 hours (a rewound updated_since sent together with a saved cursor is ignored and reconciles nothing), or by re-reading records by record date. Optional answer_text and citations expansions; citations cap at 30 with a flag. Every call, including an empty poll, is billed at the price in x-geoly-cost.","href":"/api-reference/records/sync-records"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Completed records ordered by changed_at then id, not by record date, so a late completion appears at its completion update. Uses a dedicated index and a safe watermark at least five minutes behind database time; a long-running database transaction that has already written holds the watermark at five minutes before its start until it ends, and polls in that time return nothing newer but are still billed. Scan work is bounded, so an empty page can have next_cursor. Follow next_cursor until it is null, then save page.sync_cursor and poll with it; every 5 to 15 minutes is enough, because nothing newer than the watermark is returned. Bound the first sync with updated_since rather than business_date_from, which filters inside each scanned batch and does not shorten the scan. With a cursor, updated_since is ignored; keep limit, business_date_from and include unchanged. Repeated records are updates: upsert by id. Analysis fields are read-time values: mention_rank backfills do not advance changed_at, so a rank change alone is not re-emitted. Deletions and records that leave completed are not emitted either. Reconcile by starting a separate pass without a cursor from an updated_since rewound at least 24 hours (a rewound updated_since sent together with a saved cursor is ignored and reconciles nothing), or by re-reading records by record date. Optional answer_text and citations expansions; citations cap at 30 with a flag. Every call, including an empty poll, is billed at the price in x-geoly-cost.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Sync records","openapi":"api-reference/openapi.json GET /api/v1/records","description":"Completed records ordered by changed_at then id, not by record date, so a late completion appears at its completion update. Uses a dedicated index and a safe watermark at least five minutes behind database time; a long-running database transaction that has already written holds the watermark at five minutes before its start until it ends, and polls in that time return nothing newer but are still billed. Scan work is bounded, so an empty page can have next_cursor. Follow next_cursor until it is null, then save page.sync_cursor and poll with it; every 5 to 15 minutes is enough, because nothing newer than the watermark is returned. Bound the first sync with updated_since rather than business_date_from, which filters inside each scanned batch and does not shorten the scan. With a cursor, updated_since is ignored; keep limit, business_date_from and include unchanged. Repeated records are updates: upsert by id. Analysis fields are read-time values: mention_rank backfills do not advance changed_at, so a rank change alone is not re-emitted. Deletions and records that leave completed are not emitted either. Reconcile by starting a separate pass without a cursor from an updated_since rewound at least 24 hours (a rewound updated_since sent together with a saved cursor is ignored and reconciles nothing), or by re-reading records by record date. Optional answer_text and citations expansions; citations cap at 30 with a flag. Every call, including an empty poll, is billed at the price in x-geoly-cost.","href":"/api-reference/records/sync-records"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"listRecordsFeed","summary":"Incremental completed records and subsequent changes","description":"Completed records ordered by changed_at then id, not by record date, so a late completion appears at its completion update. Uses a dedicated index and a safe watermark at least five minutes behind database time; a long-running database transaction that has already written holds the watermark at five minutes before its start until it ends, and polls in that time return nothing newer but are still billed. Scan work is bounded, so an empty page can have next_cursor. Follow next_cursor until it is null, then save page.sync_cursor and poll with it; every 5 to 15 minutes is enough, because nothing newer than the watermark is returned. Bound the first sync with updated_since rather than business_date_from, which filters inside each scanned batch and does not shorten the scan. With a cursor, updated_since is ignored; keep limit, business_date_from and include unchanged. Repeated records are updates: upsert by id. Analysis fields are read-time values: mention_rank backfills do not advance changed_at, so a rank change alone is not re-emitted. Deletions and records that leave completed are not emitted either. Reconcile by starting a separate pass without a cursor from an updated_since rewound at least 24 hours (a rewound updated_since sent together with a saved cursor is ignored and reconciles nothing), or by re-reading records by record date. Optional answer_text and citations expansions; citations cap at 30 with a flag. Every call, including an empty poll, is billed at the price in x-geoly-cost.","tags":["Records"],"security":["301959f6-eba0-4950-b66b-5a25fc3fa106"],"x-geoly-stability":"stable","x-geoly-cost":{"tier":"light","base":1,"unit":"call","long_window_multiplier":null,"guard_rpm":20},"x-geoly-required-permission":"prompt:read","x-geoly-pagination":{"style":"feed","limit_param":"limit","max_limit":100,"cursor_param":"cursor","next_cursor_path":"$.page.next_cursor","checkpoint_path":"$.page.sync_cursor","scan_limit":1000},"x-speakeasy-pagination":{"type":"cursor","inputs":[{"name":"cursor","in":"parameters","type":"cursor"}],"outputs":{"nextCursor":"$.page.next_cursor"}},"parameters":["f91660ec-995a-478a-b376-718e84764589","c750af44-c66c-4853-9da6-9ece55336910","b5fba252-c18e-4bd0-aba7-20798ecec2ce","a4945567-751e-4c16-a884-4b7174c95f8e","f4a2b13f-15f6-4db8-ad3e-8a7f18c76388"],"responses":{"200":"2a623591-bc12-4c87-89ab-d70219f83a98","400":"def0afa3-8761-4bb5-a091-7d65c6f57c24","401":"1473d5a7-d420-4278-99aa-477aeeb053d4","402":"579e84a2-1e38-4ff7-9be7-3060e3112f7d","403":"868c5e10-a303-4446-bec9-e9596cd91077","422":"74a45657-219b-432a-a559-3b680da4a2c0","429":"f9755513-0405-48de-868c-eedab02fab95","500":"6c6a5d46-30fa-46c7-9192-7f493bb64682","503":"a3fc03f7-7c41-4c21-bd2b-5ec619fb1efc"},"method":"get","type":"path","servers":["ff9899c6-8f8e-4cb4-84f4-02cccd12d5a4"],"path":"/api/v1/records","baseUrlOptions":["https://app.geoly.ai"],"title":"Incremental completed records and subsequent changes","codeSamples":[],"requestExampleLanguages":["bash","python","javascript"],"requiredOnlyExamples":true,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"f91660ec-995a-478a-b376-718e84764589":{"name":"limit","in":"query","required":false,"schema":{"default":25,"type":"integer","minimum":1,"maximum":100,"isRequired":false,"uniqueKey":"","typeLabel":"integer"}},"c750af44-c66c-4853-9da6-9ece55336910":{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":1024,"isRequired":false,"uniqueKey":"","typeLabel":"string"}},"b5fba252-c18e-4bd0-aba7-20798ecec2ce":{"name":"updated_since","in":"query","required":false,"description":"Initial inclusive lower bound on changed_at for the first page (UTC with milliseconds). Ignored when cursor is present.","schema":{"default":"1970-01-01T00:00:00.000Z","type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$","isRequired":false,"description":"Initial inclusive lower bound on changed_at for the first page (UTC with milliseconds). Ignored when cursor is present.","uniqueKey":"","typeLabel":"string\u003cdate-time>"}},"a4945567-751e-4c16-a884-4b7174c95f8e":{"name":"business_date_from","in":"query","required":false,"description":"Optional earliest business day; filters inside each scanned batch and does not shorten the scan (UTC+8 business day, YYYY-MM-DD).","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","isRequired":false,"description":"Optional earliest business day; filters inside each scanned batch and does not shorten the scan (UTC+8 business day, YYYY-MM-DD).","uniqueKey":"","typeLabel":"string"}},"f4a2b13f-15f6-4db8-ad3e-8a7f18c76388":{"name":"include","in":"query","required":false,"schema":{"type":"string","enum":["answer_text","citations","answer_text,citations"],"isRequired":false,"uniqueKey":"","typeLabel":"enum\u003cstring>"}}},"responses":{"2a623591-bc12-4c87-89ab-d70219f83a98":{"description":"Incremental completed records and subsequent changes. `data` follows RecordFeed when meta.schema_conformant is true.","headers":{"Request-Id":{"description":"Unique id of this request (equals meta.request_id). Include it when reporting a problem.","schema":{"type":"string"}},"GEOly-API-Version":{"description":"API contract version. Always \"1\" on /api/v1.","schema":{"type":"string"}},"X-RateLimit-Limit":{"description":"Requests allowed per credential in the current one-minute window. Sent on every response after the API key has been authenticated; absent on errors raised while authenticating (401) and on 405.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Seconds until the current window resets (0–60).","schema":{"type":"integer"}},"X-DB-Budget-Limit":{"description":"Organization database-seconds budget per rolling 60 minutes. Sent on every response after authentication.","schema":{"type":"integer"}},"X-DB-Budget-Used":{"description":"Database seconds used by the organization in the last 60 minutes.","schema":{"type":"integer"}},"X-DB-Budget-Reset":{"description":"Seconds until the oldest usage bucket expires.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].id","typeLabel":"string"},"prompt_id":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].prompt_id","typeLabel":"string"},"prompt_text":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].prompt_text","typeLabel":"string"},"platform_code":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].platform_code.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].platform_code.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].platform_code","typeLabel":"string | null"},"platform_name":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].platform_name.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].platform_name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].platform_name","typeLabel":"string | null"},"record_date_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].record_date_at","typeLabel":"string\u003cdate-time>"},"business_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].business_date","typeLabel":"string"},"changed_at":{"description":"Update position of this record (prompt_record.updated_at, microseconds). The feed orders by changed_at then id; upsert by id.","type":"string","format":"date-time","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].changed_at","typeLabel":"string\u003cdate-time>"},"status":{"type":"string","const":"completed","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].status","typeLabel":"string"},"mentions":{"oneOf":[{"type":"integer","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].mentions.oneOf.0","typeLabel":"integer"},{"type":"null","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].mentions.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].mentions","typeLabel":"integer | null"},"mention_rank":{"oneOf":[{"type":"integer","description":"Read-time value. Rank backfills do not advance changed_at, so this can change while changed_at stays the same and the feed will not re-emit the record for it. To reconcile, poll again from an updated_since rewound by an overlap of at least 24 hours, or re-read records by record date.","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].mention_rank.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Read-time value. Rank backfills do not advance changed_at, so this can change while changed_at stays the same and the feed will not re-emit the record for it. To reconcile, poll again from an updated_since rewound by an overlap of at least 24 hours, or re-read records by record date.","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].mention_rank.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].mention_rank","typeLabel":"integer | null"},"sentiment":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].sentiment.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].sentiment.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].sentiment","typeLabel":"string | null"},"sentiment_polarity":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].sentiment_polarity.oneOf.0","typeLabel":"number"},{"type":"null","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].sentiment_polarity.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].sentiment_polarity","typeLabel":"number | null"},"answer_text":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].answer_text.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].answer_text.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].answer_text","typeLabel":"string | null"},"citations":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].citations.oneOf.0.items.[INDEX].id","typeLabel":"string"},"source_type":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].citations.oneOf.0.items.[INDEX].source_type","typeLabel":"string"},"url":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].citations.oneOf.0.items.[INDEX].url.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].citations.oneOf.0.items.[INDEX].url.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].citations.oneOf.0.items.[INDEX].url","typeLabel":"string | null"},"domain":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].citations.oneOf.0.items.[INDEX].domain.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].citations.oneOf.0.items.[INDEX].domain.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].citations.oneOf.0.items.[INDEX].domain","typeLabel":"string | null"},"title":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].citations.oneOf.0.items.[INDEX].title.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].citations.oneOf.0.items.[INDEX].title.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].citations.oneOf.0.items.[INDEX].title","typeLabel":"string | null"},"position":{"oneOf":[{"type":"integer","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].citations.oneOf.0.items.[INDEX].position.oneOf.0","typeLabel":"integer"},{"type":"null","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].citations.oneOf.0.items.[INDEX].position.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].citations.oneOf.0.items.[INDEX].position","typeLabel":"integer | null"}},"required":["id","source_type","url","domain","title","position"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"data.oneOf.0.items.[INDEX].citations.oneOf.0.items.[INDEX].additionalProperties","typeLabel":"any"},"uniqueKey":"data.oneOf.0.items.[INDEX].citations.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"Requested with include=citations: up to 30 per record, ordered by position (nulls last) then id — the same order and cut as GET /api/v1/records/{record_id}. citations_truncated flags a cut.","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].citations.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object","properties":{"id":{"type":"string"},"source_type":{"type":"string"},"url":{"oneOf":[{"type":"string"},{"type":"null"}]},"domain":{"oneOf":[{"type":"string"},{"type":"null"}]},"title":{"oneOf":[{"type":"string"},{"type":"null"}]},"position":{"oneOf":[{"type":"integer"},{"type":"null"}]}},"required":["id","source_type","url","domain","title","position"],"additionalProperties":{"oneOf":[{}]}},"description":"Requested with include=citations: up to 30 per record, ordered by position (nulls last) then id — the same order and cut as GET /api/v1/records/{record_id}. citations_truncated flags a cut.","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].citations.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].citations","typeLabel":"object[] | null"},"citations_truncated":{"oneOf":[{"type":"boolean","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].citations_truncated.oneOf.0","typeLabel":"boolean"},{"type":"null","isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].citations_truncated.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.oneOf.0.items.[INDEX].citations_truncated","typeLabel":"boolean | null"}},"required":["id","prompt_id","prompt_text","platform_code","platform_name","record_date_at","business_date","changed_at","status","mentions","mention_rank","sentiment","sentiment_polarity","answer_text","citations","citations_truncated"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"data.oneOf.0.items.[INDEX].additionalProperties","typeLabel":"any"},"uniqueKey":"data.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"Incremental completed records and subsequent changes. null only when meta.schema_conformant is false and the output could not be mapped.","isRequired":true,"uniqueKey":"data.oneOf.0","typeLabel":"object[]"},{"type":"null","description":"Incremental completed records and subsequent changes. null only when meta.schema_conformant is false and the output could not be mapped.","isRequired":true,"uniqueKey":"data.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data","typeLabel":"object[] | null"},"page":{"type":"object","description":"Bounded incremental scan. Empty pages can have a continuation. Persist sync_cursor after processing data; do not advance on schema_conformant=false.","properties":{"next_cursor":{"oneOf":[{"type":"string","description":"Continue this scan: pass as `cursor` with the same limit, business_date_from and include (updated_since is ignored with a cursor). null = caught up to the watermark.","isRequired":true,"uniqueKey":"page.next_cursor.oneOf.0","typeLabel":"string"},{"type":"null","description":"Continue this scan: pass as `cursor` with the same limit, business_date_from and include (updated_since is ignored with a cursor). null = caught up to the watermark.","isRequired":true,"uniqueKey":"page.next_cursor.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"page.next_cursor","typeLabel":"string | null"},"sync_cursor":{"oneOf":[{"type":"string","description":"Checkpoint to persist together with the processed rows. After next_cursor is null, poll later with it (every 5 to 15 minutes is enough). null only when schema_conformant is false: do not advance.","isRequired":true,"uniqueKey":"page.sync_cursor.oneOf.0","typeLabel":"string"},{"type":"null","description":"Checkpoint to persist together with the processed rows. After next_cursor is null, poll later with it (every 5 to 15 minutes is enough). null only when schema_conformant is false: do not advance.","isRequired":true,"uniqueKey":"page.sync_cursor.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"page.sync_cursor","typeLabel":"string | null"},"limit":{"type":"integer","isRequired":true,"uniqueKey":"page.limit","typeLabel":"integer"},"scanned":{"type":"integer","uniqueKey":"page.scanned","typeLabel":"integer"},"watermark_at":{"type":"string","format":"date-time","description":"Exclusive upper bound of this scan: at least five minutes behind database time and never past the oldest in-flight transaction.","uniqueKey":"page.watermark_at","typeLabel":"string\u003cdate-time>"}},"required":["next_cursor","sync_cursor","limit"],"isRequired":true,"uniqueKey":"page","typeLabel":"object"},"meta":{"type":"object","properties":{"request_id":{"type":"string","isRequired":true,"uniqueKey":"meta.request_id","typeLabel":"string"},"report":{"type":"string","description":"Report name for POST /api/v1/reports/{report}; resource labels include quota, brand, topics, prompt-catalog, prompt, prompt-records, prompt-records-latest, record, record-feed, created-prompt and prompt-run.","isRequired":true,"uniqueKey":"meta.report","typeLabel":"string"},"duration_ms":{"type":"integer","isRequired":true,"uniqueKey":"meta.duration_ms","typeLabel":"integer"},"schema_conformant":{"type":"boolean","description":"true = data matches the documented schema exactly (every declared key present). false = the report output drifted; data is still returned as mapped (or null) — treat it as best effort.","isRequired":true,"uniqueKey":"meta.schema_conformant","typeLabel":"boolean"},"quota":{"type":"object","description":"Billing outcome of this call. remaining / resets_at / unlimited are null on paths that never reserved credits (free reports, calls rejected before execution) — except QUOTA_EXCEEDED, which carries the live balance. Absent when the call was rejected before the report ran (schema errors, cursor errors, authentication).","properties":{"cost":{"type":"integer","description":"Credits actually charged for this call.","isRequired":true,"uniqueKey":"meta.quota.cost","typeLabel":"integer"},"unlimited":{"oneOf":[{"type":"boolean","isRequired":true,"uniqueKey":"meta.quota.unlimited.oneOf.0","typeLabel":"boolean"},{"type":"null","isRequired":true,"uniqueKey":"meta.quota.unlimited.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.unlimited","typeLabel":"boolean | null"},"remaining":{"oneOf":[{"type":"integer","description":"Credits left this period; null when unlimited or unknown on this path.","isRequired":true,"uniqueKey":"meta.quota.remaining.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Credits left this period; null when unlimited or unknown on this path.","isRequired":true,"uniqueKey":"meta.quota.remaining.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.remaining","typeLabel":"integer | null"},"resets_at":{"oneOf":[{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"meta.quota.resets_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","isRequired":true,"uniqueKey":"meta.quota.resets_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.resets_at","typeLabel":"string\u003cdate-time> | null"},"charge":{"type":"string","examples":["charged","min_fee","free","refunded","refund_pending","unbilled"],"description":"[Extensible enum] charged = normal settlement (per row, or one call for a call-priced read — including a not-found from the prompt or record detail); min_fee = minimum call fee (no data / not found from a per-row report / platform not purchased / missing locale); free = free report or endpoint; refunded / refund_pending = failed and refunded; unbilled = rejected before execution, or not metered.","isRequired":true,"uniqueKey":"meta.quota.charge","typeLabel":"string"},"min_fee_reason":{"oneOf":[{"type":"string","examples":["missing_locale","no_data",null],"description":"[Extensible enum]","isRequired":true,"uniqueKey":"meta.quota.min_fee_reason.oneOf.0","typeLabel":"string"},{"type":"null","examples":["missing_locale","no_data",null],"description":"[Extensible enum]","isRequired":true,"uniqueKey":"meta.quota.min_fee_reason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.min_fee_reason","typeLabel":"string | null"}},"required":["cost","unlimited","remaining","resets_at","charge","min_fee_reason"],"uniqueKey":"meta.quota","typeLabel":"object"}},"required":["request_id","report","duration_ms","schema_conformant"],"isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"required":["data","page","meta"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":[{"id":"\u003cstring>","prompt_id":"\u003cstring>","prompt_text":"\u003cstring>","platform_code":"\u003cstring>","platform_name":"\u003cstring>","record_date_at":"2023-11-07T05:31:56Z","business_date":"\u003cstring>","changed_at":"2023-11-07T05:31:56Z","status":"completed","mentions":123,"mention_rank":123,"sentiment":"\u003cstring>","sentiment_polarity":123,"answer_text":"\u003cstring>","citations":[{"id":"\u003cstring>","source_type":"\u003cstring>","url":"\u003cstring>","domain":"\u003cstring>","title":"\u003cstring>","position":123}],"citations_truncated":true}],"page":{"next_cursor":"\u003cstring>","sync_cursor":"\u003cstring>","limit":123,"scanned":123,"watermark_at":"2023-11-07T05:31:56Z"},"meta":{"request_id":"\u003cstring>","report":"\u003cstring>","duration_ms":123,"schema_conformant":true,"quota":{"cost":123,"unlimited":true,"remaining":123,"resets_at":"2023-11-07T05:31:56Z","charge":"charged","min_fee_reason":"missing_locale"}}}}},"exampleType":"generated"}},"exampleType":"generated"},"def0afa3-8761-4bb5-a091-7d65c6f57c24":{"description":"INVALID_ARGUMENT (unknown query parameter, non-integer or out-of-range number, invalid enum value — details.errors[] lists each {param, reason, allowed?}) / INVALID_CURSOR (the cursor is malformed, or limit, business_date_from or include differ from the request that issued it; resend them unchanged, or start a new pass from updated_since). Not charged.","headers":{"Request-Id":{"description":"Unique id of this request (equals meta.request_id). Include it when reporting a problem.","schema":{"type":"string"}},"GEOly-API-Version":{"description":"API contract version. Always \"1\" on /api/v1.","schema":{"type":"string"}},"X-RateLimit-Limit":{"description":"Requests allowed per credential in the current one-minute window. Sent on every response after the API key has been authenticated; absent on errors raised while authenticating (401) and on 405.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Seconds until the current window resets (0–60).","schema":{"type":"integer"}},"X-DB-Budget-Limit":{"description":"Organization database-seconds budget per rolling 60 minutes. Sent on every response after authentication.","schema":{"type":"integer"}},"X-DB-Budget-Used":{"description":"Database seconds used by the organization in the last 60 minutes.","schema":{"type":"integer"}},"X-DB-Budget-Reset":{"description":"Seconds until the oldest usage bucket expires.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"[Extensible enum] One of x-geoly-error-codes.","examples":["INVALID_BODY","INVALID_ARGUMENT","INVALID_CURSOR","IDEMPOTENCY_KEY_INVALID","FAILED_PRECONDITION","UNAUTHORIZED","SUBSCRIPTION_INACTIVE","QUOTA_EXCEEDED","ORG_NOT_ELIGIBLE","PLAN_LIMIT_REACHED","API_KEY_BRAND_REQUIRED","ORG_SELECTION_REQUIRED","ORGANIZATION_REQUIRED","PERMISSION_DENIED","REPORT_NOT_FOUND","NOT_FOUND","METHOD_NOT_ALLOWED","IDEMPOTENCY_KEY_REUSED","REQUEST_IN_PROGRESS","IDEMPOTENCY_OUTCOME_UNKNOWN","TOOL_SURFACE_RETIRED","PAYLOAD_TOO_LARGE","UNSUPPORTED_MEDIA_TYPE","QUERY_TOO_EXPENSIVE","RESPONSE_TOO_LARGE","RATE_LIMITED","GUARDED_RATE_LIMITED","BUSY","BUDGET_EXCEEDED","INTERNAL_ERROR","TOOL_TIMEOUT","OVERLOADED","CIRCUIT_OPEN","TOOL_FAILED","FEED_NOT_READY","IDEMPOTENCY_UNAVAILABLE"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"For humans; do not parse.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"object","description":"Stable keys: errors[] ({param, reason, allowed?, message}) on INVALID_ARGUMENT; reason; required (PERMISSION_DENIED); retry_after_seconds (429); max_bytes / actual_bytes (413 / 422); _quota (receipt); resource / id (404 NOT_FOUND of a single-resource endpoint). Other keys are informational and may change.","uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"type":"object","properties":{"request_id":{"type":"string","isRequired":true,"uniqueKey":"meta.request_id","typeLabel":"string"},"report":{"type":"string","uniqueKey":"meta.report","typeLabel":"string"},"duration_ms":{"type":"integer","uniqueKey":"meta.duration_ms","typeLabel":"integer"},"quota":{"type":"object","description":"Billing outcome of this call. remaining / resets_at / unlimited are null on paths that never reserved credits (free reports, calls rejected before execution) — except QUOTA_EXCEEDED, which carries the live balance. Absent when the call was rejected before the report ran (schema errors, cursor errors, authentication).","properties":{"cost":{"type":"integer","description":"Credits actually charged for this call.","isRequired":true,"uniqueKey":"meta.quota.cost","typeLabel":"integer"},"unlimited":{"oneOf":[{"type":"boolean","isRequired":true,"uniqueKey":"meta.quota.unlimited.oneOf.0","typeLabel":"boolean"},{"type":"null","isRequired":true,"uniqueKey":"meta.quota.unlimited.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.unlimited","typeLabel":"boolean | null"},"remaining":{"oneOf":[{"type":"integer","description":"Credits left this period; null when unlimited or unknown on this path.","isRequired":true,"uniqueKey":"meta.quota.remaining.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Credits left this period; null when unlimited or unknown on this path.","isRequired":true,"uniqueKey":"meta.quota.remaining.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.remaining","typeLabel":"integer | null"},"resets_at":{"oneOf":[{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"meta.quota.resets_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","isRequired":true,"uniqueKey":"meta.quota.resets_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.resets_at","typeLabel":"string\u003cdate-time> | null"},"charge":{"type":"string","examples":["charged","min_fee","free","refunded","refund_pending","unbilled"],"description":"[Extensible enum] charged = normal settlement (per row, or one call for a call-priced read — including a not-found from the prompt or record detail); min_fee = minimum call fee (no data / not found from a per-row report / platform not purchased / missing locale); free = free report or endpoint; refunded / refund_pending = failed and refunded; unbilled = rejected before execution, or not metered.","isRequired":true,"uniqueKey":"meta.quota.charge","typeLabel":"string"},"min_fee_reason":{"oneOf":[{"type":"string","examples":["missing_locale","no_data",null],"description":"[Extensible enum]","isRequired":true,"uniqueKey":"meta.quota.min_fee_reason.oneOf.0","typeLabel":"string"},{"type":"null","examples":["missing_locale","no_data",null],"description":"[Extensible enum]","isRequired":true,"uniqueKey":"meta.quota.min_fee_reason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.min_fee_reason","typeLabel":"string | null"}},"required":["cost","unlimited","remaining","resets_at","charge","min_fee_reason"],"uniqueKey":"meta.quota","typeLabel":"object"}},"required":["request_id"],"isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"required":["error","meta"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"INVALID_BODY","message":"\u003cstring>","details":{}},"meta":{"request_id":"\u003cstring>","report":"\u003cstring>","duration_ms":123,"quota":{"cost":123,"unlimited":true,"remaining":123,"resets_at":"2023-11-07T05:31:56Z","charge":"charged","min_fee_reason":"missing_locale"}}}}},"exampleType":"generated"}},"exampleType":"generated"},"1473d5a7-d420-4278-99aa-477aeeb053d4":{"description":"UNAUTHORIZED: missing or invalid API key.","headers":{"Request-Id":{"description":"Unique id of this request (equals meta.request_id). Include it when reporting a problem.","schema":{"type":"string"}},"GEOly-API-Version":{"description":"API contract version. Always \"1\" on /api/v1.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"[Extensible enum] One of x-geoly-error-codes.","examples":["INVALID_BODY","INVALID_ARGUMENT","INVALID_CURSOR","IDEMPOTENCY_KEY_INVALID","FAILED_PRECONDITION","UNAUTHORIZED","SUBSCRIPTION_INACTIVE","QUOTA_EXCEEDED","ORG_NOT_ELIGIBLE","PLAN_LIMIT_REACHED","API_KEY_BRAND_REQUIRED","ORG_SELECTION_REQUIRED","ORGANIZATION_REQUIRED","PERMISSION_DENIED","REPORT_NOT_FOUND","NOT_FOUND","METHOD_NOT_ALLOWED","IDEMPOTENCY_KEY_REUSED","REQUEST_IN_PROGRESS","IDEMPOTENCY_OUTCOME_UNKNOWN","TOOL_SURFACE_RETIRED","PAYLOAD_TOO_LARGE","UNSUPPORTED_MEDIA_TYPE","QUERY_TOO_EXPENSIVE","RESPONSE_TOO_LARGE","RATE_LIMITED","GUARDED_RATE_LIMITED","BUSY","BUDGET_EXCEEDED","INTERNAL_ERROR","TOOL_TIMEOUT","OVERLOADED","CIRCUIT_OPEN","TOOL_FAILED","FEED_NOT_READY","IDEMPOTENCY_UNAVAILABLE"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"For humans; do not parse.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"object","description":"Stable keys: errors[] ({param, reason, allowed?, message}) on INVALID_ARGUMENT; reason; required (PERMISSION_DENIED); retry_after_seconds (429); max_bytes / actual_bytes (413 / 422); _quota (receipt); resource / id (404 NOT_FOUND of a single-resource endpoint). Other keys are informational and may change.","uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"type":"object","properties":{"request_id":{"type":"string","isRequired":true,"uniqueKey":"meta.request_id","typeLabel":"string"},"report":{"type":"string","uniqueKey":"meta.report","typeLabel":"string"},"duration_ms":{"type":"integer","uniqueKey":"meta.duration_ms","typeLabel":"integer"},"quota":{"type":"object","description":"Billing outcome of this call. remaining / resets_at / unlimited are null on paths that never reserved credits (free reports, calls rejected before execution) — except QUOTA_EXCEEDED, which carries the live balance. Absent when the call was rejected before the report ran (schema errors, cursor errors, authentication).","properties":{"cost":{"type":"integer","description":"Credits actually charged for this call.","isRequired":true,"uniqueKey":"meta.quota.cost","typeLabel":"integer"},"unlimited":{"oneOf":[{"type":"boolean","isRequired":true,"uniqueKey":"meta.quota.unlimited.oneOf.0","typeLabel":"boolean"},{"type":"null","isRequired":true,"uniqueKey":"meta.quota.unlimited.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.unlimited","typeLabel":"boolean | null"},"remaining":{"oneOf":[{"type":"integer","description":"Credits left this period; null when unlimited or unknown on this path.","isRequired":true,"uniqueKey":"meta.quota.remaining.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Credits left this period; null when unlimited or unknown on this path.","isRequired":true,"uniqueKey":"meta.quota.remaining.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.remaining","typeLabel":"integer | null"},"resets_at":{"oneOf":[{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"meta.quota.resets_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","isRequired":true,"uniqueKey":"meta.quota.resets_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.resets_at","typeLabel":"string\u003cdate-time> | null"},"charge":{"type":"string","examples":["charged","min_fee","free","refunded","refund_pending","unbilled"],"description":"[Extensible enum] charged = normal settlement (per row, or one call for a call-priced read — including a not-found from the prompt or record detail); min_fee = minimum call fee (no data / not found from a per-row report / platform not purchased / missing locale); free = free report or endpoint; refunded / refund_pending = failed and refunded; unbilled = rejected before execution, or not metered.","isRequired":true,"uniqueKey":"meta.quota.charge","typeLabel":"string"},"min_fee_reason":{"oneOf":[{"type":"string","examples":["missing_locale","no_data",null],"description":"[Extensible enum]","isRequired":true,"uniqueKey":"meta.quota.min_fee_reason.oneOf.0","typeLabel":"string"},{"type":"null","examples":["missing_locale","no_data",null],"description":"[Extensible enum]","isRequired":true,"uniqueKey":"meta.quota.min_fee_reason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.min_fee_reason","typeLabel":"string | null"}},"required":["cost","unlimited","remaining","resets_at","charge","min_fee_reason"],"uniqueKey":"meta.quota","typeLabel":"object"}},"required":["request_id"],"isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"required":["error","meta"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"INVALID_BODY","message":"\u003cstring>","details":{}},"meta":{"request_id":"\u003cstring>","report":"\u003cstring>","duration_ms":123,"quota":{"cost":123,"unlimited":true,"remaining":123,"resets_at":"2023-11-07T05:31:56Z","charge":"charged","min_fee_reason":"missing_locale"}}}}},"exampleType":"generated"}},"exampleType":"generated"},"579e84a2-1e38-4ff7-9be7-3060e3112f7d":{"description":"QUOTA_EXCEEDED / SUBSCRIPTION_INACTIVE / ORG_NOT_ELIGIBLE. Not charged.","headers":{"Request-Id":{"description":"Unique id of this request (equals meta.request_id). Include it when reporting a problem.","schema":{"type":"string"}},"GEOly-API-Version":{"description":"API contract version. Always \"1\" on /api/v1.","schema":{"type":"string"}},"X-RateLimit-Limit":{"description":"Requests allowed per credential in the current one-minute window. Sent on every response after the API key has been authenticated; absent on errors raised while authenticating (401) and on 405.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Seconds until the current window resets (0–60).","schema":{"type":"integer"}},"X-DB-Budget-Limit":{"description":"Organization database-seconds budget per rolling 60 minutes. Sent on every response after authentication.","schema":{"type":"integer"}},"X-DB-Budget-Used":{"description":"Database seconds used by the organization in the last 60 minutes.","schema":{"type":"integer"}},"X-DB-Budget-Reset":{"description":"Seconds until the oldest usage bucket expires.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"[Extensible enum] One of x-geoly-error-codes.","examples":["INVALID_BODY","INVALID_ARGUMENT","INVALID_CURSOR","IDEMPOTENCY_KEY_INVALID","FAILED_PRECONDITION","UNAUTHORIZED","SUBSCRIPTION_INACTIVE","QUOTA_EXCEEDED","ORG_NOT_ELIGIBLE","PLAN_LIMIT_REACHED","API_KEY_BRAND_REQUIRED","ORG_SELECTION_REQUIRED","ORGANIZATION_REQUIRED","PERMISSION_DENIED","REPORT_NOT_FOUND","NOT_FOUND","METHOD_NOT_ALLOWED","IDEMPOTENCY_KEY_REUSED","REQUEST_IN_PROGRESS","IDEMPOTENCY_OUTCOME_UNKNOWN","TOOL_SURFACE_RETIRED","PAYLOAD_TOO_LARGE","UNSUPPORTED_MEDIA_TYPE","QUERY_TOO_EXPENSIVE","RESPONSE_TOO_LARGE","RATE_LIMITED","GUARDED_RATE_LIMITED","BUSY","BUDGET_EXCEEDED","INTERNAL_ERROR","TOOL_TIMEOUT","OVERLOADED","CIRCUIT_OPEN","TOOL_FAILED","FEED_NOT_READY","IDEMPOTENCY_UNAVAILABLE"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"For humans; do not parse.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"object","description":"Stable keys: errors[] ({param, reason, allowed?, message}) on INVALID_ARGUMENT; reason; required (PERMISSION_DENIED); retry_after_seconds (429); max_bytes / actual_bytes (413 / 422); _quota (receipt); resource / id (404 NOT_FOUND of a single-resource endpoint). Other keys are informational and may change.","uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"type":"object","properties":{"request_id":{"type":"string","isRequired":true,"uniqueKey":"meta.request_id","typeLabel":"string"},"report":{"type":"string","uniqueKey":"meta.report","typeLabel":"string"},"duration_ms":{"type":"integer","uniqueKey":"meta.duration_ms","typeLabel":"integer"},"quota":{"type":"object","description":"Billing outcome of this call. remaining / resets_at / unlimited are null on paths that never reserved credits (free reports, calls rejected before execution) — except QUOTA_EXCEEDED, which carries the live balance. Absent when the call was rejected before the report ran (schema errors, cursor errors, authentication).","properties":{"cost":{"type":"integer","description":"Credits actually charged for this call.","isRequired":true,"uniqueKey":"meta.quota.cost","typeLabel":"integer"},"unlimited":{"oneOf":[{"type":"boolean","isRequired":true,"uniqueKey":"meta.quota.unlimited.oneOf.0","typeLabel":"boolean"},{"type":"null","isRequired":true,"uniqueKey":"meta.quota.unlimited.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.unlimited","typeLabel":"boolean | null"},"remaining":{"oneOf":[{"type":"integer","description":"Credits left this period; null when unlimited or unknown on this path.","isRequired":true,"uniqueKey":"meta.quota.remaining.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Credits left this period; null when unlimited or unknown on this path.","isRequired":true,"uniqueKey":"meta.quota.remaining.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.remaining","typeLabel":"integer | null"},"resets_at":{"oneOf":[{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"meta.quota.resets_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","isRequired":true,"uniqueKey":"meta.quota.resets_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.resets_at","typeLabel":"string\u003cdate-time> | null"},"charge":{"type":"string","examples":["charged","min_fee","free","refunded","refund_pending","unbilled"],"description":"[Extensible enum] charged = normal settlement (per row, or one call for a call-priced read — including a not-found from the prompt or record detail); min_fee = minimum call fee (no data / not found from a per-row report / platform not purchased / missing locale); free = free report or endpoint; refunded / refund_pending = failed and refunded; unbilled = rejected before execution, or not metered.","isRequired":true,"uniqueKey":"meta.quota.charge","typeLabel":"string"},"min_fee_reason":{"oneOf":[{"type":"string","examples":["missing_locale","no_data",null],"description":"[Extensible enum]","isRequired":true,"uniqueKey":"meta.quota.min_fee_reason.oneOf.0","typeLabel":"string"},{"type":"null","examples":["missing_locale","no_data",null],"description":"[Extensible enum]","isRequired":true,"uniqueKey":"meta.quota.min_fee_reason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.min_fee_reason","typeLabel":"string | null"}},"required":["cost","unlimited","remaining","resets_at","charge","min_fee_reason"],"uniqueKey":"meta.quota","typeLabel":"object"}},"required":["request_id"],"isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"required":["error","meta"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"INVALID_BODY","message":"\u003cstring>","details":{}},"meta":{"request_id":"\u003cstring>","report":"\u003cstring>","duration_ms":123,"quota":{"cost":123,"unlimited":true,"remaining":123,"resets_at":"2023-11-07T05:31:56Z","charge":"charged","min_fee_reason":"missing_locale"}}}}},"exampleType":"generated"}},"exampleType":"generated"},"868c5e10-a303-4446-bec9-e9596cd91077":{"description":"API_KEY_BRAND_REQUIRED (the key is not bound to a brand) / PERMISSION_DENIED (the key lacks the read permission in x-geoly-required-permission; details.required names it). Not charged.","headers":{"Request-Id":{"description":"Unique id of this request (equals meta.request_id). Include it when reporting a problem.","schema":{"type":"string"}},"GEOly-API-Version":{"description":"API contract version. Always \"1\" on /api/v1.","schema":{"type":"string"}},"X-RateLimit-Limit":{"description":"Requests allowed per credential in the current one-minute window. Sent on every response after the API key has been authenticated; absent on errors raised while authenticating (401) and on 405.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Seconds until the current window resets (0–60).","schema":{"type":"integer"}},"X-DB-Budget-Limit":{"description":"Organization database-seconds budget per rolling 60 minutes. Sent on every response after authentication.","schema":{"type":"integer"}},"X-DB-Budget-Used":{"description":"Database seconds used by the organization in the last 60 minutes.","schema":{"type":"integer"}},"X-DB-Budget-Reset":{"description":"Seconds until the oldest usage bucket expires.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"[Extensible enum] One of x-geoly-error-codes.","examples":["INVALID_BODY","INVALID_ARGUMENT","INVALID_CURSOR","IDEMPOTENCY_KEY_INVALID","FAILED_PRECONDITION","UNAUTHORIZED","SUBSCRIPTION_INACTIVE","QUOTA_EXCEEDED","ORG_NOT_ELIGIBLE","PLAN_LIMIT_REACHED","API_KEY_BRAND_REQUIRED","ORG_SELECTION_REQUIRED","ORGANIZATION_REQUIRED","PERMISSION_DENIED","REPORT_NOT_FOUND","NOT_FOUND","METHOD_NOT_ALLOWED","IDEMPOTENCY_KEY_REUSED","REQUEST_IN_PROGRESS","IDEMPOTENCY_OUTCOME_UNKNOWN","TOOL_SURFACE_RETIRED","PAYLOAD_TOO_LARGE","UNSUPPORTED_MEDIA_TYPE","QUERY_TOO_EXPENSIVE","RESPONSE_TOO_LARGE","RATE_LIMITED","GUARDED_RATE_LIMITED","BUSY","BUDGET_EXCEEDED","INTERNAL_ERROR","TOOL_TIMEOUT","OVERLOADED","CIRCUIT_OPEN","TOOL_FAILED","FEED_NOT_READY","IDEMPOTENCY_UNAVAILABLE"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"For humans; do not parse.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"object","description":"Stable keys: errors[] ({param, reason, allowed?, message}) on INVALID_ARGUMENT; reason; required (PERMISSION_DENIED); retry_after_seconds (429); max_bytes / actual_bytes (413 / 422); _quota (receipt); resource / id (404 NOT_FOUND of a single-resource endpoint). Other keys are informational and may change.","uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"type":"object","properties":{"request_id":{"type":"string","isRequired":true,"uniqueKey":"meta.request_id","typeLabel":"string"},"report":{"type":"string","uniqueKey":"meta.report","typeLabel":"string"},"duration_ms":{"type":"integer","uniqueKey":"meta.duration_ms","typeLabel":"integer"},"quota":{"type":"object","description":"Billing outcome of this call. remaining / resets_at / unlimited are null on paths that never reserved credits (free reports, calls rejected before execution) — except QUOTA_EXCEEDED, which carries the live balance. Absent when the call was rejected before the report ran (schema errors, cursor errors, authentication).","properties":{"cost":{"type":"integer","description":"Credits actually charged for this call.","isRequired":true,"uniqueKey":"meta.quota.cost","typeLabel":"integer"},"unlimited":{"oneOf":[{"type":"boolean","isRequired":true,"uniqueKey":"meta.quota.unlimited.oneOf.0","typeLabel":"boolean"},{"type":"null","isRequired":true,"uniqueKey":"meta.quota.unlimited.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.unlimited","typeLabel":"boolean | null"},"remaining":{"oneOf":[{"type":"integer","description":"Credits left this period; null when unlimited or unknown on this path.","isRequired":true,"uniqueKey":"meta.quota.remaining.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Credits left this period; null when unlimited or unknown on this path.","isRequired":true,"uniqueKey":"meta.quota.remaining.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.remaining","typeLabel":"integer | null"},"resets_at":{"oneOf":[{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"meta.quota.resets_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","isRequired":true,"uniqueKey":"meta.quota.resets_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.resets_at","typeLabel":"string\u003cdate-time> | null"},"charge":{"type":"string","examples":["charged","min_fee","free","refunded","refund_pending","unbilled"],"description":"[Extensible enum] charged = normal settlement (per row, or one call for a call-priced read — including a not-found from the prompt or record detail); min_fee = minimum call fee (no data / not found from a per-row report / platform not purchased / missing locale); free = free report or endpoint; refunded / refund_pending = failed and refunded; unbilled = rejected before execution, or not metered.","isRequired":true,"uniqueKey":"meta.quota.charge","typeLabel":"string"},"min_fee_reason":{"oneOf":[{"type":"string","examples":["missing_locale","no_data",null],"description":"[Extensible enum]","isRequired":true,"uniqueKey":"meta.quota.min_fee_reason.oneOf.0","typeLabel":"string"},{"type":"null","examples":["missing_locale","no_data",null],"description":"[Extensible enum]","isRequired":true,"uniqueKey":"meta.quota.min_fee_reason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.min_fee_reason","typeLabel":"string | null"}},"required":["cost","unlimited","remaining","resets_at","charge","min_fee_reason"],"uniqueKey":"meta.quota","typeLabel":"object"}},"required":["request_id"],"isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"required":["error","meta"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"INVALID_BODY","message":"\u003cstring>","details":{}},"meta":{"request_id":"\u003cstring>","report":"\u003cstring>","duration_ms":123,"quota":{"cost":123,"unlimited":true,"remaining":123,"resets_at":"2023-11-07T05:31:56Z","charge":"charged","min_fee_reason":"missing_locale"}}}}},"exampleType":"generated"}},"exampleType":"generated"},"74a45657-219b-432a-a559-3b680da4a2c0":{"description":"RESPONSE_TOO_LARGE: response exceeds 4 MB; omit include=answer_text to retrieve metadata. Rejected before settlement.","headers":{"Request-Id":{"description":"Unique id of this request (equals meta.request_id). Include it when reporting a problem.","schema":{"type":"string"}},"GEOly-API-Version":{"description":"API contract version. Always \"1\" on /api/v1.","schema":{"type":"string"}},"X-RateLimit-Limit":{"description":"Requests allowed per credential in the current one-minute window. Sent on every response after the API key has been authenticated; absent on errors raised while authenticating (401) and on 405.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Seconds until the current window resets (0–60).","schema":{"type":"integer"}},"X-DB-Budget-Limit":{"description":"Organization database-seconds budget per rolling 60 minutes. Sent on every response after authentication.","schema":{"type":"integer"}},"X-DB-Budget-Used":{"description":"Database seconds used by the organization in the last 60 minutes.","schema":{"type":"integer"}},"X-DB-Budget-Reset":{"description":"Seconds until the oldest usage bucket expires.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"[Extensible enum] One of x-geoly-error-codes.","examples":["INVALID_BODY","INVALID_ARGUMENT","INVALID_CURSOR","IDEMPOTENCY_KEY_INVALID","FAILED_PRECONDITION","UNAUTHORIZED","SUBSCRIPTION_INACTIVE","QUOTA_EXCEEDED","ORG_NOT_ELIGIBLE","PLAN_LIMIT_REACHED","API_KEY_BRAND_REQUIRED","ORG_SELECTION_REQUIRED","ORGANIZATION_REQUIRED","PERMISSION_DENIED","REPORT_NOT_FOUND","NOT_FOUND","METHOD_NOT_ALLOWED","IDEMPOTENCY_KEY_REUSED","REQUEST_IN_PROGRESS","IDEMPOTENCY_OUTCOME_UNKNOWN","TOOL_SURFACE_RETIRED","PAYLOAD_TOO_LARGE","UNSUPPORTED_MEDIA_TYPE","QUERY_TOO_EXPENSIVE","RESPONSE_TOO_LARGE","RATE_LIMITED","GUARDED_RATE_LIMITED","BUSY","BUDGET_EXCEEDED","INTERNAL_ERROR","TOOL_TIMEOUT","OVERLOADED","CIRCUIT_OPEN","TOOL_FAILED","FEED_NOT_READY","IDEMPOTENCY_UNAVAILABLE"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"For humans; do not parse.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"object","description":"Stable keys: errors[] ({param, reason, allowed?, message}) on INVALID_ARGUMENT; reason; required (PERMISSION_DENIED); retry_after_seconds (429); max_bytes / actual_bytes (413 / 422); _quota (receipt); resource / id (404 NOT_FOUND of a single-resource endpoint). Other keys are informational and may change.","uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"type":"object","properties":{"request_id":{"type":"string","isRequired":true,"uniqueKey":"meta.request_id","typeLabel":"string"},"report":{"type":"string","uniqueKey":"meta.report","typeLabel":"string"},"duration_ms":{"type":"integer","uniqueKey":"meta.duration_ms","typeLabel":"integer"},"quota":{"type":"object","description":"Billing outcome of this call. remaining / resets_at / unlimited are null on paths that never reserved credits (free reports, calls rejected before execution) — except QUOTA_EXCEEDED, which carries the live balance. Absent when the call was rejected before the report ran (schema errors, cursor errors, authentication).","properties":{"cost":{"type":"integer","description":"Credits actually charged for this call.","isRequired":true,"uniqueKey":"meta.quota.cost","typeLabel":"integer"},"unlimited":{"oneOf":[{"type":"boolean","isRequired":true,"uniqueKey":"meta.quota.unlimited.oneOf.0","typeLabel":"boolean"},{"type":"null","isRequired":true,"uniqueKey":"meta.quota.unlimited.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.unlimited","typeLabel":"boolean | null"},"remaining":{"oneOf":[{"type":"integer","description":"Credits left this period; null when unlimited or unknown on this path.","isRequired":true,"uniqueKey":"meta.quota.remaining.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Credits left this period; null when unlimited or unknown on this path.","isRequired":true,"uniqueKey":"meta.quota.remaining.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.remaining","typeLabel":"integer | null"},"resets_at":{"oneOf":[{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"meta.quota.resets_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","isRequired":true,"uniqueKey":"meta.quota.resets_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.resets_at","typeLabel":"string\u003cdate-time> | null"},"charge":{"type":"string","examples":["charged","min_fee","free","refunded","refund_pending","unbilled"],"description":"[Extensible enum] charged = normal settlement (per row, or one call for a call-priced read — including a not-found from the prompt or record detail); min_fee = minimum call fee (no data / not found from a per-row report / platform not purchased / missing locale); free = free report or endpoint; refunded / refund_pending = failed and refunded; unbilled = rejected before execution, or not metered.","isRequired":true,"uniqueKey":"meta.quota.charge","typeLabel":"string"},"min_fee_reason":{"oneOf":[{"type":"string","examples":["missing_locale","no_data",null],"description":"[Extensible enum]","isRequired":true,"uniqueKey":"meta.quota.min_fee_reason.oneOf.0","typeLabel":"string"},{"type":"null","examples":["missing_locale","no_data",null],"description":"[Extensible enum]","isRequired":true,"uniqueKey":"meta.quota.min_fee_reason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.min_fee_reason","typeLabel":"string | null"}},"required":["cost","unlimited","remaining","resets_at","charge","min_fee_reason"],"uniqueKey":"meta.quota","typeLabel":"object"}},"required":["request_id"],"isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"required":["error","meta"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"INVALID_BODY","message":"\u003cstring>","details":{}},"meta":{"request_id":"\u003cstring>","report":"\u003cstring>","duration_ms":123,"quota":{"cost":123,"unlimited":true,"remaining":123,"resets_at":"2023-11-07T05:31:56Z","charge":"charged","min_fee_reason":"missing_locale"}}}}},"exampleType":"generated"}},"exampleType":"generated"},"f9755513-0405-48de-868c-eedab02fab95":{"description":"RATE_LIMITED / GUARDED_RATE_LIMITED / BUSY / BUDGET_EXCEEDED. Not charged; honor Retry-After and pace with X-DB-Budget-*.","headers":{"Request-Id":{"description":"Unique id of this request (equals meta.request_id). Include it when reporting a problem.","schema":{"type":"string"}},"GEOly-API-Version":{"description":"API contract version. Always \"1\" on /api/v1.","schema":{"type":"string"}},"X-RateLimit-Limit":{"description":"Requests allowed per credential in the current one-minute window. Sent on every response after the API key has been authenticated; absent on errors raised while authenticating (401) and on 405.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Seconds until the current window resets (0–60).","schema":{"type":"integer"}},"X-DB-Budget-Limit":{"description":"Organization database-seconds budget per rolling 60 minutes. Sent on every response after authentication.","schema":{"type":"integer"}},"X-DB-Budget-Used":{"description":"Database seconds used by the organization in the last 60 minutes.","schema":{"type":"integer"}},"X-DB-Budget-Reset":{"description":"Seconds until the oldest usage bucket expires.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying (429; 503 when retryable).","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"[Extensible enum] One of x-geoly-error-codes.","examples":["INVALID_BODY","INVALID_ARGUMENT","INVALID_CURSOR","IDEMPOTENCY_KEY_INVALID","FAILED_PRECONDITION","UNAUTHORIZED","SUBSCRIPTION_INACTIVE","QUOTA_EXCEEDED","ORG_NOT_ELIGIBLE","PLAN_LIMIT_REACHED","API_KEY_BRAND_REQUIRED","ORG_SELECTION_REQUIRED","ORGANIZATION_REQUIRED","PERMISSION_DENIED","REPORT_NOT_FOUND","NOT_FOUND","METHOD_NOT_ALLOWED","IDEMPOTENCY_KEY_REUSED","REQUEST_IN_PROGRESS","IDEMPOTENCY_OUTCOME_UNKNOWN","TOOL_SURFACE_RETIRED","PAYLOAD_TOO_LARGE","UNSUPPORTED_MEDIA_TYPE","QUERY_TOO_EXPENSIVE","RESPONSE_TOO_LARGE","RATE_LIMITED","GUARDED_RATE_LIMITED","BUSY","BUDGET_EXCEEDED","INTERNAL_ERROR","TOOL_TIMEOUT","OVERLOADED","CIRCUIT_OPEN","TOOL_FAILED","FEED_NOT_READY","IDEMPOTENCY_UNAVAILABLE"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"For humans; do not parse.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"object","description":"Stable keys: errors[] ({param, reason, allowed?, message}) on INVALID_ARGUMENT; reason; required (PERMISSION_DENIED); retry_after_seconds (429); max_bytes / actual_bytes (413 / 422); _quota (receipt); resource / id (404 NOT_FOUND of a single-resource endpoint). Other keys are informational and may change.","uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"type":"object","properties":{"request_id":{"type":"string","isRequired":true,"uniqueKey":"meta.request_id","typeLabel":"string"},"report":{"type":"string","uniqueKey":"meta.report","typeLabel":"string"},"duration_ms":{"type":"integer","uniqueKey":"meta.duration_ms","typeLabel":"integer"},"quota":{"type":"object","description":"Billing outcome of this call. remaining / resets_at / unlimited are null on paths that never reserved credits (free reports, calls rejected before execution) — except QUOTA_EXCEEDED, which carries the live balance. Absent when the call was rejected before the report ran (schema errors, cursor errors, authentication).","properties":{"cost":{"type":"integer","description":"Credits actually charged for this call.","isRequired":true,"uniqueKey":"meta.quota.cost","typeLabel":"integer"},"unlimited":{"oneOf":[{"type":"boolean","isRequired":true,"uniqueKey":"meta.quota.unlimited.oneOf.0","typeLabel":"boolean"},{"type":"null","isRequired":true,"uniqueKey":"meta.quota.unlimited.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.unlimited","typeLabel":"boolean | null"},"remaining":{"oneOf":[{"type":"integer","description":"Credits left this period; null when unlimited or unknown on this path.","isRequired":true,"uniqueKey":"meta.quota.remaining.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Credits left this period; null when unlimited or unknown on this path.","isRequired":true,"uniqueKey":"meta.quota.remaining.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.remaining","typeLabel":"integer | null"},"resets_at":{"oneOf":[{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"meta.quota.resets_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","isRequired":true,"uniqueKey":"meta.quota.resets_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.resets_at","typeLabel":"string\u003cdate-time> | null"},"charge":{"type":"string","examples":["charged","min_fee","free","refunded","refund_pending","unbilled"],"description":"[Extensible enum] charged = normal settlement (per row, or one call for a call-priced read — including a not-found from the prompt or record detail); min_fee = minimum call fee (no data / not found from a per-row report / platform not purchased / missing locale); free = free report or endpoint; refunded / refund_pending = failed and refunded; unbilled = rejected before execution, or not metered.","isRequired":true,"uniqueKey":"meta.quota.charge","typeLabel":"string"},"min_fee_reason":{"oneOf":[{"type":"string","examples":["missing_locale","no_data",null],"description":"[Extensible enum]","isRequired":true,"uniqueKey":"meta.quota.min_fee_reason.oneOf.0","typeLabel":"string"},{"type":"null","examples":["missing_locale","no_data",null],"description":"[Extensible enum]","isRequired":true,"uniqueKey":"meta.quota.min_fee_reason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.min_fee_reason","typeLabel":"string | null"}},"required":["cost","unlimited","remaining","resets_at","charge","min_fee_reason"],"uniqueKey":"meta.quota","typeLabel":"object"}},"required":["request_id"],"isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"required":["error","meta"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"INVALID_BODY","message":"\u003cstring>","details":{}},"meta":{"request_id":"\u003cstring>","report":"\u003cstring>","duration_ms":123,"quota":{"cost":123,"unlimited":true,"remaining":123,"resets_at":"2023-11-07T05:31:56Z","charge":"charged","min_fee_reason":"missing_locale"}}}}},"exampleType":"generated"}},"exampleType":"generated"},"6c6a5d46-30fa-46c7-9192-7f493bb64682":{"description":"INTERNAL_ERROR: unexpected server error (not charged). Retry once with backoff; report the Request-Id if it persists.","headers":{"Request-Id":{"description":"Unique id of this request (equals meta.request_id). Include it when reporting a problem.","schema":{"type":"string"}},"GEOly-API-Version":{"description":"API contract version. Always \"1\" on /api/v1.","schema":{"type":"string"}},"X-RateLimit-Limit":{"description":"Requests allowed per credential in the current one-minute window. Sent on every response after the API key has been authenticated; absent on errors raised while authenticating (401) and on 405.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Seconds until the current window resets (0–60).","schema":{"type":"integer"}},"X-DB-Budget-Limit":{"description":"Organization database-seconds budget per rolling 60 minutes. Sent on every response after authentication.","schema":{"type":"integer"}},"X-DB-Budget-Used":{"description":"Database seconds used by the organization in the last 60 minutes.","schema":{"type":"integer"}},"X-DB-Budget-Reset":{"description":"Seconds until the oldest usage bucket expires.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"[Extensible enum] One of x-geoly-error-codes.","examples":["INVALID_BODY","INVALID_ARGUMENT","INVALID_CURSOR","IDEMPOTENCY_KEY_INVALID","FAILED_PRECONDITION","UNAUTHORIZED","SUBSCRIPTION_INACTIVE","QUOTA_EXCEEDED","ORG_NOT_ELIGIBLE","PLAN_LIMIT_REACHED","API_KEY_BRAND_REQUIRED","ORG_SELECTION_REQUIRED","ORGANIZATION_REQUIRED","PERMISSION_DENIED","REPORT_NOT_FOUND","NOT_FOUND","METHOD_NOT_ALLOWED","IDEMPOTENCY_KEY_REUSED","REQUEST_IN_PROGRESS","IDEMPOTENCY_OUTCOME_UNKNOWN","TOOL_SURFACE_RETIRED","PAYLOAD_TOO_LARGE","UNSUPPORTED_MEDIA_TYPE","QUERY_TOO_EXPENSIVE","RESPONSE_TOO_LARGE","RATE_LIMITED","GUARDED_RATE_LIMITED","BUSY","BUDGET_EXCEEDED","INTERNAL_ERROR","TOOL_TIMEOUT","OVERLOADED","CIRCUIT_OPEN","TOOL_FAILED","FEED_NOT_READY","IDEMPOTENCY_UNAVAILABLE"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"For humans; do not parse.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"object","description":"Stable keys: errors[] ({param, reason, allowed?, message}) on INVALID_ARGUMENT; reason; required (PERMISSION_DENIED); retry_after_seconds (429); max_bytes / actual_bytes (413 / 422); _quota (receipt); resource / id (404 NOT_FOUND of a single-resource endpoint). Other keys are informational and may change.","uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"type":"object","properties":{"request_id":{"type":"string","isRequired":true,"uniqueKey":"meta.request_id","typeLabel":"string"},"report":{"type":"string","uniqueKey":"meta.report","typeLabel":"string"},"duration_ms":{"type":"integer","uniqueKey":"meta.duration_ms","typeLabel":"integer"},"quota":{"type":"object","description":"Billing outcome of this call. remaining / resets_at / unlimited are null on paths that never reserved credits (free reports, calls rejected before execution) — except QUOTA_EXCEEDED, which carries the live balance. Absent when the call was rejected before the report ran (schema errors, cursor errors, authentication).","properties":{"cost":{"type":"integer","description":"Credits actually charged for this call.","isRequired":true,"uniqueKey":"meta.quota.cost","typeLabel":"integer"},"unlimited":{"oneOf":[{"type":"boolean","isRequired":true,"uniqueKey":"meta.quota.unlimited.oneOf.0","typeLabel":"boolean"},{"type":"null","isRequired":true,"uniqueKey":"meta.quota.unlimited.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.unlimited","typeLabel":"boolean | null"},"remaining":{"oneOf":[{"type":"integer","description":"Credits left this period; null when unlimited or unknown on this path.","isRequired":true,"uniqueKey":"meta.quota.remaining.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Credits left this period; null when unlimited or unknown on this path.","isRequired":true,"uniqueKey":"meta.quota.remaining.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.remaining","typeLabel":"integer | null"},"resets_at":{"oneOf":[{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"meta.quota.resets_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","isRequired":true,"uniqueKey":"meta.quota.resets_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.resets_at","typeLabel":"string\u003cdate-time> | null"},"charge":{"type":"string","examples":["charged","min_fee","free","refunded","refund_pending","unbilled"],"description":"[Extensible enum] charged = normal settlement (per row, or one call for a call-priced read — including a not-found from the prompt or record detail); min_fee = minimum call fee (no data / not found from a per-row report / platform not purchased / missing locale); free = free report or endpoint; refunded / refund_pending = failed and refunded; unbilled = rejected before execution, or not metered.","isRequired":true,"uniqueKey":"meta.quota.charge","typeLabel":"string"},"min_fee_reason":{"oneOf":[{"type":"string","examples":["missing_locale","no_data",null],"description":"[Extensible enum]","isRequired":true,"uniqueKey":"meta.quota.min_fee_reason.oneOf.0","typeLabel":"string"},{"type":"null","examples":["missing_locale","no_data",null],"description":"[Extensible enum]","isRequired":true,"uniqueKey":"meta.quota.min_fee_reason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.min_fee_reason","typeLabel":"string | null"}},"required":["cost","unlimited","remaining","resets_at","charge","min_fee_reason"],"uniqueKey":"meta.quota","typeLabel":"object"}},"required":["request_id"],"isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"required":["error","meta"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"INVALID_BODY","message":"\u003cstring>","details":{}},"meta":{"request_id":"\u003cstring>","report":"\u003cstring>","duration_ms":123,"quota":{"cost":123,"unlimited":true,"remaining":123,"resets_at":"2023-11-07T05:31:56Z","charge":"charged","min_fee_reason":"missing_locale"}}}}},"exampleType":"generated"}},"exampleType":"generated"},"a3fc03f7-7c41-4c21-bd2b-5ec619fb1efc":{"description":"TOOL_TIMEOUT / OVERLOADED / CIRCUIT_OPEN / TOOL_FAILED / FEED_NOT_READY (the dedicated feed index or the safe watermark is not available; no fallback scan was run). Not charged; retry later, honoring Retry-After when present. (502 / 504 are never used.)","headers":{"Request-Id":{"description":"Unique id of this request (equals meta.request_id). Include it when reporting a problem.","schema":{"type":"string"}},"GEOly-API-Version":{"description":"API contract version. Always \"1\" on /api/v1.","schema":{"type":"string"}},"X-RateLimit-Limit":{"description":"Requests allowed per credential in the current one-minute window. Sent on every response after the API key has been authenticated; absent on errors raised while authenticating (401) and on 405.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Seconds until the current window resets (0–60).","schema":{"type":"integer"}},"X-DB-Budget-Limit":{"description":"Organization database-seconds budget per rolling 60 minutes. Sent on every response after authentication.","schema":{"type":"integer"}},"X-DB-Budget-Used":{"description":"Database seconds used by the organization in the last 60 minutes.","schema":{"type":"integer"}},"X-DB-Budget-Reset":{"description":"Seconds until the oldest usage bucket expires.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying (429; 503 when retryable).","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"[Extensible enum] One of x-geoly-error-codes.","examples":["INVALID_BODY","INVALID_ARGUMENT","INVALID_CURSOR","IDEMPOTENCY_KEY_INVALID","FAILED_PRECONDITION","UNAUTHORIZED","SUBSCRIPTION_INACTIVE","QUOTA_EXCEEDED","ORG_NOT_ELIGIBLE","PLAN_LIMIT_REACHED","API_KEY_BRAND_REQUIRED","ORG_SELECTION_REQUIRED","ORGANIZATION_REQUIRED","PERMISSION_DENIED","REPORT_NOT_FOUND","NOT_FOUND","METHOD_NOT_ALLOWED","IDEMPOTENCY_KEY_REUSED","REQUEST_IN_PROGRESS","IDEMPOTENCY_OUTCOME_UNKNOWN","TOOL_SURFACE_RETIRED","PAYLOAD_TOO_LARGE","UNSUPPORTED_MEDIA_TYPE","QUERY_TOO_EXPENSIVE","RESPONSE_TOO_LARGE","RATE_LIMITED","GUARDED_RATE_LIMITED","BUSY","BUDGET_EXCEEDED","INTERNAL_ERROR","TOOL_TIMEOUT","OVERLOADED","CIRCUIT_OPEN","TOOL_FAILED","FEED_NOT_READY","IDEMPOTENCY_UNAVAILABLE"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"For humans; do not parse.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"object","description":"Stable keys: errors[] ({param, reason, allowed?, message}) on INVALID_ARGUMENT; reason; required (PERMISSION_DENIED); retry_after_seconds (429); max_bytes / actual_bytes (413 / 422); _quota (receipt); resource / id (404 NOT_FOUND of a single-resource endpoint). Other keys are informational and may change.","uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"type":"object","properties":{"request_id":{"type":"string","isRequired":true,"uniqueKey":"meta.request_id","typeLabel":"string"},"report":{"type":"string","uniqueKey":"meta.report","typeLabel":"string"},"duration_ms":{"type":"integer","uniqueKey":"meta.duration_ms","typeLabel":"integer"},"quota":{"type":"object","description":"Billing outcome of this call. remaining / resets_at / unlimited are null on paths that never reserved credits (free reports, calls rejected before execution) — except QUOTA_EXCEEDED, which carries the live balance. Absent when the call was rejected before the report ran (schema errors, cursor errors, authentication).","properties":{"cost":{"type":"integer","description":"Credits actually charged for this call.","isRequired":true,"uniqueKey":"meta.quota.cost","typeLabel":"integer"},"unlimited":{"oneOf":[{"type":"boolean","isRequired":true,"uniqueKey":"meta.quota.unlimited.oneOf.0","typeLabel":"boolean"},{"type":"null","isRequired":true,"uniqueKey":"meta.quota.unlimited.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.unlimited","typeLabel":"boolean | null"},"remaining":{"oneOf":[{"type":"integer","description":"Credits left this period; null when unlimited or unknown on this path.","isRequired":true,"uniqueKey":"meta.quota.remaining.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Credits left this period; null when unlimited or unknown on this path.","isRequired":true,"uniqueKey":"meta.quota.remaining.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.remaining","typeLabel":"integer | null"},"resets_at":{"oneOf":[{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"meta.quota.resets_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","isRequired":true,"uniqueKey":"meta.quota.resets_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.resets_at","typeLabel":"string\u003cdate-time> | null"},"charge":{"type":"string","examples":["charged","min_fee","free","refunded","refund_pending","unbilled"],"description":"[Extensible enum] charged = normal settlement (per row, or one call for a call-priced read — including a not-found from the prompt or record detail); min_fee = minimum call fee (no data / not found from a per-row report / platform not purchased / missing locale); free = free report or endpoint; refunded / refund_pending = failed and refunded; unbilled = rejected before execution, or not metered.","isRequired":true,"uniqueKey":"meta.quota.charge","typeLabel":"string"},"min_fee_reason":{"oneOf":[{"type":"string","examples":["missing_locale","no_data",null],"description":"[Extensible enum]","isRequired":true,"uniqueKey":"meta.quota.min_fee_reason.oneOf.0","typeLabel":"string"},{"type":"null","examples":["missing_locale","no_data",null],"description":"[Extensible enum]","isRequired":true,"uniqueKey":"meta.quota.min_fee_reason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.quota.min_fee_reason","typeLabel":"string | null"}},"required":["cost","unlimited","remaining","resets_at","charge","min_fee_reason"],"uniqueKey":"meta.quota","typeLabel":"object"}},"required":["request_id"],"isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"required":["error","meta"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"INVALID_BODY","message":"\u003cstring>","details":{}},"meta":{"request_id":"\u003cstring>","report":"\u003cstring>","duration_ms":123,"quota":{"cost":123,"unlimited":true,"remaining":123,"resets_at":"2023-11-07T05:31:56Z","charge":"charged","min_fee_reason":"missing_locale"}}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"301959f6-eba0-4950-b66b-5a25fc3fa106":{"bearerAuth":{"type":"http","scheme":"bearer","description":"API key from Settings → Developer → API keys (prefix geom_). Each key is bound to one brand.","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"ff9899c6-8f8e-4cb4-84f4-02cccd12d5a4":{"url":"https://app.geoly.ai"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"API key from Settings → Developer → API keys (prefix geom_). Each key is bound to one brand.","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"API key from Settings → Developer → API keys (prefix geom_). Each key is bound to one brand.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"api-reference/openapi.json"},"subdomain":"ge-oly","siteName":"GEOly Docs","title":"Sync records - GEOly Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/api-reference/records/sync-records","matchLevel":0},"zh":{"href":"/zh/api-reference/records/sync-records","matchLevel":1}}},"lastModified":"2026-11-02T10:40:30.521Z","originalFileLocation":"api-reference/records/sync-records.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Completed records ordered by changed_at then id, not by record date, so a late completion appears at its completion update. Uses a dedicated index and a safe watermark at least five minutes behind database time; a long-running database transaction that has already written holds the watermark at five minutes before its start until it ends, and polls in that time return nothing newer but are still billed. Scan work is bounded, so an empty page can have next_cursor. Follow next_cursor until it is null, then save page.sync_cursor and poll with it; every 5 to 15 minutes is enough, because nothing newer than the watermark is returned. Bound the first sync with updated_since rather than business_date_from, which filters inside each scanned batch and does not shorten the scan. With a cursor, updated_since is ignored; keep limit, business_date_from and include unchanged. Repeated records are updates: upsert by id. Analysis fields are read-time values: mention_rank backfills do not advance changed_at, so a rank change alone is not re-emitted. Deletions and records that leave completed are not emitted either. Reconcile by starting a separate pass without a cursor from an updated_since rewound at least 24 hours (a rewound updated_since sent together with a saved cursor is ignored and reconciles nothing), or by re-reading records by record date. Optional answer_text and citations expansions; citations cap at 30 with a flag. Every call, including an empty poll, is billed at the price in x-geoly-cost.\">\u003cmeta data-mint-head name=\"application-name\" content=\"GEOly Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/ge-oly/PxJaGKKHma1N8v8R/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/ge-oly/PxJaGKKHma1N8v8R/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/ge-oly/PxJaGKKHma1N8v8R/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/ge-oly/PxJaGKKHma1N8v8R/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/ge-oly/PxJaGKKHma1N8v8R/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/ge-oly/PxJaGKKHma1N8v8R/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/ge-oly/PxJaGKKHma1N8v8R/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/ge-oly/PxJaGKKHma1N8v8R/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/ge-oly/PxJaGKKHma1N8v8R/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Sync records - GEOly Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Completed records ordered by changed_at then id, not by record date, so a late completion appears at its completion update. Uses a dedicated index and a safe watermark at least five minutes behind database time; a long-running database transaction that has already written holds the watermark at five minutes before its start until it ends, and polls in that time return nothing newer but are still billed. Scan work is bounded, so an empty page can have next_cursor. Follow next_cursor until it is null, then save page.sync_cursor and poll with it; every 5 to 15 minutes is enough, because nothing newer than the watermark is returned. Bound the first sync with updated_since rather than business_date_from, which filters inside each scanned batch and does not shorten the scan. With a cursor, updated_since is ignored; keep limit, business_date_from and include unchanged. Repeated records are updates: upsert by id. Analysis fields are read-time values: mention_rank backfills do not advance changed_at, so a rank change alone is not re-emitted. Deletions and records that leave completed are not emitted either. Reconcile by starting a separate pass without a cursor from an updated_since rewound at least 24 hours (a rewound updated_since sent together with a saved cursor is ignored and reconciles nothing), or by re-reading records by record date. Optional answer_text and citations expansions; citations cap at 30 with a flag. Every call, including an empty poll, is billed at the price in x-geoly-cost.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"GEOly Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.geoly.ai/api-reference/records/sync-records\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://ge-oly.mintlify.app/_mintlify/api/og/v2?division=Records\u0026amp;title=Sync+records\u0026amp;description=Completed+records+ordered+by+changed_at+then+id%2C+not+by+record+date%2C+so+a+late+completion+appears+at+its+completion+update.+Uses+a+dedicated+index+and+a+safe+wa\u0026amp;theme=6f479ed031130532e88a7020\u0026amp;signature=e65652b8162bdcb3dc13151beb8b97472f50f1bb30f372d26f9b718c53b9bb1e\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Sync records - GEOly Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Completed records ordered by changed_at then id, not by record date, so a late completion appears at its completion update. Uses a dedicated index and a safe watermark at least five minutes behind database time; a long-running database transaction that has already written holds the watermark at five minutes before its start until it ends, and polls in that time return nothing newer but are still billed. Scan work is bounded, so an empty page can have next_cursor. Follow next_cursor until it is null, then save page.sync_cursor and poll with it; every 5 to 15 minutes is enough, because nothing newer than the watermark is returned. Bound the first sync with updated_since rather than business_date_from, which filters inside each scanned batch and does not shorten the scan. With a cursor, updated_since is ignored; keep limit, business_date_from and include unchanged. Repeated records are updates: upsert by id. Analysis fields are read-time values: mention_rank backfills do not advance changed_at, so a rank change alone is not re-emitted. Deletions and records that leave completed are not emitted either. Reconcile by starting a separate pass without a cursor from an updated_since rewound at least 24 hours (a rewound updated_since sent together with a saved cursor is ignored and reconciles nothing), or by re-reading records by record date. Optional answer_text and citations expansions; citations cap at 30 with a flag. Every call, including an empty poll, is billed at the price in x-geoly-cost.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://ge-oly.mintlify.app/_mintlify/api/og/v2?division=Records\u0026amp;title=Sync+records\u0026amp;description=Completed+records+ordered+by+changed_at+then+id%2C+not+by+record+date%2C+so+a+late+completion+appears+at+its+completion+update.+Uses+a+dedicated+index+and+a+safe+wa\u0026amp;theme=6f479ed031130532e88a7020\u0026amp;signature=e65652b8162bdcb3dc13151beb8b97472f50f1bb30f372d26f9b718c53b9bb1e\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/ge-oly/PxJaGKKHma1N8v8R/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"GEOly Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0A0A0A\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.geoly.ai/api-reference/records/sync-records\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/records/sync-records.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.geoly.ai/api-reference/records/sync-records\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"zh\" href=\"https://docs.geoly.ai/zh/api-reference/records/sync-records\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.geoly.ai/api-reference/records/sync-records\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.geoly.ai/#organization\",\"name\":\"GEOly Docs\",\"url\":\"https://docs.geoly.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/ge-oly/Cn9GPNuGnA715ktI/logo/light.svg?fit=max\u0026auto=format\u0026n=Cn9GPNuGnA715ktI\u0026q=85\u0026s=d3cea28520cc9660b9bd70ab642920fe\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.geoly.ai#website\",\"name\":\"GEOly Docs\",\"url\":\"https://docs.geoly.ai\",\"publisher\":{\"@id\":\"https://docs.geoly.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.geoly.ai/api-reference/records/sync-records#webpage\",\"url\":\"https://docs.geoly.ai/api-reference/records/sync-records\",\"name\":\"Sync records\",\"description\":\"Completed records ordered by changed_at then id, not by record date, so a late completion appears at its completion update. Uses a dedicated index and a safe watermark at least five minutes behind database time; a long-running database transaction that has already written holds the watermark at five minutes before its start until it ends, and polls in that time return nothing newer but are still billed. Scan work is bounded, so an empty page can have next_cursor. Follow next_cursor until it is null, then save page.sync_cursor and poll with it; every 5 to 15 minutes is enough, because nothing newer than the watermark is returned. Bound the first sync with updated_since rather than business_date_from, which filters inside each scanned batch and does not shorten the scan. With a cursor, updated_since is ignored; keep limit, business_date_from and include unchanged. Repeated records are updates: upsert by id. Analysis fields are read-time values: mention_rank backfills do not advance changed_at, so a rank change alone is not re-emitted. Deletions and records that leave completed are not emitted either. Reconcile by starting a separate pass without a cursor from an updated_since rewound at least 24 hours (a rewound updated_since sent together with a saved cursor is ignored and reconciles nothing), or by re-reading records by record date. Optional answer_text and citations expansions; citations cap at 30 with a flag. Every call, including an empty poll, is billed at the price in x-geoly-cost.\",\"dateModified\":\"2026-11-02T10:40:30.521Z\",\"isPartOf\":{\"@id\":\"https://docs.geoly.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.geoly.ai/api-reference/records/sync-records#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.geoly.ai/api-reference/records/sync-records#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Records\",\"item\":\"https://docs.geoly.ai/api-reference/records/list-prompt-records\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Sync records\",\"item\":\"https://docs.geoly.ai/api-reference/records/sync-records\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.geoly.ai/api-reference/records/sync-records#apireference\",\"headline\":\"Sync records\",\"name\":\"Sync records\",\"description\":\"Completed records ordered by changed_at then id, not by record date, so a late completion appears at its completion update. Uses a dedicated index and a safe watermark at least five minutes behind database time; a long-running database transaction that has already written holds the watermark at five minutes before its start until it ends, and polls in that time return nothing newer but are still billed. Scan work is bounded, so an empty page can have next_cursor. Follow next_cursor until it is null, then save page.sync_cursor and poll with it; every 5 to 15 minutes is enough, because nothing newer than the watermark is returned. Bound the first sync with updated_since rather than business_date_from, which filters inside each scanned batch and does not shorten the scan. With a cursor, updated_since is ignored; keep limit, business_date_from and include unchanged. Repeated records are updates: upsert by id. Analysis fields are read-time values: mention_rank backfills do not advance changed_at, so a rank change alone is not re-emitted. Deletions and records that leave completed are not emitted either. Reconcile by starting a separate pass without a cursor from an updated_since rewound at least 24 hours (a rewound updated_since sent together with a saved cursor is ignored and reconciles nothing), or by re-reading records by record date. Optional answer_text and citations expansions; citations cap at 30 with a flag. Every call, including an empty poll, is billed at the price in x-geoly-cost.\",\"url\":\"https://docs.geoly.ai/api-reference/records/sync-records\",\"mainEntityOfPage\":{\"@id\":\"https://docs.geoly.ai/api-reference/records/sync-records#webpage\"},\"dateModified\":\"2026-11-02T10:40:30.521Z\",\"publisher\":{\"@id\":\"https://docs.geoly.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.geoly.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"GEOly Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"GEOly Docs","nav":{"global":null,"languages":[{"language":"en","tabs":[{"tab":"Documentation","icon":"book-open","pages":[{"title":"Documentation","href":""}]},{"tab":"MCP Server","icon":"plug","pages":[{"title":"MCP Server","href":"/developers/mcp"}]},{"tab":"API Reference","icon":"square-terminal","groups":[{"group":"Get started","icon":"book-open","pages":[{"title":"GEOly Data API","sidebarTitle":"Overview","href":"/developers/data-api"}]},{"group":"Account","icon":"user","pages":[{"title":"Get brand","openapi":"api-reference/openapi.json GET /api/v1/brand","href":"/api-reference/account/get-brand"},{"title":"Get quota","openapi":"api-reference/openapi.json GET /api/v1/quota","href":"/api-reference/account/get-quota"}]},{"group":"Catalog","icon":"list","pages":[{"title":"List topics","openapi":"api-reference/openapi.json GET /api/v1/topics","href":"/api-reference/catalog/list-topics"},{"title":"List prompts","openapi":"api-reference/openapi.json GET /api/v1/prompts","href":"/api-reference/catalog/list-prompts"},{"title":"Get prompt","openapi":"api-reference/openapi.json GET /api/v1/prompts/{prompt_id}","href":"/api-reference/catalog/get-prompt"},{"title":"Create prompt","openapi":"api-reference/openapi.json POST /api/v1/prompts","href":"/api-reference/catalog/create-prompt"}]},{"group":"Records","icon":"database","pages":[{"title":"List prompt records","openapi":"api-reference/openapi.json GET /api/v1/prompts/{prompt_id}/records","href":"/api-reference/records/list-prompt-records"},{"title":"Get latest records","openapi":"api-reference/openapi.json GET /api/v1/prompts/{prompt_id}/records/latest","href":"/api-reference/records/get-latest-records"},{"title":"Get record","openapi":"api-reference/openapi.json GET /api/v1/records/{record_id}","description":"Answer text is only returned when include=answer_text. Citations, search sources and shopping are bounded (30/30/20), with total counts and truncation flags. Internal provider errors and raw analysis are excluded. Responses exceeding 4 MB are rejected before settlement; omit include to fetch metadata. Billed per call at the price in x-geoly-cost, using the existing MCP credit meter. Billing outcomes are in meta.quota.","href":"/api-reference/records/get-record"},{"title":"Sync records","openapi":"api-reference/openapi.json GET /api/v1/records","href":"/api-reference/records/sync-records"},{"title":"Trigger run","openapi":"api-reference/openapi.json POST /api/v1/prompts/{prompt_id}/runs","description":"Returns 202 when work was dispatched, otherwise 200 when naturally deduplicated. Location points to monitoring records. Consumes monitoring credits through the existing trigger. Refusals decided before anything is written (plan prompt limit, archived prompt, no allowed or available platform, expired plan) return 4xx with details.reason set to the original tool code and details.write_outcome = not_started; the idempotency key is released. Optional Idempotency-Key uses a 24-hour completed-result window; unknown outcomes require inspection, never a blind retry.","href":"/api-reference/records/trigger-run"}]},{"group":"Reports","icon":"chart-column","pages":[{"title":"Overview report","openapi":"api-reference/openapi.json POST /api/v1/reports/overview","href":"/api-reference/reports/overview"},{"title":"Analytics report","openapi":"api-reference/openapi.json POST /api/v1/reports/analytics","href":"/api-reference/reports/analytics"},{"title":"Brand board","openapi":"api-reference/openapi.json POST /api/v1/reports/brand-board","href":"/api-reference/reports/brand-board"},{"title":"Citations report","openapi":"api-reference/openapi.json POST /api/v1/reports/citations","href":"/api-reference/reports/citations"},{"title":"Prompts report","openapi":"api-reference/openapi.json POST /api/v1/reports/prompts","href":"/api-reference/reports/prompts"},{"title":"Prompt overview","openapi":"api-reference/openapi.json POST /api/v1/reports/prompt-overview","href":"/api-reference/reports/prompt-overview"}]}]}]},{"language":"zh","pages":[{"title":"zh","href":"/zh/api-reference/records/sync-records"}]}]},"basePath":"","title":"Sync records - GEOly Docs","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CS552b7R.js","utils-DDTCYAF2.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-De8ttokP.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DrwRDvAh.js","snippetPresets-DtAN0nWx.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D5rWArI6.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-O2i12wsz.js","shallow-DV8xABTt.js","getApiPlaygroundDisplay-DBZ0B5Jx.js","CodeSnippet-BVi0tPUX.js","CodeSnippets-CqASbIwY.js","Page-m07pfKpT.js","getPastedJson-DG9vsMS8.js","icon-CXzRSCr8.js","MethodPill-BdKVtEuX.js","DuplicateIcon-CZlmBrJI.js","createIcon-biFEUKPL.js","DynamicMarkdown-B54_zNBF.js","SectionHeading-DwwHK3Pt.js","axios-vUo_bRtp.js","Markdown-DfhCTwyA.js","clsx-xpJZXxdP.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BTZUMDnx.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-DqdKa2R4.js"]}