AnswerLine Start free

API reference

Base URL https://api.answerline.dev. Generated from the OpenAPI document; field names and error codes here are the contract.

POST /v1/monitor/chatgpt

Get structured output from ChatGPT for any prompt in supported regions: the answer, its cited sources, ads, shopping cards and brand entities

Body

FieldTypeDescription
prompt * string Prompt submitted to ChatGPT, up to 2,000 characters. A longer prompt is refused with a 400 that states its length.
country * string Code of the country or region used to localize the response
include object Flags that add extra output formats to the response (optional)
include.html boolean A copy of the ChatGPT page as it was when the answer was captured, stored on our file host and linked in `html`, to check the answer against. It costs extra, priced at what the page costs us to load, at the task's own margin.
include.markdown boolean Add a markdown version of the response to the result
include.rawResponse boolean Return the answer as normalized stream events. For the engine's answer as received, use `include.rawWire`.
include.searchQueries boolean Return the fan-out queries ChatGPT issued while producing the response (empty on the answers served today)
include.ads boolean Return ads that ChatGPT shows in its response (empty on the answers served today)
include.shopping boolean Return shopping cards plus products shown inline (inlineProducts), with their prices and offers. Free. Today the products from ChatGPT's shopping search come in inlineProducts and shoppingCards is usually empty.
include.rawWire boolean Return the engine's own response as received in result.rawWire: the answer stream, the rendered results pages or the RSS feed, without Gemini's detected location or ChatGPT's session tokens; null where it was not captured. Free. See https://answerline.dev/docs/output-formats#raw-wire
include.screenshot boolean Return a full-page PNG screenshot of the engine's page as it showed the finished answer, in result.screenshot: a link, or one link per results page on Google Search. On ChatGPT, Gemini, AI Mode, Google Search, Perplexity and Grok; other engines refuse it with a 400. Absent when the answer was read without a rendered page. Free. See https://answerline.dev/docs/output-formats#screenshots
legacy boolean Accepted for compatibility with clients that ask for ChatGPT's older desktop interface. Not served yet: the answer arrives in the same shape whatever its value. Default: false.
disableWebSearch boolean Accepted for compatibility. On every answer served today ChatGPT decides by itself whether to search the web, whatever this value, and `result.provenance.searchMode` records `engine-default`. Default: false.
state string State code for targeting below the country level (e.g., "CA"; "DC" included). Allowed only when country is "US". Served for Gemini only; ChatGPT, Copilot, Perplexity and Grok refuse `state` with a 400, uncharged. "DC" fails uncharged: no exit serves it.
answerDepth "any" | "full" | "quick" How deep an answer the engine writes, where it offers a choice. any (the default): a full answer when the engine can give one now, else its short one. full: a full answer or a retryable error, never charged. quick: the short one, the fastest. Perplexity offers the choice; every other engine has one depth and ignores the field. provenance.answerDepth says what was served. Same price for every value. See https://answerline.dev/docs/engine-features/#answer-depth

Responses

200 ChatGPT monitoring result (success)
400 Bad Request - the request failed validation
401 Unauthorized - authentication failed
403 Forbidden - INSUFFICIENT_CREDITS: the balance does not cover this request
404 Not Found - No such route, or the engine is paused
409 Conflict - the resource is in a conflicting state
429 Too Many Requests - the call could not start now (`CONCURRENT_LIMIT_EXCEEDED`), or the service dropped the request because it was overloaded (`SERVICE_OVERLOADED`); that case returns `Retry-After` without any limit headers. `RATE_LIMIT_EXCEEDED`, with `Retry-After`, is sent only when one address presented too many unknown keys
499 Client Closed Request - the client cancelled the request
500 Internal Server Error
502 Bad Gateway - the engine failed

POST /v1/monitor/gemini

Get structured output from Google Gemini for any prompt: the generated answer and the sources it cites, exportable as Markdown

Body

