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. ChatGPT takes up to 2,000 characters; a longer prompt is refused with a 400.
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 Return a link to the complete HTML of the response
include.markdown boolean Add a markdown version of the response to the result
include.rawResponse boolean Return the unprocessed response payload from ChatGPT
include.searchQueries boolean Return the fan-out queries ChatGPT issued while producing the response
include.ads boolean Return ads that ChatGPT shows in its response
include.shopping boolean Return shopping cards plus products shown inline, with their prices and offers. Adds an add-on charge to the base cost, the same one rawResponse adds: one flag or both, it is charged once. searchQueries and ads cost nothing.
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 Leave ChatGPT's web search unforced. Answerline then returns whatever ChatGPT answers by itself, searching the web only if ChatGPT chooses to, so `result.sources`, `result.citationPills` and `result.searchQueries` are frequently empty. Default is false, meaning every request forces web search.
state string State code for targeting below the country level (e.g., "CA"; "DC" included). Allowed only when country is "US". Served for Gemini; on a model that cannot place a state yet, a request that includes it is rejected as a validation error and is not charged.

Responses

200 ChatGPT monitoring result (success)
400 Bad Request - the request failed validation
401 Unauthorized - authentication failed
403 Forbidden - missing permissions or not enough credits
404 Not Found - No such route
409 Conflict - the resource is in a conflicting state
429 Too Many Requests - the request went over a rate limit or concurrency limit, or the service dropped the request because it was overloaded (`SERVICE_OVERLOADED`); that case returns `Retry-After` without any limit headers
499 Client Closed Request - the client cancelled the request
500 Internal Server Error
502 Bad Gateway - an upstream service 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. Gemini takes up to 2,000 characters; a longer prompt is refused with a 400.
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 Not available for Gemini: its answer is read without a page to snapshot, so `true` is refused with a validation error.
include.rawResponse boolean Return the unprocessed stream of response events
state string State code for targeting below the country level (e.g., "CA"; "DC" included). Allowed only when country is "US". Served for Gemini; on a model that cannot place a state yet, a request that includes it is rejected as a validation error and is not charged.

Responses

200 Gemini monitoring result (success)
400 Bad Request - the request failed validation
401 Unauthorized - authentication failed
403 Forbidden - missing permissions or not enough credits
404 Not Found - No such route
409 Conflict - the resource is in a conflicting state
429 Too Many Requests - the request went over a rate limit or concurrency limit, or the service dropped the request because it was overloaded (`SERVICE_OVERLOADED`); that case returns `Retry-After` without any limit headers
499 Client Closed Request - the client cancelled the request
500 Internal Server Error
502 Bad Gateway - an upstream service 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
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 Add an HTML version of the response to the result
include.rawResponse boolean Return the unprocessed stream of response events
state string State code for targeting below the country level (e.g., "CA"; "DC" included). Allowed only when country is "US". Served for Gemini; on a model that cannot place a state yet, a request that includes it is rejected as a validation error and is not charged.

Responses

