curl --request POST \
--url https://api.aisa.one/apis/v1/oxylabs/llm \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"source": "chatgpt",
"prompt": "best noise cancelling headphones 2026",
"parse": true,
"geo_location": "United States"
}
'{
"id": "async_job_351d6f429fb6fbe8f505f7d12bfe56b30739a210",
"object": "integration_async_job",
"endpoint": "/apis/v1/oxylabs/llm",
"status": "queued",
"createdAt": "2023-11-07T05:31:56Z",
"completedAt": "2023-11-07T05:31:56Z",
"pricing": {
"currency": "USD",
"authorizedMicrosUSD": 123,
"finalMicrosUSD": 123,
"billingMode": "fixed_request"
},
"output": {
"results": [
{
"content": {}
}
]
},
"error": {
"code": "<string>",
"message": "<string>"
}
}Oxylabs LLM Answer (async)
Submit a ChatGPT, Gemini, or Perplexity answer-engine query to Oxylabs and get back the AI answer plus cited sources, as a background job.
curl --request POST \
--url https://api.aisa.one/apis/v1/oxylabs/llm \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"source": "chatgpt",
"prompt": "best noise cancelling headphones 2026",
"parse": true,
"geo_location": "United States"
}
'{
"id": "async_job_351d6f429fb6fbe8f505f7d12bfe56b30739a210",
"object": "integration_async_job",
"endpoint": "/apis/v1/oxylabs/llm",
"status": "queued",
"createdAt": "2023-11-07T05:31:56Z",
"completedAt": "2023-11-07T05:31:56Z",
"pricing": {
"currency": "USD",
"authorizedMicrosUSD": 123,
"finalMicrosUSD": 123,
"billingMode": "fixed_request"
},
"output": {
"results": [
{
"content": {}
}
]
},
"error": {
"code": "<string>",
"message": "<string>"
}
}source, send the prompt (required), and a unique Idempotency-Key header (required). These sources take ~40–90s, so they run as background jobs. Submitting returns HTTP 202 and a job envelope — id, object, endpoint, status, createdAt, completedAt, pricing, output, error — with output still null. Poll get_oxylabs_llm_job until terminal; output then carries results[] with the parsed answer text and cited sources. Billed a flat $0.00145 per successful job — pricing.billingMode is fixed_request. A still-queued job can be cancelled with POST /oxylabs/llm/{jobId}/cancel, which releases the hold; failed and cancelled jobs are never billed. Send a fresh Idempotency-Key per distinct query.
google_search) and Google AI Mode (google_ai_mode) — use the synchronous post_oxylabs_ai_search endpoint instead; they return in ~4–8s in the same response.https://mcp.aisa.one/mcp — Claude
Code, Codex, Cursor, VS Code and the rest. Authorization is OAuth: the client
opens a browser, you click Allow once, and there is no key to paste. The
commands per client, and what each call costs, are on
aisa.one/mcp.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
Unique key (1 to 191 characters) that makes the submit idempotent. Re-submitting with the same key and request fingerprint returns the original job.
191Body
The LLM answer engine to query.
chatgpt, gemini, perplexity "chatgpt"
The natural-language prompt. Max length per source: chatgpt 4000, gemini 8000, perplexity 8000 characters.
"best noise cancelling headphones 2026"
Country-level geo-location for the query, e.g. "United States".
"United States"
Optional locale for the query, e.g. "en-US".
Optional Oxylabs user-agent type.
Optional rendering mode passed through to Oxylabs.
Return structured, parsed results instead of raw output. Recommended.
true
Optional source-specific context object passed through to Oxylabs.
Response
Job accepted. Poll the returned job id until terminal.
An asynchronous Oxylabs LLM job. Returned by the submit call (HTTP 202) and by the poll call. Poll the job by its id until status is terminal (completed, failed, or cancelled).
Unique AIsa job identifier. Use it to poll or cancel the job.
"async_job_351d6f429fb6fbe8f505f7d12bfe56b30739a210"
Always "integration_async_job".
"integration_async_job"
The submit endpoint this job belongs to.
"/apis/v1/oxylabs/llm"
Customer-facing lifecycle status. queued and running are non-terminal; completed, failed, and cancelled are terminal.
queued, running, completed, failed, cancelled When the job was accepted.
When the job reached a terminal status. Null while queued or running.
Show child attributes
Show child attributes
Job result payload. Present only once status is completed. Carries results[]; the parsed shape inside each entry's content varies by source — chatgpt/gemini return response_text plus citations[], and perplexity returns answer_results / answer_results_md (the answer text) with cited sources under additional_results.sources_results[].
Show child attributes
Show child attributes
Present when status is failed. Null otherwise.
Show child attributes
Show child attributes