FieldTypeDescription
prompt * string Prompt submitted to Gemini, up to 2,000 characters. A longer prompt is refused with a 400 that states its length.
country * string Code of the country or region used to localize the response
include object Flags that add extra output formats to the response (optional)
include.markdown boolean Add a markdown version of the response to the result
include.html boolean A copy of the Gemini page as it was when the answer was captured, stored on our file host and linked in `html`, to check the answer against. It costs extra, priced at what the page costs us to load, at the task's own margin.
include.rawResponse boolean Return the answer as normalized stream events. For the engine's answer as received, use `include.rawWire`.
include.rawWire boolean Return the engine's own response as received in result.rawWire: the answer stream, the rendered results pages or the RSS feed, without Gemini's detected location or ChatGPT's session tokens; null where it was not captured. Free. See https://answerline.dev/docs/output-formats#raw-wire
include.screenshot boolean Return a full-page PNG screenshot of the engine's page as it showed the finished answer, in result.screenshot: a link, or one link per results page on Google Search. On ChatGPT, Gemini, AI Mode, Google Search, Perplexity and Grok; other engines refuse it with a 400. Absent when the answer was read without a rendered page. Free. See https://answerline.dev/docs/output-formats#screenshots
state string State code for targeting below the country level (e.g., "CA"; "DC" included). Allowed only when country is "US". Served for Gemini only; ChatGPT, Copilot, Perplexity and Grok refuse `state` with a 400, uncharged. "DC" fails uncharged: no exit serves it.
answerDepth "any" | "full" | "quick" How deep an answer the engine writes, where it offers a choice. any (the default): a full answer when the engine can give one now, else its short one. full: a full answer or a retryable error, never charged. quick: the short one, the fastest. Perplexity offers the choice; every other engine has one depth and ignores the field. provenance.answerDepth says what was served. Same price for every value. See https://answerline.dev/docs/engine-features/#answer-depth

Responses

200 Gemini monitoring result (success)
400 Bad Request - the request failed validation
401 Unauthorized - authentication failed
403 Forbidden - INSUFFICIENT_CREDITS: the balance does not cover this request
404 Not Found - No such route, or the engine is paused
409 Conflict - the resource is in a conflicting state
429 Too Many Requests - the call could not start now (`CONCURRENT_LIMIT_EXCEEDED`), or the service dropped the request because it was overloaded (`SERVICE_OVERLOADED`); that case returns `Retry-After` without any limit headers. `RATE_LIMIT_EXCEEDED`, with `Retry-After`, is sent only when one address presented too many unknown keys
499 Client Closed Request - the client cancelled the request
500 Internal Server Error
502 Bad Gateway - the engine failed

POST /v1/monitor/grok

Get structured output from Grok for any prompt in supported regions: the answer and the sources it cites, X/Twitter posts included

Body

FieldTypeDescription
prompt * string Prompt submitted to Grok, up to 2,000 characters. A longer prompt is refused with a 400 that states its length.
country * string Code of the country or region used to localize the response
include object Flags that add extra output formats to the response (optional)
include.markdown boolean Add a markdown version of the response to the result
include.html boolean A link to the answer's own public page on grok.com, in `html`, to check the answer against. No extra cost.
include.rawResponse boolean Return the answer as normalized stream events. For the engine's answer as received, use `include.rawWire`.
include.rawWire boolean Return the engine's own response as received in result.rawWire: the answer stream, the rendered results pages or the RSS feed, without Gemini's detected location or ChatGPT's session tokens; null where it was not captured. Free. See https://answerline.dev/docs/output-formats#raw-wire
include.screenshot boolean Return a full-page PNG screenshot of the engine's page as it showed the finished answer, in result.screenshot: a link, or one link per results page on Google Search. On ChatGPT, Gemini, AI Mode, Google Search, Perplexity and Grok; other engines refuse it with a 400. Absent when the answer was read without a rendered page. Free. See https://answerline.dev/docs/output-formats#screenshots
state string State code for targeting below the country level (e.g., "CA"; "DC" included). Allowed only when country is "US". Served for Gemini only; ChatGPT, Copilot, Perplexity and Grok refuse `state` with a 400, uncharged. "DC" fails uncharged: no exit serves it.
answerDepth "any" | "full" | "quick" How deep an answer the engine writes, where it offers a choice. any (the default): a full answer when the engine can give one now, else its short one. full: a full answer or a retryable error, never charged. quick: the short one, the fastest. Perplexity offers the choice; every other engine has one depth and ignores the field. provenance.answerDepth says what was served. Same price for every value. See https://answerline.dev/docs/engine-features/#answer-depth

Responses