200 Grok monitoring result (success)
400 Bad Request - the request failed validation
401 Unauthorized - authentication failed
403 Forbidden - missing permissions or not enough credits
404 Not Found - No such route
409 Conflict - the resource is in a conflicting state
429 Too Many Requests - the request went over a rate limit or concurrency limit, or the service dropped the request because it was overloaded (`SERVICE_OVERLOADED`); that case returns `Retry-After` without any limit headers
499 Client Closed Request - the client cancelled the request
500 Internal Server Error
502 Bad Gateway - an upstream service 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: '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. 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`). 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 Return the unprocessed HTML page from Google Search
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. Charges nothing past the AI Overview add-on; 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.

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 - not enough credits, or access was refused
404 Not Found - No such route
409 Conflict - the resource is in a conflicting state
429 Too Many Requests - the request went over a rate limit or concurrency limit, or the service dropped the request because it was overloaded (`SERVICE_OVERLOADED`); that case returns `Retry-After` without any limit headers
499 Client Closed Request - the client cancelled the request
500 Internal Server Error
502 Bad Gateway - an upstream service 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, Google News or AI Mode response; the reply contains the URL it leads to. Free of credit charges and takes no concurrency slot, but it counts toward the per-second rate limit the same way other calls do. 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 request went over a rate limit or concurrency limit, or the service dropped the request because it was overloaded (`SERVICE_OVERLOADED`); that case returns `Retry-After` without any limit headers
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, snippet, source, date and thumbnail 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`). 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 retrieve (1-10)
include object Flags that add extra data to the response (optional)
include.html boolean Not available for Google News: results are read from the news feed, with no page to snapshot, so `true` is refused with a validation error.

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 - not enough credits, or access was refused
404 Not Found - No such route
409 Conflict - the resource is in a conflicting state
429 Too Many Requests - the request went over a rate limit or concurrency limit, or the service dropped the request because it was overloaded (`SERVICE_OVERLOADED`); that case returns `Retry-After` without any limit headers
499 Client Closed Request - the client cancelled the request
500 Internal Server Error
502 Bad Gateway - an upstream service failed

POST /v1/monitor/copilot

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

Body

FieldTypeDescription
prompt * string Prompt submitted to Copilot
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 Return a link to the complete HTML of the response
include.markdown boolean Add a markdown version of the response to the result
include.rawResponse boolean Return the unprocessed stream of response events
state string State code for targeting below the country level (e.g., "CA"; "DC" included). Allowed only when country is "US". Served for Gemini; on a model that cannot place a state yet, a request that includes it is rejected as a validation error and is not charged.

Responses

200 Copilot monitoring result (success)
400 Bad Request - the request failed validation
401 Unauthorized - authentication failed
403 Forbidden - missing permissions or not enough credits
404 Not Found - No such route
409 Conflict - the resource is in a conflicting state
429 Too Many Requests - the request went over a rate limit or concurrency limit, or the service dropped the request because it was overloaded (`SERVICE_OVERLOADED`); that case returns `Retry-After` without any limit headers
499 Client Closed Request - the client cancelled the request
500 Internal Server Error
502 Bad Gateway - an upstream service 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
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 Return a link to the complete HTML of the response
include.markdown boolean Add a markdown version of the response to the result
include.rawResponse boolean Return the unprocessed stream of response events
state string State code for targeting below the country level (e.g., "CA"; "DC" included). Allowed only when country is "US". Served for Gemini; on a model that cannot place a state yet, a request that includes it is rejected as a validation error and is not charged.

Responses

200 Perplexity monitoring result (success)
400 Bad Request - the request failed validation
401 Unauthorized - authentication failed
403 Forbidden - missing permissions or not enough credits
404 Not Found - No such route
409 Conflict - the resource is in a conflicting state
429 Too Many Requests - the request went over a rate limit or concurrency limit, or the service dropped the request because it was overloaded (`SERVICE_OVERLOADED`); that case returns `Retry-After` without any limit headers
499 Client Closed Request - the client cancelled the request
500 Internal Server Error
502 Bad Gateway - an upstream service 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 AI Mode
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`). 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 Return a link to the complete HTML of the response
include.markdown boolean Add a markdown version of the response to the result
include.expandProducts boolean Look up merchant offers for the response's product clusters and return them in 'result.productResults'. Clusters found in both inline products and shopping cards count once, and no more than 6 are expanded per request. Each returned cluster adds a per-cluster charge. Disabled by default.
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.

Responses

200 AI Mode monitoring result (success)
400 Bad Request - the request failed validation
401 Unauthorized - authentication failed
403 Forbidden - missing permissions or not enough credits
404 Not Found - No such route
409 Conflict - the resource is in a conflicting state
429 Too Many Requests - the request went over a rate limit or concurrency limit, or the service dropped the request because it was overloaded (`SERVICE_OVERLOADED`); that case returns `Retry-After` without any limit headers
499 Client Closed Request - the client cancelled the request
500 Internal Server Error
502 Bad Gateway - an upstream service 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 AI provider 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 API key went over its rate limit, or the service dropped the request because it was overloaded (`SERVICE_OVERLOADED`); that case returns `Retry-After` without any limit headers
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" AI provider that should handle this task.
payload * object Request body specific to the provider. 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.
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 - missing permissions, or too few credits 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 - your organization already has the maximum number of queued tasks. This status is also returned when the API key's rate limit is hit and when the API sheds load (`SERVICE_OVERLOADED`, sent with `Retry-After` and without limit headers)
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 would take your organization beyond its queue capacity. This status is also returned when the API key's rate limit is hit and when the API sheds load (`SERVICE_OVERLOADED`, sent with `Retry-After` and without limit headers)
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 API key went over its rate limit, or the service dropped the request because it was overloaded (`SERVICE_OVERLOADED`); that case returns `Retry-After` without any limit headers
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 API key went over its rate limit, or the service dropped the request because it was overloaded (`SERVICE_OVERLOADED`); that case returns `Retry-After` without any limit headers
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. No credits were charged for queued tasks, so removing them leaves your credit balance unchanged. Repeating the call is harmless: with nothing queued it returns `cleared: 0`.

Responses

200 Queue emptied. The response reports how many queued tasks were deleted.
401 Unauthorized - authentication failed
429 Too Many Requests - the API key went over its rate limit, or the service dropped the request because it was overloaded (`SERVICE_OVERLOADED`); that case returns `Retry-After` without any limit headers
500 Internal Server Error

GET /v1/credits

Get the credit balance and billing cycle 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 credit balance as of now, with the billing cycle.
401 Unauthorized - authentication failed
429 Too Many Requests - the API key went over its rate limit, or the service dropped the request because it was overloaded (`SERVICE_OVERLOADED`); that case returns `Retry-After` without any limit headers
500 Internal Server Error

GET /v1/states

Lists US state codes usable for state-level geo-targeting. That feature is not available yet: until it launches, a request that includes a state is rejected as a validation error. 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 API key went over its rate limit, or the service dropped the request because it was overloaded (`SERVICE_OVERLOADED`); that case returns `Retry-After` without any limit headers
500 Internal Server Error