200 Grok monitoring result (success)
400 Bad Request - the request failed validation
401 Unauthorized - authentication failed
403 Forbidden - INSUFFICIENT_CREDITS: the balance does not cover this request
404 Not Found - No such route, or the engine is paused
409 Conflict - the resource is in a conflicting state
429 Too Many Requests - the call could not start now (`CONCURRENT_LIMIT_EXCEEDED`), or the service dropped the request because it was overloaded (`SERVICE_OVERLOADED`); that case returns `Retry-After` without any limit headers. `RATE_LIMIT_EXCEEDED`, with `Retry-After`, is sent only when one address presented too many unknown keys
499 Client Closed Request - the client cancelled the request
500 Internal Server Error
502 Bad Gateway - the engine failed

POST /v1/monitor/google

Get structured output from Google Search: organic listings, related searches, People Also Ask and, optionally, the AI Overview

Body

FieldTypeDescription
query string Query to run on Google. Mandatory when 'url' is not given; send one or the other, never both.
url string A full URL of a Google web search, executed as-is in place of a request assembled from 'query' plus the targeting fields. It has to be absolute and http(s), hosted on one of Google's web search domains (google.com, google.co.uk, www.google.de, ...), with '/search' as its path and a 'q' that is not empty. Cannot be combined with 'query', 'location', 'uule' or 'pages', since the URL already determines them. It may carry only these query parameters, which are kept: 'q', 'gl', 'num' (treated as result depth), 'hl' and 'uule'; a URL with any other (such as 'start', 'tbs' or 'safe') is refused with a 400. Without 'uule', the search is localized to the requested country. A URL containing 'tbm' is refused: it points at a Google vertical that has a separate endpoint and price (for tbm=nws, call POST /v1/monitor/google/news).
country string Country for localized search results, as an ISO 3166-1 alpha-2 code. Mandatory in the standard request form. If you send 'url' instead, the country is taken from the URL's 'gl' parameter — set it yourself to override that value, or when the URL carries no 'gl'.
gl string Google's own name for the result-geography parameter, usable in place of `country`. Takes ISO 3166-1 alpha-2 codes, as `country` does, in upper or lower case (`us` or `US`), and the country has to be one this endpoint supports (list them with `GET /v1/countries`; Google News has no `model` value there, and its edition countries are listed at https://answerline.dev/docs/coverage#countries). Send either `country` or `gl`; if both are sent with differing values, the request fails with `400`.
hl string Interface language, in the format of Google's `hl` parameter (for example `en`, `de`, `pt-BR`). Case-insensitive free text; Google defines which codes exist. Takes precedence over the language Answerline infers from the country, which lets interface language and result geography differ.
location string Location name in Google's canonical comma-separated form 'City,Region,Country' (roughly 100,000 accepted locations are listed at https://developers.google.com/google-ads/api/reference/data/geotargets). Combine with 'country' to target a specific city. Cannot be sent together with 'uule' — choose one of the two. Not allowed when 'url' is set.
uule string A ready-made Google UULE string for exact geo-targeting, in the location-name form (starting w+CAIQICI); the coordinate form (a+) is refused with a 400. Supply it when you already have an encoded UULE rather than a location name. Cannot be sent together with 'location' — pass only one of the two. Not allowed together with 'url'; in that case add 'uule' to the URL's query string.
device "desktop" | "mobile" | "ios" | "android" Device to run the search on. 'desktop' gives the desktop SERP, while 'ios' (Safari on an iPhone), 'android' (Chrome on an Android phone) and 'mobile' (same as 'android') each give the mobile SERP.
pages integer How many pages of search results to retrieve (1-10). Not allowed together with 'url' — when 'url' is given, depth is taken from the URL's 'num' parameter (rounded up to full 10-result pages, at most 10 pages).
include object Flags that add extra data to the response (optional)
include.html boolean A copy of each Google results page as it was when the answer was captured, stored on our file host and linked in `html`, to check the answer against. No extra cost.
include.aioverview object Add Google's AI Overview to the response
include.paaAioverview boolean Fill People Also Ask items of the AI Overview type with markdown content and their sources. Billed as the AI Overview add-on, once per request, however many of include.aioverview and include.paaAioverview are set; every hydrated item needs one more fetch (usually 1-2 on a page), which makes responses slower.
include.googleGoto boolean Has had no effect since 8th September 2026. Each redirect link is now always returned as `redirectLink` next to its target, so you get both without setting this flag. Requests that still include it are handled as though it were omitted.
include.rawWire boolean Return the engine's own response as received in result.rawWire: the answer stream, the rendered results pages or the RSS feed, without Gemini's detected location or ChatGPT's session tokens; null where it was not captured. Free. See https://answerline.dev/docs/output-formats#raw-wire
include.screenshot boolean Return a full-page PNG screenshot of the engine's page as it showed the finished answer, in result.screenshot: a link, or one link per results page on Google Search. On ChatGPT, Gemini, AI Mode, Google Search, Perplexity and Grok; other engines refuse it with a 400. Absent when the answer was read without a rendered page. Free. See https://answerline.dev/docs/output-formats#screenshots
answerDepth "any" | "full" | "quick" How deep an answer the engine writes, where it offers a choice. any (the default): a full answer when the engine can give one now, else its short one. full: a full answer or a retryable error, never charged. quick: the short one, the fastest. Perplexity offers the choice; every other engine has one depth and ignores the field. provenance.answerDepth says what was served. Same price for every value. See https://answerline.dev/docs/engine-features/#answer-depth

Responses

200 Google monitoring result (success)
400 Bad Request - one or more parameters are not valid
401 Unauthorized - API key absent or not valid
403 Forbidden - INSUFFICIENT_CREDITS: the balance does not cover this request
404 Not Found - No such route, or the engine is paused
409 Conflict - the resource is in a conflicting state
429 Too Many Requests - the call could not start now (`CONCURRENT_LIMIT_EXCEEDED`), or the service dropped the request because it was overloaded (`SERVICE_OVERLOADED`); that case returns `Retry-After` without any limit headers. `RATE_LIMIT_EXCEEDED`, with `Retry-After`, is sent only when one address presented too many unknown keys
499 Client Closed Request - the client cancelled the request
500 Internal Server Error
502 Bad Gateway - the engine failed

POST /v1/monitor/google/goto

Returns the destination URL of a single Google redirect link. Pass the `redirectLink` value that accompanies each resolved link in a Google Search or AI Mode response; the reply contains the URL it leads to. Free of charge. One link is resolved per request, and Google is given up to 10 seconds to respond.

Body

FieldTypeDescription
url * string Absolute URL of a Google redirect link that you want resolved. It must point to `google.com` or `www.google.com` and use a path of `/goto` or `/url`, which is the form returned as `redirectLink` alongside each resolved link in AI Mode, Google Search and Google News responses.

Responses

200 Target URL that the redirect link leads to
400 Bad Request - url is absent, badly formed, or not a /goto or /url link on google.com
401 Unauthorized - API key absent or not valid
429 Too Many Requests - the call could not start now (`CONCURRENT_LIMIT_EXCEEDED`), or the service dropped the request because it was overloaded (`SERVICE_OVERLOADED`); that case returns `Retry-After` without any limit headers. `RATE_LIMIT_EXCEEDED`, with `Retry-After`, is sent only when one address presented too many unknown keys
500 Internal Server Error
502 Bad Gateway - Google's reply was not a redirect, or calling Google failed

POST /v1/monitor/google/news

Get structured articles from Google News: title, link, source and date for each.

Body

FieldTypeDescription
query * string Query to run on Google News
country string Country for localized news, as an ISO 3166-1 alpha-2 code. Google News publishes an edition in 71 countries, listed at https://answerline.dev/docs/coverage#countries; a request for another country is refused with a 400.
gl string Google's own name for the result-geography parameter, usable in place of `country`. Takes ISO 3166-1 alpha-2 codes, as `country` does, in upper or lower case (`us` or `US`), and the country has to be one this endpoint supports (list them with `GET /v1/countries`; Google News has no `model` value there, and its edition countries are listed at https://answerline.dev/docs/coverage#countries). Send either `country` or `gl`; if both are sent with differing values, the request fails with `400`.
hl string Interface language, in the format of Google's `hl` parameter (for example `en`, `de`, `pt-BR`). Case-insensitive free text; Google defines which codes exist. Takes precedence over the language Answerline infers from the country, which lets interface language and result geography differ.
device "desktop" | "mobile" | "ios" | "android" Device to run the search on. Not served for Google News yet: its results are read without a device, and a request that sets one is refused with a 400.
pages integer How many pages of news results to request (1-10). The feed returns one list of articles, so more pages add no articles; they are charged as requested.
include object Flags that add extra data to the response (optional)
include.html boolean A copy of the Google News feed the results were read from as it was when the answer was captured, stored on our file host and linked in `html`, to check the answer against. No extra cost.
include.rawWire boolean Return the engine's own response as received in result.rawWire: the answer stream, the rendered results pages or the RSS feed, without Gemini's detected location or ChatGPT's session tokens; null where it was not captured. Free. See https://answerline.dev/docs/output-formats#raw-wire
include.screenshot boolean Return a full-page PNG screenshot of the engine's page as it showed the finished answer, in result.screenshot: a link, or one link per results page on Google Search. On ChatGPT, Gemini, AI Mode, Google Search, Perplexity and Grok; other engines refuse it with a 400. Absent when the answer was read without a rendered page. Free. See https://answerline.dev/docs/output-formats#screenshots
answerDepth "any" | "full" | "quick" How deep an answer the engine writes, where it offers a choice. any (the default): a full answer when the engine can give one now, else its short one. full: a full answer or a retryable error, never charged. quick: the short one, the fastest. Perplexity offers the choice; every other engine has one depth and ignores the field. provenance.answerDepth says what was served. Same price for every value. See https://answerline.dev/docs/engine-features/#answer-depth

Responses

200 Google News monitoring result (success)
400 Bad Request - one or more parameters are not valid
401 Unauthorized - API key absent or not valid
403 Forbidden - INSUFFICIENT_CREDITS: the balance does not cover this request
404 Not Found - No such route, or the engine is paused
409 Conflict - the resource is in a conflicting state
429 Too Many Requests - the call could not start now (`CONCURRENT_LIMIT_EXCEEDED`), or the service dropped the request because it was overloaded (`SERVICE_OVERLOADED`); that case returns `Retry-After` without any limit headers. `RATE_LIMIT_EXCEEDED`, with `Retry-After`, is sent only when one address presented too many unknown keys
499 Client Closed Request - the client cancelled the request
500 Internal Server Error
502 Bad Gateway - the engine failed

POST /v1/monitor/copilot

Get structured output from Copilot on your brand, your products or any other topic, in many regions

Body

FieldTypeDescription
prompt * string Prompt submitted to Copilot, up to 2,000 characters. A longer prompt is refused with a 400 that states its length.
country * string Code of the country or region used to localize the response
include object Flags that add extra output formats to the response (optional)
include.html boolean `true` is refused with a validation error on this engine.
include.markdown boolean Add a markdown version of the response to the result
include.rawResponse boolean Return the answer as normalized stream events. For the engine's answer as received, use `include.rawWire`.
include.rawWire boolean Return the engine's own response as received in result.rawWire: the answer stream, the rendered results pages or the RSS feed, without Gemini's detected location or ChatGPT's session tokens; null where it was not captured. Free. See https://answerline.dev/docs/output-formats#raw-wire
include.screenshot boolean Return a full-page PNG screenshot of the engine's page as it showed the finished answer, in result.screenshot: a link, or one link per results page on Google Search. On ChatGPT, Gemini, AI Mode, Google Search, Perplexity and Grok; other engines refuse it with a 400. Absent when the answer was read without a rendered page. Free. See https://answerline.dev/docs/output-formats#screenshots
state string State code for targeting below the country level (e.g., "CA"; "DC" included). Allowed only when country is "US". Served for Gemini only; ChatGPT, Copilot, Perplexity and Grok refuse `state` with a 400, uncharged. "DC" fails uncharged: no exit serves it.
answerDepth "any" | "full" | "quick" How deep an answer the engine writes, where it offers a choice. any (the default): a full answer when the engine can give one now, else its short one. full: a full answer or a retryable error, never charged. quick: the short one, the fastest. Perplexity offers the choice; every other engine has one depth and ignores the field. provenance.answerDepth says what was served. Same price for every value. See https://answerline.dev/docs/engine-features/#answer-depth

Responses

200 Copilot monitoring result (success)
400 Bad Request - the request failed validation
401 Unauthorized - authentication failed
403 Forbidden - INSUFFICIENT_CREDITS: the balance does not cover this request
404 Not Found - No such route, or the engine is paused
409 Conflict - the resource is in a conflicting state
429 Too Many Requests - the call could not start now (`CONCURRENT_LIMIT_EXCEEDED`), or the service dropped the request because it was overloaded (`SERVICE_OVERLOADED`); that case returns `Retry-After` without any limit headers. `RATE_LIMIT_EXCEEDED`, with `Retry-After`, is sent only when one address presented too many unknown keys
499 Client Closed Request - the client cancelled the request
500 Internal Server Error
502 Bad Gateway - the engine failed

POST /v1/monitor/perplexity

Get structured output from Perplexity AI on your brand, your products or any other topic, in many regions

Body

FieldTypeDescription
prompt * string Prompt submitted to Perplexity, up to 2,000 characters. A longer prompt is refused with a 400 that states its length.
country * string Code of the country or region used to localize the response
include object Flags that add extra output formats to the response (optional)
include.html boolean A link to the answer's own public page on perplexity.ai, in `html`, to check the answer against. No extra cost.
include.markdown boolean Add a markdown version of the response to the result
include.rawResponse boolean Return the answer as normalized stream events. For the engine's answer as received, use `include.rawWire`.
include.rawWire boolean Return the engine's own response as received in result.rawWire: the answer stream, the rendered results pages or the RSS feed, without Gemini's detected location or ChatGPT's session tokens; null where it was not captured. Free. See https://answerline.dev/docs/output-formats#raw-wire
include.screenshot boolean Return a full-page PNG screenshot of the engine's page as it showed the finished answer, in result.screenshot: a link, or one link per results page on Google Search. On ChatGPT, Gemini, AI Mode, Google Search, Perplexity and Grok; other engines refuse it with a 400. Absent when the answer was read without a rendered page. Free. See https://answerline.dev/docs/output-formats#screenshots
state string State code for targeting below the country level (e.g., "CA"; "DC" included). Allowed only when country is "US". Served for Gemini only; ChatGPT, Copilot, Perplexity and Grok refuse `state` with a 400, uncharged. "DC" fails uncharged: no exit serves it.
answerDepth "any" | "full" | "quick" How deep an answer the engine writes, where it offers a choice. any (the default): a full answer when the engine can give one now, else its short one. full: a full answer or a retryable error, never charged. quick: the short one, the fastest. Perplexity offers the choice; every other engine has one depth and ignores the field. provenance.answerDepth says what was served. Same price for every value. See https://answerline.dev/docs/engine-features/#answer-depth

Responses

200 Perplexity monitoring result (success)
400 Bad Request - the request failed validation
401 Unauthorized - authentication failed
403 Forbidden - INSUFFICIENT_CREDITS: the balance does not cover this request
404 Not Found - No such route, or the engine is paused
409 Conflict - the resource is in a conflicting state
429 Too Many Requests - the call could not start now (`CONCURRENT_LIMIT_EXCEEDED`), or the service dropped the request because it was overloaded (`SERVICE_OVERLOADED`); that case returns `Retry-After` without any limit headers. `RATE_LIMIT_EXCEEDED`, with `Retry-After`, is sent only when one address presented too many unknown keys
499 Client Closed Request - the client cancelled the request
500 Internal Server Error
502 Bad Gateway - the engine failed

POST /v1/monitor/aimode

Get structured output from AI Mode on your brand, your products or any other topic, in many regions

Body

FieldTypeDescription
prompt * string Prompt submitted to Google AI Mode, up to 2,000 characters. A longer prompt is refused with a 400 that states its length.
country string Code of the country or region used to localize the response
gl string Google's own name for the result-geography parameter, usable in place of `country`. Takes ISO 3166-1 alpha-2 codes, as `country` does, in upper or lower case (`us` or `US`), and the country has to be one this endpoint supports (list them with `GET /v1/countries`; Google News has no `model` value there, and its edition countries are listed at https://answerline.dev/docs/coverage#countries). Send either `country` or `gl`; if both are sent with differing values, the request fails with `400`.
hl string Interface language, in the format of Google's `hl` parameter (for example `en`, `de`, `pt-BR`). Case-insensitive free text; Google defines which codes exist. Takes precedence over the language Answerline infers from the country, which lets interface language and result geography differ.
location string Location name in Google's canonical form, used for geo-targeted results, written comma-separated as 'City,Region,Country' (https://developers.google.com/google-ads/api/reference/data/geotargets lists every supported location, ~100,000 in all). Combine it with 'country' to target a specific city. Cannot be combined with 'uule'; send only one of the two.
uule string A ready-made Google UULE string for exact geo-targeting, in the location-name form (starting w+CAIQICI); the coordinate form (a+) is refused with a 400. Supply it when you already have an encoded UULE rather than a location name. Cannot be sent together with 'location' — pass only one of the two.
device "desktop" | "mobile" Type of device the results are fetched for
include object Flags that add extra output formats to the response (optional)
include.html boolean A copy of the AI Mode page as it was when the answer was captured, stored on our file host and linked in `html`, to check the answer against. No extra cost.
include.markdown boolean Add a markdown version of the response to the result
include.expandProducts boolean Not available yet: a request that sets it is refused with 400 before anything runs or is charged. It is meant to look up merchant offers for the response's product clusters and return them in 'result.productResults'.
include.googleGoto boolean Has had no effect since 8th September 2026. Each redirect link is now always returned as `redirectLink` next to its target, so you get both without setting this flag. Requests that still include it are handled as though it were omitted.
include.rawWire boolean Return the engine's own response as received in result.rawWire: the answer stream, the rendered results pages or the RSS feed, without Gemini's detected location or ChatGPT's session tokens; null where it was not captured. Free. See https://answerline.dev/docs/output-formats#raw-wire
include.screenshot boolean Return a full-page PNG screenshot of the engine's page as it showed the finished answer, in result.screenshot: a link, or one link per results page on Google Search. On ChatGPT, Gemini, AI Mode, Google Search, Perplexity and Grok; other engines refuse it with a 400. Absent when the answer was read without a rendered page. Free. See https://answerline.dev/docs/output-formats#screenshots
answerDepth "any" | "full" | "quick" How deep an answer the engine writes, where it offers a choice. any (the default): a full answer when the engine can give one now, else its short one. full: a full answer or a retryable error, never charged. quick: the short one, the fastest. Perplexity offers the choice; every other engine has one depth and ignores the field. provenance.answerDepth says what was served. Same price for every value. See https://answerline.dev/docs/engine-features/#answer-depth

Responses

200 AI Mode monitoring result (success)
400 Bad Request - the request failed validation
401 Unauthorized - authentication failed
403 Forbidden - INSUFFICIENT_CREDITS: the balance does not cover this request
404 Not Found - No such route, or the engine is paused
409 Conflict - the resource is in a conflicting state
429 Too Many Requests - the call could not start now (`CONCURRENT_LIMIT_EXCEEDED`), or the service dropped the request because it was overloaded (`SERVICE_OVERLOADED`); that case returns `Retry-After` without any limit headers. `RATE_LIMIT_EXCEEDED`, with `Retry-After`, is sent only when one address presented too many unknown keys
499 Client Closed Request - the client cancelled the request
500 Internal Server Error
502 Bad Gateway - the engine failed

GET /v1/countries

Lists every supported country code in ISO 3166-1 alpha-2 format. Filter by model to see which countries a given engine supports.

ParameterInTypeDescription
model query "aimode" | "aioverview" | "chatgpt" | "copilot" | "gemini" | "google" | "grok" | "perplexity" Limit the list to countries a given model supports

Responses

200 Country codes that are supported
400 Bad Request - the model parameter is not valid
401 Unauthorized - authentication failed
404 Not Found - No such route
429 Too Many Requests - the service dropped the request because it was overloaded (`SERVICE_OVERLOADED`), which returns `Retry-After` without any limit headers, or one address presented too many unknown keys (`RATE_LIMIT_EXCEEDED`, with `Retry-After`)
500 Internal Server Error

POST /v1/async/task

Queue a task to run asynchronously in the background. The response contains a task ID you can poll for the result, or the result can be delivered by webhook.

Body

FieldTypeDescription
taskType * "AIMODE" | "GOOGLE" | "GOOGLE_NEWS" | "GEMINI" | "CHATGPT" | "COPILOT" | "PERPLEXITY" | "GROK" Engine that should handle this task.
payload * object Request body specific to the engine. Needs at least `prompt` (`query` for Google Search).
priority integer Priority of the task, from 1 to 10; tasks with higher numbers run first. Default: 1.
idempotencyKey string Distinct string that stops the same task from being created twice. No two tasks in your account may share it: the key stays bound while its task is kept (4 to 5 days), and a failed task frees it 24 hours after failing.
webhook object Settings for the webhook that reports a finished task.
webhook.url * string Endpoint that gets the webhook POST request once the task finishes.

Responses

200 Task created. The response includes its ID and starting status.
401 Unauthorized - authentication failed
403 Forbidden - INSUFFICIENT_CREDITS: too little balance left to pay for this task
409 Conflict - a task already uses this idempotencyKey
422 Validation Error - the body of the request is invalid
429 Queue Limit Exceeded - the task does not fit in the memory your queue may hold. This status is also returned when the API sheds load (`SERVICE_OVERLOADED`, sent with `Retry-After` and without limit headers) and when one address presented too many unknown keys (`RATE_LIMIT_EXCEEDED`, with `Retry-After`)
500 Internal Server Error

POST /v1/async/task/batch

Create as many as 500 async tasks in a single request. Tasks are validated one by one, so an invalid task does not stop the others from being accepted. The response lists a result for each task.

Responses

200 The batch was processed. See the summary and each task's result to learn which tasks succeeded or failed.
401 Unauthorized - authentication failed
422 Validation Error - the body of the request is empty or not a proper array
429 Queue Limit Exceeded - no task in the batch is accepted, because together they do not fit in the memory your queue may hold. This status is also returned when the API sheds load (`SERVICE_OVERLOADED`, sent with `Retry-After` and without limit headers) and when one address presented too many unknown keys (`RATE_LIMIT_EXCEEDED`, with `Retry-After`)
500 Internal Server Error

GET /v1/async/task/{taskId}

Look up an asynchronous task by ID and get its state, plus the complete structured result payload once it finishes.

ParameterInTypeDescription
taskId * path string Identifier of the task you want to retrieve.

Responses

200 Success: the task's status, plus its result once finished.
401 Unauthorized - authentication failed
404 Not Found - No such task
429 Too Many Requests - the service dropped the request because it was overloaded (`SERVICE_OVERLOADED`), which returns `Retry-After` without any limit headers, or one address presented too many unknown keys (`RATE_LIMIT_EXCEEDED`, with `Retry-After`)
500 Internal Server Error

GET /v1/async/status

Returns async queue metrics for the whole organization: how many tasks are queued and processing, plus concurrency in use.

Responses

200 Success: queue metrics returned.
401 Unauthorized - authentication failed
429 Too Many Requests - the service dropped the request because it was overloaded (`SERVICE_OVERLOADED`), which returns `Retry-After` without any limit headers, or one address presented too many unknown keys (`RATE_LIMIT_EXCEEDED`, with `Retry-After`)
500 Internal Server Error

DELETE /v1/async/queue

Removes all of the authenticated organization's tasks that are still `QUEUED`, so a pending backlog can be emptied with a single request rather than through support. `PROCESSING` tasks are already running and stay as they are, and so do `COMPLETED` and `FAILED` ones. Nothing was charged for queued tasks: removing them releases the amounts they held, so `remaining` rises and the balance is unchanged. Repeating the call is harmless: with nothing queued it returns `cleared: 0`. A queue too long to clear within one call answers 202 with `clearing: true`: the rest is deleted without further calls, and `GET /v1/async/status` shows the queue shrink.

Responses

200 Queue emptied. The response reports how many queued tasks were deleted.
202 Still clearing: the queue is longer than one call clears. The rest is deleted without further calls; GET /v1/async/status shows what is left.
401 Unauthorized - authentication failed
429 Too Many Requests - the service dropped the request because it was overloaded (`SERVICE_OVERLOADED`), which returns `Retry-After` without any limit headers, or one address presented too many unknown keys (`RATE_LIMIT_EXCEEDED`, with `Retry-After`)
500 Internal Server Error

GET /v1/credits

Get the USD balance currently on your organization's account. This lets you check the balance from code — even for workloads that only use async — without sending a sync /v1/monitor/* request merely to read the X-Credits-Remaining header. The definitive check still happens at the time each task is billed.

Responses

200 The USD balance as of now.
401 Unauthorized - authentication failed
429 Too Many Requests - the service dropped the request because it was overloaded (`SERVICE_OVERLOADED`), which returns `Retry-After` without any limit headers, or one address presented too many unknown keys (`RATE_LIMIT_EXCEEDED`, with `Retry-After`)
500 Internal Server Error

GET /v1/states

Lists US state codes usable for state-level geo-targeting. `state` is served for Gemini only; ChatGPT, Copilot, Perplexity and Grok refuse it with a 400, uncharged. "DC" is listed but fails uncharged: no exit serves it. States exist only for the US; any other country value yields an empty array.

ParameterInTypeDescription
country * query string Country as an ISO 3166-1 alpha-2 code. Results are available only for "US".

Responses

200 States that are supported
400 Bad Request — country parameter absent or not valid
401 Unauthorized - authentication failed
429 Too Many Requests - the service dropped the request because it was overloaded (`SERVICE_OVERLOADED`), which returns `Retry-After` without any limit headers, or one address presented too many unknown keys (`RATE_LIMIT_EXCEEDED`, with `Retry-After`)
500 Internal Server Error