# Connect your agent to AIsa
Source: https://aisa.one/docs/agent-quickstart
Install the AIsa skill, sign in, and start using tools.
Set up AIsa.
Reuse a working connection when one exists: the official `aisa` skill plus valid CLI auth, or unified MCP with `AISA_SEARCH_TOOL`, `AISA_BATCH_GET_SCHEMA`, `AISA_BATCH_QUOTE`, and `AISA_BATCH_USE`. Any working shell counts, including PowerShell. Install only the official `aisa` skill for this harness. Do not change unrelated model settings. Describe installs and credentials as in this agent environment.
## Install the official skill
Primary installer (Node.js **22.20.0+**; `skills` 1.5.25 `engines`):
```sh theme={null}
npx skills add AIsa-team/agent-skills --skill aisa --agent codex --global
```
Set `--agent` to this harness (`codex`, `claude-code`, `cursor`, …). Prefer `--global` unless the user asked for this repo only. Do not use `--all` or `*`.
If Node or `npx skills` cannot run, download the complete three files (`SKILL.md`, `LICENSE`, `agents/openai.yaml`) into this client's native Skill location. Preserve an existing official or custom skill, including a symlink; do not claim Web persistence without a native install. Codex user-level example: `~/.agents/skills/aisa`.
```sh theme={null}
set -e
aisa_skill_target="$HOME/.agents/skills/aisa"
aisa_skill_parent="$HOME/.agents/skills"
aisa_skill_base="https://raw.githubusercontent.com/AIsa-team/agent-skills/0332d85b282c4fe271fc4df18f8393a5d4993ca9/platform/aisa"
if [ -e "$aisa_skill_target" ] || [ -L "$aisa_skill_target" ]; then
echo "exists, left unchanged: $aisa_skill_target"
echo "not assumed official; inspect before treating as the AIsa skill"
exit 0
fi
aisa_skill_tmp="$(mktemp -d)"
trap 'rm -rf "$aisa_skill_tmp"' EXIT
mkdir -p "$aisa_skill_tmp/aisa/agents" "$aisa_skill_parent"
curl -fSL "$aisa_skill_base/SKILL.md" -o "$aisa_skill_tmp/aisa/SKILL.md"
curl -fSL "$aisa_skill_base/LICENSE" -o "$aisa_skill_tmp/aisa/LICENSE"
curl -fSL "$aisa_skill_base/agents/openai.yaml" -o "$aisa_skill_tmp/aisa/agents/openai.yaml"
mv "$aisa_skill_tmp/aisa" "$aisa_skill_target"
```
## CLI
Reuse `@aisa-one/cli` **0.5.0 or later** if it works. Install only if it is absent. Do not downgrade. CLI may keep its Node.js **18+** floor; do not replace a working CLI to match the Skill installer.
```sh theme={null}
npm install -g @aisa-one/cli
aisa --version
```
After the skill is on disk, read it in this session. For sign-in, follow that skill and `aisa login --help`. Check authentication with `aisa balance`. `aisa whoami` is local only. `AISA_API_KEY` overrides the stored key; if they conflict, explain both sources and do not blindly unset the environment variable. Never print credentials. Do not send the user to copy a key from the dashboard. Browser `aisa login` remains the primary way to obtain credentials.
## MCP
When this environment cannot run CLI commands, or the user prefers MCP, connect `https://tools.aisa.one/mcp` (Streamable HTTP, OAuth). The client owns browser sign-in and tokens. Do not require `npx`. Do not use `https://mcp.aisa.one/servers` or the default `aisa connect` web-search server. Connection succeeds only after OAuth completed **and** `AISA_SEARCH_TOOL`, `AISA_BATCH_GET_SCHEMA`, `AISA_BATCH_QUOTE`, and `AISA_BATCH_USE` are present. Metadata or a `401` challenge is not a protected call.
## After AIsa is connected
Say **AIsa is connected.** only after authentication is verified (`aisa balance` on the CLI path, or OAuth completed with the four tools on the MCP path). That is not a completed business task. If the user already named a task, continue it. Otherwise ask **What would you like to do first?** Follow the `aisa` skill. Setup is not spending approval.
If the quote or documented maximum exceeds the remaining approved cap, stop. Do not ask the user to approve that same endpoint under an insufficient cap.
Do not jump to HTTP to bypass missing credentials, exhausted credit, or an outage of the same API. A CLI/MCP client or router limitation may still allow the direct HTTP fallback below; do not use a paid request to probe availability. Do not extract or reuse client-owned MCP OAuth tokens.
## Direct HTTP API fallback
Use this only when CLI and MCP are both unavailable, HTTP requests are supported, and a valid existing AIsa API key or secret is already available. Use this for a client, tooling, or router limitation; it does not bypass invalid API credentials, exhausted credit, or a failure of the same underlying API.
Use the matching endpoint reference and published pricing. [API Reference](https://aisa.one/docs/api-reference). [Authentication](https://aisa.one/docs/guides/authentication). Data APIs: `https://api.aisa.one/apis/v1`. Model catalog: `https://api.aisa.one/v1/models`. Read [pricing](https://aisa.one/docs/guides/pricing) before any paid data request.
Before presenting a paid request or cost proposal for approval, read the selected endpoint's full reference, or the matching OpenAPI operation, including parameters and charging rules. A catalog, index, or pricing overview is not the endpoint contract.
Send the key as a Bearer token. Do not send a paid example request from this page. Success on `/v1/models` or other discovery does not prove authenticated business access. If there is no documented maximum or provider bound, or no auth, stop at that limitation. A changed endpoint, scope, or maximum needs new details and approval.
### API key
Reuse `AISA_API_KEY`. If it is unset and this agent can read the filesystem, use `~/.aisa/key` from `aisa login` without displaying it. Otherwise use an AIsa API key already in this client's authorized secret store. If sources conflict, explain them; do not overwrite a custom key.
If none of those exist and `aisa login` is usable, run browser `aisa login` so the key is stored automatically. If there is no usable CLI or browser-login path, the last option is for the user to sign in at [https://console.aisa.one/api-keys](https://console.aisa.one/api-keys), create a key, and save it in this client's credential or secret settings, or as local `AISA_API_KEY`. Do not ask them to paste the key into chat. Do not print it. Not every client has a secret UI; if this client cannot store a credential, stop there.
Wait for credentials before protected API requests. Obtaining a key is not paid-call approval.
## Paid API approval first
This contract applies **only** to direct HTTP calls to paid, dynamically priced, or potentially high-cost data endpoints. It does not apply to documented free discovery. It does not add a separate subsequent-message requirement to ordinary CLI or MCP quote/call.
```xml theme={null}
Read the matching endpoint documentation and published pricing declaration.
Docs, /v1/models, and capability or MCP discovery are allowed before approval.
STOP: a request to collect, research, or report data is not approval. State
the exact endpoint and scope, formula or rate, and documented maximum USD
exposure; then wait for a separate user message explicitly approving that
scope and cap.
If a provider-controlled dimension has no documented upper bound, do not
execute: an example or user-stated budget is not an enforceable cap.
Do not run a paid data call in the planning turn, use the initial request as
consent, or use a paid call to discover price, probe, test, or "just check".
Execute only the approved request. If its endpoint, scope, or maximum
changes, present the new details and obtain new approval.
```
The original task, or an "I approve" in the same planning turn, is not that subsequent approval.
## Other surfaces
Only if the user asked for models, REST, API keys, or extra skills:
* [Getting Started](https://aisa.one/docs/guides/getting-started-with-aisa)
* [Authentication](https://aisa.one/docs/guides/authentication)
* [Models](https://aisa.one/docs/guides/models)
* [API Reference](https://aisa.one/docs/api-reference)
* [Agent Skills catalog](https://aisa.one/docs/agent-skills)
# API Reference
Source: https://aisa.one/docs/api-reference
One key, one base URL, every API. Browse every endpoint AIsa routes to with interactive examples.
AIsa exposes a unified API surface at `https://api.aisa.one` — OpenAI-compatible chat at `/v1` and all other APIs under `/apis/v1`. Authenticate once with your `AISA_API_KEY` and call any endpoint below — chat, video, search, market data, and more.
OpenAI-, Anthropic-, and Google-compatible chat completion endpoints.
YouTube SERP plus Tavily search, extract, crawl, and map.
Sonar, Sonar Pro, Sonar Reasoning Pro, and Sonar Deep Research.
Company fundamentals, filings, prices, insider trades, macro data.
User, tweet, list, community, trend, space, and post endpoints.
Scholar, web, smart, and explain search for research.
Polymarket, Kalshi, and matching-market data.
## Essentials
Error codes and how to handle them.
Per-endpoint limits and headers.
Read wallet balance and API-key availability.
# OpenAI Chat
Source: https://aisa.one/docs/api-reference/chat/post_chat-completions
openapi/openai-chat.json POST /chat/completions
Create chat completion
Creates a model response for the given chat conversation. Learn more in the
[text generation](https://platform.openai.com/docs/guides/text-generation), [vision](https://platform.openai.com/docs/guides/vision),
and [audio](https://platform.openai.com/docs/guides/audio) guides.
Parameter support can differ depending on the model used to generate the
response, particularly for newer reasoning models. Parameters that are only
supported for reasoning models are noted below. For the current state of
unsupported parameters in reasoning models,
[refer to the reasoning guide](https://platform.openai.com/docs/guides/reasoning).
## Streaming responses
Set `"stream": true` to receive server-sent events (SSE) as each token is generated. This produces a lower time-to-first-token and is ideal for chat UIs.
```bash curl theme={null}
curl https://api.aisa.one/v1/chat/completions \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-N \
-d '{
"model": "gpt-5",
"messages": [{"role": "user", "content": "Write a haiku about APIs."}],
"stream": true
}'
```
```python Python theme={null}
from openai import OpenAI
client = OpenAI(base_url="https://api.aisa.one/v1", api_key="sk-aisa-...")
stream = client.chat.completions.create(
model="gpt-5",
messages=[{"role": "user", "content": "Write a haiku about APIs."}],
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta.content or ""
print(delta, end="", flush=True)
```
```typescript TypeScript theme={null}
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.aisa.one/v1",
apiKey: process.env.AISA_API_KEY,
});
const stream = await client.chat.completions.create({
model: "gpt-5",
messages: [{ role: "user", content: "Write a haiku about APIs." }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}
```
### Stream anatomy
Each line of the SSE stream looks like:
```
data: {"id":"chatcmpl-...","choices":[{"delta":{"content":"Quiet"},"index":0}]}
data: {"id":"chatcmpl-...","choices":[{"delta":{"content":" packets"},"index":0}]}
...
data: {"id":"chatcmpl-...","choices":[{"delta":{},"finish_reason":"stop","index":0}]}
data: [DONE]
```
* Each `data:` line is a JSON object. The first chunk includes the `role`; subsequent chunks contain only `delta.content`.
* The stream ends with a final chunk whose `finish_reason` is set, followed by a literal `data: [DONE]` line.
* If tool calls are used, `delta.tool_calls` arrives incrementally and should be concatenated by `index`.
### Handling errors and timeouts
* **Mid-stream errors** arrive as a normal SSE event with an `error` key instead of `choices`. Close the stream and surface the error to the caller.
* **Stream disconnects** (network blip, client timeout) cannot be resumed — restart the request. The partial response is not billed beyond the tokens you received.
* **Idle timeout**: AIsa closes streams that are idle (no tokens) for more than 60 s. Set your client read timeout to 120 s to give a safety margin.
* **Client backpressure**: stop reading from the stream if your downstream consumer is slow — AIsa throttles delivery rather than dropping tokens.
Streaming bills the same per-token rate as non-streaming. You pay for tokens that were delivered, even if the stream is cut off mid-response.
# Image Generation via Chat
Source: https://aisa.one/docs/api-reference/chat/post_chat-completions-image-generation
openapi/chat-image-generation.json POST /chat/completions
Image generation over the /v1/chat/completions route using OpenAI's multimodal chat schema. As of July 28, 2026 the Wan 2.7 image models have moved to /v1/images/generations; seedream-4-5-251128 is the remaining model configured on this route.
Some image models are reachable over the **Chat Completions** endpoint: you send a standard chat request with a multimodal `content` array containing a text prompt, and AIsa returns generated images as `{type: "image"}` parts inside `choices[].message.content[]`.
**Routing changed.** `wan2.7-image` and `wan2.7-image-pro` no longer serve this route — calling them here returns `400 model_route_not_supported`. They now use [`POST /v1/images/generations`](/docs/api-reference/chat/post_images-generations) and `POST /v1/images/edits`. `seedream-5-0-260128` and `gpt-image-2` are on `/v1/images/generations` as well.
Gemini-compatible `generateContent` requests use [`/v1beta/models/{model}:generateContent`](/docs/api-reference/chat/post_models-model-generatecontent).
## Supported models
| Model | Cost | Status |
| --------------------- | ----------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| `seedream-4-5-251128` | \$0.036 / request | Configured on this route; probes on July 28, 2026 returned `502 no available channel`, so verify availability before building on it |
The multimodal request and response shapes below document how the gateway wraps image generation on the chat route. They were captured from the Wan models while those served this endpoint — re-verify against an actual response before depending on field-level details.
## Request
The request schema is the same `POST /v1/chat/completions` you already use for text — the only differences are which model you pass and how `content` is structured.
**Critical rule:** `messages[].content` must be an **array of typed parts**. Passing a plain string returns `400 invalid_parameter_error` with the message `"Input should be a valid list: messages[*].content"`.
```bash curl theme={null}
curl -sS -X POST "https://api.aisa.one/v1/chat/completions" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedream-4-5-251128",
"messages": [
{
"role": "user",
"content": [
{ "type": "text", "text": "A cute red panda, ultra-detailed, cinematic lighting" }
]
}
],
"n": 1
}'
```
```python Python theme={null}
from openai import OpenAI
client = OpenAI(base_url="https://api.aisa.one/v1", api_key="sk-aisa-...")
resp = client.chat.completions.create(
model="seedream-4-5-251128",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "A cute red panda, ultra-detailed, cinematic lighting"}
],
}
],
n=1,
)
# Pull image URLs out of the response
for choice in resp.choices:
for part in choice.message.content:
if part["type"] == "image":
print(part["image"])
```
```typescript TypeScript theme={null}
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.aisa.one/v1",
apiKey: process.env.AISA_API_KEY,
});
const resp = await client.chat.completions.create({
model: "seedream-4-5-251128",
messages: [
{
role: "user",
content: [
{ type: "text", text: "A cute red panda, ultra-detailed, cinematic lighting" },
] as any,
},
],
n: 1,
});
const urls = resp.choices
.flatMap((c) => (c.message.content as any[]))
.filter((p) => p.type === "image")
.map((p) => p.image);
```
### Request fields
| Field | Type | Required | Notes |
| ------------------------------------ | ------- | --------------------- | --------------------------------------------------------------------------------- |
| `model` | string | yes | `seedream-4-5-251128` |
| `messages[].role` | string | yes | `user` for the prompt turn |
| `messages[].content` | array | **yes** | Must be an array, not a string |
| `messages[].content[].type` | string | yes | `text` for prompt parts; `image_url` for image-to-image inputs |
| `messages[].content[].text` | string | when `type=text` | The prompt |
| `messages[].content[].image_url.url` | string | when `type=image_url` | Reference image URL |
| `n` | integer | no | Number of images. Each is billed separately — pass `1` unless you want candidates |
## Response shape
```json theme={null}
{
"id": "chatcmpl-fcc86dfd-...",
"object": "chat.completion",
"created": 1776495713,
"model": "seedream-4-5-251128",
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": [
{ "type": "image", "image": "https://cdn.aisa.one/images/seedream/..." }
]
}
}
],
"usage": {
"prompt_tokens": 104,
"completion_tokens": 8,
"total_tokens": 112
}
}
```
* **One choice per image.** If `n=4`, you get 4 entries in `choices`.
* **Every `choice.message.content`** is an array with a single `{ "type": "image", "image": "..." }` part.
* `image` is a short-lived URL (download it soon) or base64 data, depending on your workspace configuration.
* `usage.total_tokens` reflects the small token cost of the request framing — **billing is per-image** at the rate in the table above, not per token.
## Image-to-image
Prepend an `image_url` part to the `content` array and follow it with a text instruction. For the Wan models this workflow now lives on [`POST /v1/images/edits`](/docs/api-reference/chat/post_images-generations):
```json theme={null}
{
"model": "seedream-4-5-251128",
"messages": [
{
"role": "user",
"content": [
{ "type": "image_url", "image_url": { "url": "https://example.com/reference.jpg" } },
{ "type": "text", "text": "Transform into an oil painting in the style of Van Gogh" }
]
}
],
"n": 1
}
```
## Why the playground shows the Chat Completions path
The playground sends exactly the same `POST /v1/chat/completions` request the standard [OpenAI Chat](/docs/api-reference/chat/post_chat-completions) endpoint uses — only the `model` and `content` shape are tuned for images. Your existing OpenAI-compatible SDK code works without modification; just swap the model and content shape.
## Common 4xx causes
* `400 invalid_parameter_error — Input should be a valid list: messages[*].content` — `content` was passed as a string; wrap in an array of typed parts.
* `400` referencing `messages` — you sent the Gemini-style `contents`/`parts`. Use `messages` with OpenAI multimodal parts.
* `400 model_route_not_supported` — the model does not serve this endpoint. The error body lists the routes it does serve; `wan2.7-image`, `wan2.7-image-pro`, `seedream-5-0-260128`, and `gpt-image-2` all belong on [`/v1/images/generations`](/docs/api-reference/chat/post_images-generations).
* `502 no available channel` — the route exists but the upstream has no capacity right now. Retry, or use an image model on `/v1/images/generations`.
* `500 model_not_found` — your workspace isn't provisioned for this model family. Contact support.
See [Error Codes](/docs/api-reference/errors) and [Rate Limits](/docs/api-reference/rate-limits) for more.
## Related
The same endpoint used for text models.
Gemini-compatible generateContent endpoint.
Agent skill that wraps image + video generation.
# OpenAI-Compatible Image Generations
Source: https://aisa.one/docs/api-reference/chat/post_images-generations
openapi/openai-images-generations.json POST /images/generations
Generate images with Seedream, Wan, and gpt-image-2 via the standard POST /v1/images/generations endpoint. OpenAI-compatible request shape; Seedream routes require a minimum image size of 3,686,400 pixels (e.g., 1920×1920).
The standard OpenAI-compatible `POST /v1/images/generations` endpoint. As of July 28, 2026 it serves `seedream-5-0-260128`, `wan2.7-image`, `wan2.7-image-pro`, and `gpt-image-2`. The older `seedream-4-5-251128` route is reached through [Image Generation via Chat](/docs/api-reference/chat/post_chat-completions-image-generation) instead.
## Routing at a glance
| Model | Endpoint |
| ----------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| `seedream-5-0-260128` | **`POST /v1/images/generations`** *(this page)*, also `POST /v1/chat/completions` |
| `wan2.7-image` / `wan2.7-image-pro` | **`POST /v1/images/generations`** *(this page)*, `POST /v1/images/edits` |
| `gpt-image-2` | **`POST /v1/images/generations`** *(this page)*, `POST /v1/images/edits` |
| `seedream-4-5-251128` | [`POST /v1/chat/completions`](/docs/api-reference/chat/post_chat-completions-image-generation) |
| Gemini-compatible models | [`POST /v1beta/models/{model}:generateContent`](/docs/api-reference/chat/post_models-model-generatecontent) |
## Supported models
| Model | Cost | Notes |
| --------------------- | ---------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| `seedream-5-0-260128` | \$0.035 / request | Min image size **3,686,400 pixels** (e.g., 1920×1920) |
| `wan2.7-image` | \$0.030 / request | Also accepts `POST /v1/images/edits` |
| `wan2.7-image-pro` | \$0.075 / request | Higher-quality Wan route |
| `gpt-image-2` | \$0.03 / request or \$0.05 / image (1024×1024) | Token pricing also applies on some routes — see [AI Model Pricing](/docs/guides/pricing/ai-model-pricing-llm-inference) |
## Size constraint ⚠️ (Seedream routes)
Seedream's upstream enforces a minimum of **3,686,400 pixels**. Requests below that are rejected with:
```
400 InvalidParameter: image size must be at least 3686400 pixels
```
| Size | Pixels | Accepted? |
| ----------- | --------- | ------------------- |
| `1024x1024` | 1,048,576 | ❌ |
| `1536x1536` | 2,359,296 | ❌ |
| `1920x1920` | 3,686,400 | ✅ (exact threshold) |
| `2048x2048` | 4,194,304 | ✅ |
| `2304x1600` | 3,686,400 | ✅ |
| `2560x1920` | 4,915,200 | ✅ |
Any aspect ratio works as long as `width × height ≥ 3,686,400`.
## Request
```bash curl theme={null}
curl -sS -X POST "https://api.aisa.one/v1/images/generations" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedream-5-0-260128",
"prompt": "A cute red panda, ultra-detailed, cinematic lighting",
"n": 1,
"size": "2048x2048"
}'
```
```python Python theme={null}
from openai import OpenAI
client = OpenAI(base_url="https://api.aisa.one/v1", api_key="sk-aisa-...")
resp = client.images.generate(
model="seedream-5-0-260128",
prompt="A cute red panda, ultra-detailed, cinematic lighting",
n=1,
size="2048x2048",
)
for item in resp.data:
print(item.url)
```
```typescript TypeScript theme={null}
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.aisa.one/v1",
apiKey: process.env.AISA_API_KEY,
});
const resp = await client.images.generate({
model: "seedream-5-0-260128",
prompt: "A cute red panda, ultra-detailed, cinematic lighting",
n: 1,
size: "2048x2048",
});
for (const item of resp.data) {
console.log(item.url);
}
```
### Request fields
| Field | Type | Required | Notes |
| -------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `model` | string | yes | One of `seedream-5-0-260128`, `wan2.7-image`, `wan2.7-image-pro`, `gpt-image-2` |
| `prompt` | string | yes | Text description of the image to generate |
| `n` | integer | no | Number of images. Each is billed separately at the model's per-request rate |
| `size` | string | no | `WIDTHxHEIGHT`. Seedream routes must satisfy `width × height ≥ 3,686,400`; `wan2.7-image` and `gpt-image-2` accept smaller sizes (`1024x1024` verified working) |
## Response
```json theme={null}
{
"model": "seedream-5-0-260128",
"created": 1776495432,
"data": [
{
"url": "https://cdn.aisa.one/images/seedream/...",
"size": "2048x2048"
}
],
"usage": {
"generated_images": 1,
"output_tokens": 16384,
"total_tokens": 16384
}
}
```
**AIsa's response adds a few extensions** over the vanilla OpenAI schema:
* `model` echoed at the root
* `data[].size` — actual dimensions of each returned image
* `usage` — includes `generated_images` (drives billing), plus `output_tokens` / `total_tokens` for token accounting
URLs in `data[].url` are **short-lived**. Download and persist the image to your own storage before it expires.
## Common 4xx causes
* `400 InvalidParameter — image size must be at least 3686400 pixels` — `size` was too small. Use `1920x1920` or larger.
* `404 openai_error` — you passed a model that isn't routed through this endpoint (e.g., `wan2.7-image`). Use the [chat-based route](/docs/api-reference/chat/post_chat-completions-image-generation) instead.
* `400 invalid_request` — malformed `size` string (e.g., `1024` instead of `1024x1024`).
See [Error Codes](/docs/api-reference/errors) and [Rate Limits](/docs/api-reference/rate-limits) for more.
## Related
The `/v1/chat/completions` route for the Wan 2.7 family.
Gemini-compatible generateContent endpoint.
Agent skill that wraps image + video generation.
# Claude Messages
Source: https://aisa.one/docs/api-reference/chat/post_messages
openapi/claude-messages.json POST /messages
Create a message
Creates a Claude model response using the Anthropic-compatible Messages API. This endpoint mirrors the [Anthropic `/v1/messages` specification](https://platform.claude.com/docs/en/api/messages/create), routed through the AIsa gateway at `https://api.aisa.one/v1/messages`.
Use this endpoint when you want to call Claude models (`claude-opus-4-7`, `claude-sonnet-4-6`, `claude-haiku-4-5-20251001`, etc.) with Anthropic's native request format — including extended thinking, tool use, and prompt caching. If you prefer OpenAI-style chat completions, the same Claude models are also available via the [OpenAI Chat](/docs/api-reference/chat/post_chat-completions) endpoint.
Authentication uses your AIsa API key as a Bearer token. See the [model catalog](/docs/guides/models) for the full list of supported Claude variants and context windows, and [pricing](/docs/guides/pricing/ai-model-pricing-llm-inference) for per-token rates.
# Gemini Generate Content
Source: https://aisa.one/docs/api-reference/chat/post_models-model-generatecontent
openapi/gemini-openapi.json POST /models/{model}:generateContent
Generate content using a Gemini-compatible AIsa model
# Create Embeddings
Source: https://aisa.one/docs/api-reference/embeddings/post_embeddings-create
openapi/jina.json POST /embeddings
Generate embedding vectors from text using Jina embeddings, served via the OpenAI-compatible AIsa relay.
Generate embedding vectors for one or more input strings. Pass a non-empty `input` string, or an array of strings for batch embedding. The request and response are OpenAI-compatible, so the OpenAI SDK works unchanged by pointing `base_url` at the AIsa relay.
**Available models** (both 1024-dim output):
* `jina-embeddings-v3`
* `jina-embeddings-v5-text-small`
Served via the AIsa relay path `/v1/embeddings` — OpenAI-compatible. Billing is token-based at **\$0.050 per 1M tokens**; the `usage.total_tokens` field reports the tokens billed for each request.
```bash curl theme={null}
curl https://api.aisa.one/v1/embeddings \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "jina-embeddings-v3",
"input": "A fast, OpenAI-compatible embeddings endpoint."
}'
```
```bash curl (v5-text-small) theme={null}
curl https://api.aisa.one/v1/embeddings \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "jina-embeddings-v5-text-small",
"input": "A fast, OpenAI-compatible embeddings endpoint."
}'
```
```python Python theme={null}
from openai import OpenAI
client = OpenAI(base_url="https://api.aisa.one/v1", api_key="sk-aisa-...")
resp = client.embeddings.create(
model="jina-embeddings-v5-text-small", # or "jina-embeddings-v3"
input="A fast, OpenAI-compatible embeddings endpoint.",
)
print(resp.data[0].embedding) # 1024-dim vector
```
# Analyst Estimates
Source: https://aisa.one/docs/api-reference/financial/get_analyst-estimates
openapi/analyst-estimates.json GET /analyst-estimates
Forward analyst consensus for revenue and EPS, by fiscal period.
Forward analyst consensus for one stock: `fiscal_period`, `period`, `revenue` and `earnings_per_share` per estimated period. `ticker` is required; `period` selects annual or quarterly and `limit` caps how many periods come back. Deliberately narrow — no analyst names, no ratings, no price targets, no high/low dispersion. Use it for what the street expects. For what was actually reported, and by how much it beat or missed, use [`get_financial_earnings`](/docs/api-reference/financial/get_earnings).
# Facts
Source: https://aisa.one/docs/api-reference/financial/get_company-facts
openapi/openapi-financial.json GET /company/facts
Identity and classification for one company — sector, industry, exchange and CIK.
Identity and classification for one company: `name`, `ticker`, `cik`, `sector`, `industry`, `exchange`, `location`, `is_active`, `sec_filings_url`, and the SIC trio `sic_code` / `sic_industry` / `sic_sector`. Accepts either `ticker` or `cik`. No prices and no fundamentals at all. Use it to resolve a ticker into the `cik` that the filings tools accept, or to confirm what sector a company is actually classified under before comparing it to peers.
# Earnings Snapshot
Source: https://aisa.one/docs/api-reference/financial/get_earnings
openapi/openapi-financial.json GET /earnings
What a company actually reported, against what was expected, with beat/miss signals.
Reported earnings for one stock, actuals against estimates. Each entry carries `report_period`, `fiscal_period`, `filing_date`, `filing_url` and `accession_number`, a `quarterly` block with `revenue`, `estimated_revenue`, `revenue_surprise` and `revenue_surprise_pct`, the same trio for `earnings_per_share`, plus year-over-year change fields. It also returns `signals`: upstream-computed flags such as EPS\_BEAT with a `headline` and the `actual` / `estimate` / `surprise_pct` behind it. `ticker` is required and it is the only parameter. Use it for what a company actually reported. For forward-looking consensus that has not happened yet use [`get_financial_analyst_estimates`](/docs/api-reference/financial/get_analyst-estimates).
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/financial/earnings?ticker=NVDA" \
-H "Authorization: Bearer $AISA_API_KEY"
```
# Historical Financial Metrics
Source: https://aisa.one/docs/api-reference/financial/get_financial-metrics
openapi/openapi-financial.json GET /financial-metrics
Computed valuation, margin and return ratios for one company, across periods.
Computed ratios for one company over time, about 49 per period: `market_cap`, `enterprise_value`, `price_to_earnings_ratio`, `price_to_book_ratio`, `price_to_sales_ratio`, `enterprise_value_to_ebitda_ratio`, `free_cash_flow_yield`, `peg_ratio`, `gross_margin`, `operating_margin`, `net_margin`, `return_on_equity`, `return_on_assets`, `return_on_invested_capital`, the turnover and liquidity ratios, each stamped with `report_period` and `fiscal_period`. `period` is required; identify by `ticker` or `cik`. Use it to trend a ratio across periods. For the current values only, [`get_financial_financial_metrics_snapshot`](/docs/api-reference/financial/get_financial-metrics-snapshot) is one row and much smaller.
# Financial Metrics Snapshot
Source: https://aisa.one/docs/api-reference/financial/get_financial-metrics-snapshot
openapi/openapi-financial.json GET /financial-metrics/snapshot
The same ratio set, current values only — one row instead of a series.
The same ratio set as [`get_financial_financial_metrics`](/docs/api-reference/financial/get_financial-metrics) but current-only: one `snapshot` object of about 41 fields — `market_cap`, `enterprise_value`, `price_to_earnings_ratio`, `price_to_book_ratio`, `price_to_sales_ratio`, `enterprise_value_to_ebitda_ratio`, `free_cash_flow_yield`, `peg_ratio`, the margin and return ratios, and the liquidity ratios. Takes only `ticker` or `cik`, with no period argument. Use it to size up a company right now. For history, or to see whether a multiple is unusual for this company, use [`get_financial_financial_metrics`](/docs/api-reference/financial/get_financial-metrics).
# All Financial Statements
Source: https://aisa.one/docs/api-reference/financial/get_financials
openapi/openapi-financial.json GET /financials
All three financial statements for one company in a single call.
All three statements for one company in a single call. Returns a `financials` object holding `income_statements`, `balance_sheets` and `cash_flow_statements`, each the same shape the dedicated tools return. `period` is required (annual, quarterly or ttm); identify the company by `ticker` or `cik` and cap with `limit`. Use it when you need the full picture and would otherwise make three calls. When you only need one statement, [`get_financial_financials_income_statements`](/docs/api-reference/financial/get_financials-income-statements), [`get_financial_financials_balance_sheets`](/docs/api-reference/financial/get_financials-balance-sheets) or [`get_financial_financials_cash_flow_statements`](/docs/api-reference/financial/get_financials-cash-flow-statements) returns far less data; when you need a handful of named fields across several companies, [`post_financial_financials_search_line_items`](/docs/api-reference/financial/post_financials-search-line-items) is narrower still.
# Balance Sheets
Source: https://aisa.one/docs/api-reference/financial/get_financials-balance-sheets
openapi/openapi-financial.json GET /financials/balance-sheets
Balance sheets for one company — assets, liabilities and equity, about 36 fields per period.
Balance sheets for one company, about 36 fields per period: `total_assets`, `current_assets`, `cash_and_equivalents`, `inventory`, `trade_and_non_trade_receivables`, `property_plant_and_equipment`, `goodwill_and_intangible_assets`, `total_liabilities`, `current_liabilities`, `current_debt`, `trade_and_non_trade_payables`, `deferred_revenue` and the equity lines, stamped with `report_period`, `fiscal_period`, `currency` and `filing_url`. `period` is required. Use it for capital structure and liquidity. For the ratios already computed off these numbers use [`get_financial_financial_metrics`](/docs/api-reference/financial/get_financial-metrics).
# Cash Flow Statements
Source: https://aisa.one/docs/api-reference/financial/get_financials-cash-flow-statements
openapi/openapi-financial.json GET /financials/cash-flow-statements
Cash flow statements for one company — operating, investing and financing, about 27 fields per period.
Cash flow statements for one company, about 27 fields per period: `net_cash_flow_from_operations`, `net_cash_flow_from_investing`, `net_cash_flow_from_financing`, `capital_expenditure`, `depreciation_and_amortization`, `share_based_compensation`, `issuance_or_repayment_of_debt_securities`, `issuance_or_purchase_of_equity_shares` and `dividends_and_other_cash_distributions`, stamped with `report_period`, `fiscal_period` and `currency`. `period` is required. Use it to see cash generation rather than accounting earnings. Free cash flow yield and similar derived figures live in [`get_financial_financial_metrics`](/docs/api-reference/financial/get_financial-metrics).
# Income Statements
Source: https://aisa.one/docs/api-reference/financial/get_financials-income-statements
openapi/openapi-financial.json GET /financials/income-statements
Income statements for one company — revenue through to net income, about 32 fields per period.
Income statements for one company, about 32 fields per period: `revenue`, `cost_of_revenue`, `gross_profit`, `operating_expense`, `selling_general_and_administrative_expenses`, `research_and_development`, `operating_income`, `interest_expense`, `ebit`, `income_tax_expense`, `net_income`, `net_income_common_stock` and the per-share lines, each stamped with `report_period`, `fiscal_period`, `currency`, `filing_date` and `filing_url`. `period` is required (annual, quarterly or ttm). Use it for the revenue-to-earnings walk. For all three statements at once use [`get_financial_financials`](/docs/api-reference/financial/get_financials).
# Insider Trades (by ticker)
Source: https://aisa.one/docs/api-reference/financial/get_insider-trades
openapi/openapi-financial.json GET /insider-trades
Form 4 insider buys and sells — who, how many shares, at what price, and when.
Form 4 insider transactions for one stock. Each row carries the person (`name`, `title`, `is_board_director`), the trade (`transaction_date`, `transaction_code`, `transaction_type`, `transaction_shares`, `transaction_price_per_share`, `transaction_value`), the resulting position (`shares_owned_before_transaction`, `shares_owned_after_transaction`) and the filing (`form_type`, `filing_date`, `security_title`). `ticker` is required. Filter with `name` or `transaction_type`, and bound by filing date with `filing_date`, `filing_date_gte`, `filing_date_lte`, `filing_date_gt` or `filing_date_lt`. Use it for who inside the company bought or sold and when.
# Historical Interest Rates
Source: https://aisa.one/docs/api-reference/financial/get_macro-interest-rates
openapi/macro_snapshot.json GET /macro/interest-rates
One central bank's policy rate over time. The bank code must be uppercase.
One central bank's policy rate over time, as an `interest_rates` array of `bank`, `name`, `date` and `rate`. `bank` is required and bound by `start_date` and `end_date`. Trap worth knowing: the code is case-sensitive and must be uppercase — FED works, fed returns HTTP 404 with "No data found", which reads like an empty result rather than a bad argument. Valid codes are FED, ECB, BOJ, BOE, BOC, RBA, PBOC, SNB, RBI and BOK; [`get_financial_macro_interest_rates_snapshot`](/docs/api-reference/financial/get_macro-interest-rates-snapshot) with no arguments lists them all.
# Interest Rates Snapshot
Source: https://aisa.one/docs/api-reference/financial/get_macro-interest-rates-snapshot
openapi/macro_snapshot.json GET /macro/interest-rates/snapshot
Current policy rates for ten central banks, and the place to discover the valid bank codes.
Current policy rates for the ten central banks tracked here, as an `interest_rates` array of `bank`, `name`, `rate` and `date`. `bank` is optional — omit it to get all ten at once, which is also how you discover the valid codes: FED, ECB, BOJ, BOE, BOC, RBA, PBOC, SNB, RBI and BOK. Use it for the current rate backdrop. For one bank's rate path over time use [`get_financial_macro_interest_rates`](/docs/api-reference/financial/get_macro-interest-rates).
# Search Financials
Source: https://aisa.one/docs/api-reference/financial/post_financials-search-line-items
openapi/openapi-financial.json POST /financials/search/line-items
Pull named line items across several companies at once, instead of three full statements each.
Pull named financial line items across one or more companies in a single call. Body takes `tickers` and `line_items` (both required, both arrays), plus `period` (annual, quarterly or ttm) and `limit`. Returns `search_results` with one row per ticker and period carrying only the fields you asked for, alongside `report_period`, `period` and `currency`. Use it to build a comparison table without pulling three full statements per company. The item names are the same field names the statement tools return, so look one up there first if unsure. For everything about a single company use [`get_financial_financials`](/docs/api-reference/financial/get_financials).
# Stock Screener
Source: https://aisa.one/docs/api-reference/financial/post_financials-search-screener
openapi/openapi-financial.json POST /financials/search/screener
Find tickers by numeric conditions — the only tool here that does not need a ticker up front.
Find tickers that match numeric conditions. Body takes `filters` — each a `field`, an `operator` and a `value` — plus `limit`. Returns `results` with `ticker`, `currency`, `sector`, `industry` and whichever filtered field was matched. This is the only tool here that works without knowing a ticker in advance; everything else takes one as input. Filterable fields are the metric names [`get_financial_financial_metrics`](/docs/api-reference/financial/get_financial-metrics) returns. Use it to build a candidate list, then pull detail on each name with the statement or metric tools.
# Sonar
Source: https://aisa.one/docs/api-reference/perplexity/post_perplexity-sonar
openapi/perplexity-openapi.json POST /perplexity/sonar
Ask a question and get a written answer with web citations, rather than a list of links to read yourself.
Ask a question and get a written answer with web citations, rather than a list of links to read yourself. Body is OpenAI chat-completions shaped: `model` (required, `sonar`) and `messages`. Returns `choices[0].message.content` as prose, plus `citations` (an array of URL strings) and `search_results[]` with `title`, `url`, `snippet`, `date` and `source`, and a `usage` block. Measured at about 3 seconds. Billed at a flat \$0.012 per request. This is the cheapest and fastest of the four Perplexity endpoints — use it for a single factual question. Step up to [`post_perplexity_sonar_pro`](/docs/api-reference/perplexity/post_perplexity-sonar-pro) for multi-part questions, or [`post_perplexity_sonar_reasoning_pro`](/docs/api-reference/perplexity/post_perplexity-sonar-reasoning-pro) when the answer requires working through steps. If you need results you can iterate over rather than prose, use [`post_tavily_search`](/docs/api-reference/search/post_tavily-search); `post_exa_answer` answers the same shape of question with semantic retrieval, at \$0.08.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/perplexity/sonar" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "sonar",
"messages": [
{"role": "user", "content": "What are the latest developments in quantum computing?"}
]
}'
```
# Sonar Deep Research
Source: https://aisa.one/docs/api-reference/perplexity/post_perplexity-sonar-deep-research
openapi/perplexity-openapi.json POST /perplexity/sonar-deep-research
Commission a report: this endpoint runs many searches and writes a long, cited document.
Commission a report: this endpoint runs many searches and writes a long, cited document. `model` (required, `sonar-deep-research`) and `messages` in; `choices[0].message.content`, `citations`, `search_results[]` and `usage` out, where `usage` also reports `num_search_queries` and `reasoning_tokens`. ⚠️ Budget for the wait: a two-sentence question measured **192 seconds** and returned 86 KB after 10 upstream searches — roughly 60 times slower and 10 times larger than [`post_perplexity_sonar`](/docs/api-reference/perplexity/post_perplexity-sonar), at the same flat \$0.012 per request. Many clients time out well before it answers, so call it only when a report is genuinely the deliverable, and never in a loop. For anything you would read in one sitting, the other three Perplexity endpoints answer in seconds.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/perplexity/sonar-deep-research" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "sonar-deep-research",
"messages": [
{"role": "user", "content": "Write a comprehensive analysis of the global semiconductor supply chain risks in 2026"}
]
}'
```
# Sonar Pro
Source: https://aisa.one/docs/api-reference/perplexity/post_perplexity-sonar-pro
openapi/perplexity-openapi.json POST /perplexity/sonar-pro
Ask a question that needs more than one search pass and get a written answer with citations.
Ask a question that needs more than one search pass and get a written answer with citations. Same request and response shape as [`post_perplexity_sonar`](/docs/api-reference/perplexity/post_perplexity-sonar) — `model` (required, `sonar-pro`) and `messages` in, `choices[0].message.content`, `citations`, `search_results[]` and `usage` out. Measured at about 10 seconds, roughly three times `sonar`, for the same flat \$0.012 per request. Use it for questions with several parts or follow-ups. For a single lookup `sonar` answers in a third of the time at the same price; when the difficulty is reasoning rather than retrieval, [`post_perplexity_sonar_reasoning_pro`](/docs/api-reference/perplexity/post_perplexity-sonar-reasoning-pro) shows its working.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/perplexity/sonar-pro" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "sonar-pro",
"messages": [
{"role": "user", "content": "Compare the economic policies of the US and EU regarding AI regulation in 2025-2026"}
]
}'
```
# Sonar Reasoning Pro
Source: https://aisa.one/docs/api-reference/perplexity/post_perplexity-sonar-reasoning-pro
openapi/perplexity-openapi.json POST /perplexity/sonar-reasoning-pro
Ask a question that has to be worked through, not just looked up, and get a step-by-step answer backed by web search.
Ask a question that has to be worked through, not just looked up, and get a step-by-step answer backed by web search. Same shape as the other Perplexity endpoints — `model` (required, `sonar-reasoning-pro`) and `messages` in; `choices[0].message.content`, `citations`, `search_results[]` and `usage` out. Measured at about 5 seconds, flat \$0.012 per request. Use it for comparison, causation and analysis. When the question is simply what is the case, [`post_perplexity_sonar`](/docs/api-reference/perplexity/post_perplexity-sonar) is faster; when you need a long report over many sources rather than an answer, [`post_perplexity_sonar_deep_research`](/docs/api-reference/perplexity/post_perplexity-sonar-deep-research).
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/perplexity/sonar-reasoning-pro" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "sonar-reasoning-pro",
"messages": [
{"role": "user", "content": "Analyze whether Tesla stock is overvalued based on current P/E ratio compared to industry averages"}
]
}'
```
# Rerank Documents
Source: https://aisa.one/docs/api-reference/rerank/post_rerank-create
openapi/jina.json POST /rerank
Reorder documents by relevance to a query using Jina rerank, served via the OpenAI-compatible AIsa relay.
Rerank a list of documents against a `query` using `jina-reranker-v3`. Provide a non-empty `query` and a non-empty `documents` array; results come back ordered by `relevance_score`. Use the optional `top_n` to return only the most relevant documents. This pairs naturally with embeddings-based retrieval: embed and shortlist candidates, then rerank for final ordering.
Served via the AIsa relay path `/v1/rerank` — OpenAI-compatible. Billing is token-based at **\$0.050 per 1M tokens**; the `usage.total_tokens` field reports the tokens billed for each request.
```bash curl theme={null}
curl https://api.aisa.one/v1/rerank \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "jina-reranker-v3",
"query": "What is the capital of France?",
"documents": [
"Paris is the capital of France.",
"Berlin is the capital of Germany.",
"The Eiffel Tower is in Paris."
],
"top_n": 2
}'
```
```python Python theme={null}
import requests
resp = requests.post(
"https://api.aisa.one/v1/rerank",
headers={"Authorization": "Bearer sk-aisa-..."},
json={
"model": "jina-reranker-v3",
"query": "What is the capital of France?",
"documents": [
"Paris is the capital of France.",
"Berlin is the capital of Germany.",
"The Eiffel Tower is in Paris.",
],
"top_n": 2,
},
)
print(resp.json()["results"])
```
# Poll an Agent Run
Source: https://aisa.one/docs/api-reference/search/get_exa-agent-run
openapi/exa.json GET /exa/agent/runs/{jobId}
Fetch an Agent run submitted by post_exa_agent_runs, by its jobId.
Fetch an Agent run submitted by [`post_exa_agent_runs`](/docs/api-reference/search/post_exa-agent-runs), by its `jobId`. Returns the same envelope — `id`, `status`, `createdAt`, `completedAt`, `pricing`, `output`, `error`. Repeat until `status` is `completed`, `failed` or `cancelled`; on success `output` carries `text`, `structured` and `grounding`. Reads a run only; it cannot start one.
# Poll a Batch Scrape Job
Source: https://aisa.one/docs/api-reference/search/get_firecrawl-batch-scrape-job
openapi/firecrawl.json GET /firecrawl/batch-scrape/{jobId}
Fetch a batch scrape job submitted by post_firecrawl_batch_scrape, by its jobId.
Fetch a batch scrape job submitted by [`post_firecrawl_batch_scrape`](/docs/api-reference/search/post_firecrawl-batch-scrape), by its `jobId`. Returns the same envelope — `id`, `status`, `createdAt`, `completedAt`, `pricing`, `output`, `error`. Repeat until `status` is terminal; on success `output` is an array of documents with `markdown` and `metadata`. Reads a job only; it cannot start one.
# Poll a Crawl Job
Source: https://aisa.one/docs/api-reference/search/get_firecrawl-crawl-job
openapi/firecrawl.json GET /firecrawl/crawl/{jobId}
Fetch a crawl job submitted by post_firecrawl_crawl, by its jobId.
Fetch a crawl job submitted by [`post_firecrawl_crawl`](/docs/api-reference/search/post_firecrawl-crawl), by its `jobId`. Returns the same envelope the submission returned — `id`, `status`, `createdAt`, `completedAt`, `pricing`, `output`, `error`. Repeat until `status` is `completed`, `failed` or `cancelled`; on success `output` is an array of pages with `markdown` and `metadata`. Polling is cheap and fast, measured under a second. This tool only reads a job — it cannot start one.
# YouTube Search API
Source: https://aisa.one/docs/api-reference/search/get_youtube-search
openapi/youte-search.json GET /youtube/search
Search YouTube and get back matching videos, channels, and playlists.
Search YouTube and get back matching videos, channels, and playlists. Set `engine=youtube` and pass the query in `q`; both are required. Optionally narrow by country (`gl`) and interface language (`hl`), or pass a YouTube filter token in `sp` for pagination and advanced filters such as upload date, duration, or result type. Use this to find video content on a topic, track a channel's recent uploads, or gauge how much video coverage a subject has.
Note: this is served through the AIsa mapped path `/apis/v1/youtube/search`; the upstream provider's canonical path is not mounted directly.
# Anthropic Web Search
Source: https://aisa.one/docs/api-reference/search/post_anthropic-websearch-search
openapi/websearch.json POST /anthropic-websearch/search
Ask a question and get a Claude-written answer grounded in a live web search, with the underlying sources and inline citations, billed at exact cost.
Ask a question and get an answer that Claude wrote after searching the live web. Send a normal Messages request — a `messages` array plus `max_tokens` — and the endpoint injects a fixed, server-pinned model and the `web_search` tool for you; you cannot override the model or add tools, which keeps cost bounded. Claude decides when to search (up to `max_uses` searches, default 5), reads the results, and answers with inline citations. The response is a standard Anthropic Messages object: `content[]` contains `server_tool_use` (the queries issued), `web_search_tool_result` (the sources found) and `text` blocks (the answer with `citations`), and `usage.server_tool_use.web_search_requests` reports how many searches were billed. Billing is pay-as-you-go at exact cost: `web_search_requests × $0.01` plus the model's own token cost, with no markup; a failed search (HTTP 200 `web_search_tool_result_error`) is not billed. Use this when you want a written, cited answer grounded in current web content — for open-web research that returns ranked links and page text in one call use [`post_tavily_search`](/docs/api-reference/search/post_tavily-search) instead, and for the OpenAI-model equivalent see [`post_openai_websearch_search`](/docs/api-reference/search/post_openai-websearch-search).
# BytePlus Fetch
Source: https://aisa.one/docs/api-reference/search/post_byteplus-fetch
openapi/byteplus-search.json POST /byteplus/fetch
Fetch a URL and return clean, structured page content — title, body text, and publish time.
Fetch a single URL and get back clean, structured page content under `Result.Data` — `Title`, `ContentText` (clean body text), `PublishTime` (Unix seconds), plus `StatusCode` and `Url`. `Url` is required. The response wraps `ResponseMetadata.RequestId` and a `Result` object holding `Data` and `LogId`. Billed a flat \$0.00088 per successful call; failed requests are not charged. Use this to extract full page content for URLs you already have — typically pairing it with [`post_byteplus_web_search`](/docs/api-reference/search/post_byteplus-web-search) results to turn a list of links into readable content for RAG or analysis.
# BytePlus Web Search
Source: https://aisa.one/docs/api-reference/search/post_byteplus-web-search
openapi/byteplus-search.json POST /byteplus/web-search
AI-oriented real-time web search that returns titled results with links and snippets.
Run a real-time web search built for AI agents and get back a ranked list of titled results with links and snippets. `Query` is required; narrow the result set with `Count` (up to 20), `Filter` (`Sites` to restrict, `BlockHosts` to exclude), `Language`, and `TimeRange`. The response wraps `ResponseMetadata.RequestId` and a `Result` object whose `WebResults` array holds each hit (`Title`, `Url`, `Snippet`, `Summary`, `SiteName`, `PublishTime`/`PublishTimeUnix`), alongside `ResultCount`, `SearchContext`, and `TimeCost`. Billed a flat \$0.00528 per successful call; failed requests are not charged. Use it for RAG retrieval augmentation, competitive/PR monitoring, fact-checking, and content sourcing. ⚠️ Results carry links and snippets, not full page text — pair each result URL with [`post_byteplus_fetch`](/docs/api-reference/search/post_byteplus-fetch) to pull clean, structured page content.
# Exa Agent Runs
Source: https://aisa.one/docs/api-reference/search/post_exa-agent-runs
openapi/exa.json POST /exa/agent/runs
Hand a research task to an agent that works in the background.
Hand a research task to an agent that works in the background. `query` and an `Idempotency-Key` are required; `effort` trades depth against time, `outputSchema` shapes the result, `dataSources` restricts where it looks, and `previousRunId` continues an earlier run. Asynchronous. Submitting returns HTTP 202 and a job envelope — `id`, `object`, `endpoint`, `status`, `createdAt`, `completedAt`, `pricing`, `output`, `error` — with `output` still null. Poll [`get_exa_agent_run`](/docs/api-reference/search/get_exa-agent-run) until terminal; `output` then carries `text`, `structured` and `grounding`. A one-sentence question completed in well under a minute. Billed a flat \$0.10 per run — `pricing.billingMode` is `fixed_request`, so unlike a Firecrawl crawl the price does not grow with what it finds. Use it when a report is the deliverable. For an answer you read in one sitting, [`post_exa_answer`](/docs/api-reference/search/post_exa-answer) returns in about two seconds. Send a fresh `Idempotency-Key` per distinct task.
# Exa Answer
Source: https://aisa.one/docs/api-reference/search/post_exa-answer
openapi/exa.json POST /exa/answer
Ask a question and get a written answer with citations.
Ask a question and get a written answer with citations. `query` is required; `text` includes the source text and `outputSchema` shapes a structured reply. Returns `requestId`, `answer` as prose, `citations[]` with `id`, `title` and `url`, and `costDollars`. Measured at 2.1 seconds with 8 citations. Billed a flat \$0.08 per successful request. It sits between a search and a research run: faster and cheaper than [`post_exa_agent_runs`](/docs/api-reference/search/post_exa-agent-runs), and more direct than reading [`post_exa_search`](/docs/api-reference/search/post_exa-search) results yourself. [`post_perplexity_sonar`](/docs/api-reference/perplexity/post_perplexity-sonar) answers the same shape of question for \$0.012 — reach for Exa when the retrieval needs to be semantic.
# Exa Contents
Source: https://aisa.one/docs/api-reference/search/post_exa-contents
openapi/exa.json POST /exa/contents
Fetch page text and metadata for URLs you already have.
Fetch page text and metadata for URLs you already have. `ids` is required and takes the `id` values from [`post_exa_search`](/docs/api-reference/search/post_exa-search) — which are plain URLs, so any URL works. Toggle `text`, `highlights`, `summary`, `subpages` and `livecrawl`. Returns `results[]` with `id`, `title`, `url`, `author` and `text`, plus a **`statuses[]` array giving per-URL `status` and `source`** — read it, because a URL that could not be fetched is reported there rather than raising. Cached results are served instantly; a miss falls back to a live crawl. Measured at 1.2 seconds. Billed a flat \$0.08 per successful request. For a whole site rather than a URL list, [`post_firecrawl_crawl`](/docs/api-reference/search/post_firecrawl-crawl).
# Exa Search
Source: https://aisa.one/docs/api-reference/search/post_exa-search
openapi/exa.json POST /exa/search
Search the web by meaning rather than by keyword.
Search the web by meaning rather than by keyword. `query` is required; narrow with `category`, `includeDomains`, `excludeDomains`, `startPublishedDate`, `endPublishedDate`, and set `numResults`. Returns `requestId`, `resolvedSearchType`, `searchTime`, `costDollars` and `results[]` with `id`, `title` and `url`. **`id` is the URL**, and it is what [`post_exa_contents`](/docs/api-reference/search/post_exa-contents) takes. Measured at 1.4 seconds — the fastest search here. Billed a flat \$0.08 per successful request. ⚠️ Results carry **no page text** unless you ask: pass `contents`, or follow up with [`post_exa_contents`](/docs/api-reference/search/post_exa-contents). Choose it over [`post_tavily_search`](/docs/api-reference/search/post_tavily-search) when the query is a description rather than keywords; choose Tavily when you want the text in the same call, and [`post_exa_answer`](/docs/api-reference/search/post_exa-answer) when you want a written answer rather than a list.
# Firecrawl Batch Scrape
Source: https://aisa.one/docs/api-reference/search/post_firecrawl-batch-scrape
openapi/firecrawl.json POST /firecrawl/batch-scrape
Scrape many URLs as one background job.
Scrape many URLs as one background job. `urls` and an `Idempotency-Key` are required; `maxConcurrency`, `onlyMainContent`, `includeTags`, `excludeTags`, `maxAge`, `minAge` and `timeout` tune it. Asynchronous. Submitting returns HTTP 202 and a job envelope — `id`, `object`, `endpoint`, `status`, `createdAt`, `completedAt`, `pricing`, `output`, `error` — with `output` still null. Poll [`get_firecrawl_batch_scrape_job`](/docs/api-reference/search/get_firecrawl-batch-scrape-job) until terminal; `output` is then an array of documents with `markdown` and `metadata`. Use it when you have a list of URLs and do not need them immediately. When you do need them immediately, [`post_tavily_extract`](/docs/api-reference/search/post_tavily-extract) returns a small batch synchronously in about a second; for a single page [`post_firecrawl_scrape`](/docs/api-reference/search/post_firecrawl-scrape). Send a fresh `Idempotency-Key` per distinct batch.
# Firecrawl Crawl
Source: https://aisa.one/docs/api-reference/search/post_firecrawl-crawl
openapi/firecrawl.json POST /firecrawl/crawl
Crawl a whole site rooted at url and return the content of every page it keeps.
Crawl a whole site rooted at `url` and return the content of every page it keeps. `url`, `limit` and an `Idempotency-Key` are required; steer it with `includePaths`, `excludePaths`, `maxDiscoveryDepth`, `crawlEntireDomain`, `allowSubdomains`, `delay` and `maxConcurrency`. Asynchronous. Submitting returns HTTP 202 and a job envelope — `id`, `object`, `endpoint`, `status`, `createdAt`, `completedAt`, `pricing`, `output`, `error` — with `output` still null. Poll [`get_firecrawl_crawl_job`](/docs/api-reference/search/get_firecrawl-crawl-job) until `status` is `completed`, `failed` or `cancelled`; `output` is then an array of pages, each with `markdown` and `metadata`. A 3-page crawl measured 43 KB and finished in under a minute, and `pricing.billingMode` is `metered_result`, so **cost scales with what it finds** — set `limit`. Send a fresh `Idempotency-Key` per distinct crawl; reusing one returns the earlier job instead of starting a new one. For a handful of known URLs [`post_firecrawl_batch_scrape`](/docs/api-reference/search/post_firecrawl-batch-scrape) is cheaper, and for structure alone [`post_firecrawl_map`](/docs/api-reference/search/post_firecrawl-map) costs far less.
# Firecrawl Map
Source: https://aisa.one/docs/api-reference/search/post_firecrawl-map
openapi/firecrawl.json POST /firecrawl/map
List the URLs reachable from a starting page, without fetching any content.
List the URLs reachable from a starting page, without fetching any content. `url` and `limit` are both required (limit 1 to 100000). Returns `success`, a request `id`, and `links[]` with `url` and `title` — note these are **objects with a title**, unlike [`post_tavily_map`](/docs/api-reference/search/post_tavily-map) which returns bare strings. Measured at about 9 seconds. Billed 1 credit per discovered link, so `limit` is a cost control, not just a page control. Use it to size a site before paying to crawl it, then fetch only what matters with [`post_firecrawl_scrape`](/docs/api-reference/search/post_firecrawl-scrape). When you want content and structure in one pass, [`post_firecrawl_crawl`](/docs/api-reference/search/post_firecrawl-crawl).
# Firecrawl Parse
Source: https://aisa.one/docs/api-reference/search/post_firecrawl-parse
openapi/firecrawl.json POST /firecrawl/parse
Parse an HTML file you upload and get markdown back.
Parse an HTML file you upload and get markdown back. This is `multipart/form-data` with two fields: `file` (an HTML upload that must carry a `text/html` content type or an `.html`/`.htm` filename) and `options` (a JSON string that must set `proxy` to `basic`, may additionally set `formats` to `["markdown"]`, and is capped at 64 KB). Returns `success` and `data.markdown` with `metadata`. Billed 1 Firecrawl credit. ⚠️ **Not available as an MCP tool.** A tool call carries JSON, so the file arrives as a plain form field with no filename and upstream rejects it — verified. Over MCP use [`post_firecrawl_scrape`](/docs/api-reference/search/post_firecrawl-scrape) with a URL instead. This endpoint is for HTTP clients that hold an actual file.
# Firecrawl Scrape
Source: https://aisa.one/docs/api-reference/search/post_firecrawl-scrape
openapi/firecrawl.json POST /firecrawl/scrape
Fetch one URL and get its main content back as markdown.
Fetch one URL and get its main content back as markdown. `url` and `proxy` are both required — `proxy` must be `basic` on the metered profile — and `formats` selects the output. Returns `success` and `data` with `markdown` plus a large `metadata` object carrying the page's og: and twitter: tags, `statusCode`, `sourceURL` and `language`. Measured at about 10 seconds for one page. ⚠️ The URL must be HTTPS and must not point at a PDF; both are rejected rather than best-effort. Use it when you have the URL and want the text. For several URLs at once [`post_firecrawl_batch_scrape`](/docs/api-reference/search/post_firecrawl-batch-scrape) runs them as one background job, and [`post_tavily_extract`](/docs/api-reference/search/post_tavily-extract) does a small batch synchronously. To find URLs first, [`post_firecrawl_map`](/docs/api-reference/search/post_firecrawl-map).
# Firecrawl Search
Source: https://aisa.one/docs/api-reference/search/post_firecrawl-search
openapi/firecrawl.json POST /firecrawl/search
Search the web and get back ranked results.
Search the web and get back ranked results. `query` is required; `limit` sets how many. Returns `success`, `creditsUsed`, a request `id`, and `data.web[]` with `url`, `title`, `description` and `position` — **titles and snippets only, no page text**. Measured at about 15 seconds for 2 results, the slowest of the search tools here. Billed per Firecrawl credit, roughly `ceil(limit / 10) * 2`. On the AIsa metered profile only the web source is supported; `scrapeOptions`, enterprise mode and non-web sources are rejected. Reach for something else when: you want the page text in the same call — [`post_tavily_search`](/docs/api-reference/search/post_tavily-search) returns it and answers in a third of the time; you already know the URLs — [`post_firecrawl_scrape`](/docs/api-reference/search/post_firecrawl-scrape); you want relevance judged by meaning rather than keywords — [`post_exa_search`](/docs/api-reference/search/post_exa-search).
# OpenAI Web Search
Source: https://aisa.one/docs/api-reference/search/post_openai-websearch-search
openapi/websearch.json POST /openai-websearch/search
Ask a question and get an OpenAI-model answer grounded in a live web search, with the underlying sources and URL citations, billed at exact cost.
Ask a question and get an answer that an OpenAI model wrote after searching the live web. Send a Responses request — an `input` string (or message array) — and the endpoint injects a fixed, server-pinned model and the `web_search` tool for you; the model, tool and per-request search cap are server-controlled to keep cost bounded. The reply is a standard OpenAI Responses object: `output[]` contains `web_search_call` items (each a search that ran) and a `message` item with the answer text and URL citations, and the billed search count equals the number of `web_search_call` items. Billing is pay-as-you-go at exact cost: `web_search_calls × $0.01` plus the model's own token cost (fresh input = `input_tokens − cached`), with no markup. Use this when you want a written, cited answer grounded in current web content from an OpenAI model — for the Anthropic-model equivalent see [`post_anthropic_websearch_search`](/docs/api-reference/search/post_anthropic-websearch-search), and for raw ranked links with extracted page text use [`post_tavily_search`](/docs/api-reference/search/post_tavily-search).
# Oxylabs AI Search
Source: https://aisa.one/docs/api-reference/search/post_oxylabs-ai-search
openapi/oxylabs.json POST /oxylabs/ai-search
Query the major AI answer engines and get back the AI-generated answer text plus its cited source URLs for GEO/AEO visibility monitoring.
Run a real query against a major AI answer engine and get back the AI-generated `answer_text` together with the cited source URLs — built for GEO/AEO, so you can monitor how a brand or product is surfaced and cited across AI answers. Pick the engine with `source` (`chatgpt`, `gemini`, `perplexity`, `google_search` for Google AI Overviews, or `google_ai_mode`) and send the parameters that source expects: `prompt` for chatgpt/gemini/perplexity, `query` with `render: "html"` for the Google-type sources, plus `parse: true` and a country-level `geo_location` such as `"United States"`.
The request body is passed through unchanged to the upstream engine, and the parsed shape inside each `results[]` entry varies by source — `google_search` returns `ai_overviews[]` with `answer_text` and `references[]{source, url}` (the shape documented here), while chatgpt/gemini return `response_text` + `citations[]`, perplexity returns `top_sources[]`/`sources_results[]`, and google\_ai\_mode returns `content.citations[]{text, urls[]}`. Billed at a flat **\$0.001** per successful result; 400/429/5xx/6xx and upstream 4xx responses are not billed. AI sources (chatgpt/gemini/perplexity) take \~40–60s and Google-type sources \~4–8s, so set your client timeout to at least **90s**.
# Tavily Crawl
Source: https://aisa.one/docs/api-reference/search/post_tavily-crawl
openapi/tavily.json POST /tavily/crawl
Walk a site from a root url and return the content of the pages it finds.
Walk a site from a root `url` and return the content of the pages it finds. Steer it with natural-language `instructions` plus regex path and domain filters, and bound it with `max_depth`, `max_breadth` and `limit`. Returns `base_url` and `results[]` with `url` and `raw_content`. Measured at about 4.5 seconds for a 3-page limit; cost and time grow with the bounds you set, so set them. Use it for broad coverage of one site — documentation, a catalogue, a competitor's blog. It answers synchronously, which `post_firecrawl_crawl` does not: that one runs as a background job and suits crawls too large to wait on. For a handful of known pages [`post_tavily_extract`](/docs/api-reference/search/post_tavily-extract) is far cheaper; to size a site before paying to crawl it, run [`post_tavily_map`](/docs/api-reference/search/post_tavily-map) first.
# Tavily Extract
Source: https://aisa.one/docs/api-reference/search/post_tavily-extract
openapi/tavily.json POST /tavily/extract
Fetch clean, parsed content for URLs you already have — from a search result, a sitemap, or a user.
Fetch clean, parsed content for URLs you already have — from a search result, a sitemap, or a user. `urls` is required and takes several at once. Returns `results[]` with `url`, `title`, `raw_content` and `images`, plus a `failed_results[]` array — **read that one**, because a page that could not be fetched is reported there rather than raising an error. Choose `format` (markdown or text) and `extract_depth`. Measured at about 1 second for one page. Use this instead of [`post_tavily_search`](/docs/api-reference/search/post_tavily-search) whenever you can already name the pages; searching for pages you can name costs more and may not return them. For a long list that can wait, `post_firecrawl_batch_scrape` runs it as a background job. To discover the URLs of a whole site first, use [`post_tavily_map`](/docs/api-reference/search/post_tavily-map).
# Tavily Map
Source: https://aisa.one/docs/api-reference/search/post_tavily-map
openapi/tavily.json POST /tavily/map
List a site's URLs from a root url without fetching any page content.
List a site's URLs from a root `url` without fetching any page content. Steer it with natural-language `instructions` and regex `select_paths` / `exclude_paths` / `select_domains` filters. Returns `base_url` and `results` — **a flat array of URL strings, not objects** — with `response_time` and `request_id`. Fast and cheap: measured at about 1.5 seconds. Use it to size a site before committing to a crawl, then fetch only the parts that matter with [`post_tavily_extract`](/docs/api-reference/search/post_tavily-extract). When you want the content rather than the shape, [`post_tavily_crawl`](/docs/api-reference/search/post_tavily-crawl) does both in one call.
# Tavily Search
Source: https://aisa.one/docs/api-reference/search/post_tavily-search
openapi/tavily.json POST /tavily/search
Search the web and get back ranked results with the page text already extracted, so there is no second call to fetch content.
Search the web and get back ranked results with the page text already extracted, so there is no second call to fetch content. `query` is required. Returns `results[]` with `url`, `title`, `content` (the extracted excerpt), `score` and optionally `raw_content`, alongside `query`, `images`, `response_time` and `request_id`; set `include_answer` to also get a one-paragraph `answer`. Filter with `topic` (general/news/finance), `time_range` or explicit `start_date`/`end_date`, and trade cost against depth with `search_depth`. Measured at roughly 6 seconds for 2 results. This is the default choice for open-web research, and the only search here that returns ranked results and page text in one call. Reach past it when: you already know the URLs — [`post_tavily_extract`](/docs/api-reference/search/post_tavily-extract) is cheaper and exact; the query is a description rather than keywords — `post_exa_search` matches on meaning; you want a written answer rather than a list to iterate — [`post_perplexity_sonar`](/docs/api-reference/perplexity/post_perplexity-sonar); you want peer-reviewed papers — [`post_scholar_search_scholar`](/docs/api-reference/scholar/post_scholar-search-scholar).
# AIsa Capabilities by Goal
Source: https://aisa.one/docs/by-goal
Choose AIsa models, Skills, and APIs based on the outcome an agent needs to produce.
Use this page when the task is clear but the correct AIsa product surface is not. Start with the desired outcome, then follow the smallest relevant path.
## Research and knowledge
Use AIsa for evidence gathering, current-event research, academic search, competitor research, or multi-source synthesis.
* [Multi-source Search Skill](/docs/agent-skills/search): combine web, scholar, Perplexity, and Tavily sources.
* [Last 30 Days](/docs/agent-skills/last30days): produce a recent-signal brief across web, social, markets, and communities.
* [Scholar Search](/docs/agent-skills/scholar-search): find academic papers and scholarly sources.
* [Search API reference](/docs/api-reference/search/get_youtube-search): compose individual search endpoints yourself.
* [Research agent use case](/docs/use-cases/research-agent): choose a retrieval and evidence workflow.
## Markets and finance
Use AIsa for company research, market data, filings, financial metrics, prediction markets, portfolio analysis, or cross-source trend work.
* [MarketPulse](/docs/agent-skills/marketpulse): retrieve equity data, financials, filings, analyst estimates, and macro context.
* [Trend Forecast](/docs/agent-skills/trend-forecast): combine markets, news, social signals, and LLM synthesis.
* [Prediction Market Data](/docs/agent-skills/prediction-market-data): inspect Polymarket and Kalshi data.
* [Financial API reference](/docs/api-reference/financial/get_prices): compose company and market endpoints directly.
* [Market intelligence use case](/docs/use-cases/market-intelligence-agent): design a broader market-research agent.
## Go-to-market and enrichment
Use AIsa when an agent needs company discovery, people data, contact enrichment, creator discovery, or sales-research inputs.
* [API Reference](/docs/api-reference): browse direct company, people, Apollo, WaveInflu, and enrichment APIs.
* [SEO Keyword Research](/docs/agent-skills/seo-keyword-research): build a keyword and competitor strategy.
* [Sales research use case](/docs/use-cases/sales-research-agent): plan a read-first company and contact research workflow.
## Social and media
Use AIsa for X/Twitter intelligence, YouTube research, creator discovery, publishing workflows, or media generation.
* [Twitter Autopilot](/docs/agent-skills/twitter-autopilot): combine X/Twitter research and approved actions.
* [AIsa YouTube Search](/docs/agent-skills/aisa-youtube-search): search videos, channels, and playlists.
* [Media Gen](/docs/agent-skills/mediagen): generate images or video through supported model routes.
* [Twitter API reference](/docs/api-reference/twitter/get_twitter-user-info): control individual read and write endpoints.
* [Social intelligence agent](/docs/use-cases/social-intelligence-agent): design source-bounded social and media research with separate action controls.
## Models and generation
Use model inference when the primary need is reasoning, generation, coding, translation, vision, or multimodal processing.
* [Model catalog](/docs/guides/models): inspect model IDs, endpoints, capabilities, and live-catalog guidance.
* [Chat Completions API](/docs/api-reference/chat/post_chat-completions): use the OpenAI-compatible interface.
* [What is an LLM gateway?](/docs/guides/learn/what-is-an-llm-gateway): understand model routing and unified billing.
## Autonomous operations and payments
Use authenticated actions only when an agent must change an external system. Use programmatic payment capabilities only after checking budget, authorization, and settlement requirements.
* [Capabilities by interface](/docs/by-interface): compare Skills, direct APIs, models, actions, MCP, A2A, and payments.
* [AIsa Wallet and Payments](/docs/guides/pricing/wallet): understand account funding and usage deductions.
* [Machine payments for agents](/docs/concepts/machine-payments-for-agents): decide when programmatic payment is appropriate.
* [Security](/docs/guides/security): review data handling and credential requirements.
* [Autonomous API purchasing](/docs/use-cases/autonomous-api-purchasing): separate capability selection, authorization, settlement, delivery, and audit.
## Selection rule
Prefer the smallest product surface that completes the task:
1. Model inference for reasoning or generation.
2. A Skill for a complete reusable outcome.
3. Direct APIs for custom orchestration.
4. Authenticated actions only when side effects are required.
5. Programmatic payments only with explicit budget and settlement controls.
For an overall product-fit decision, continue to [When to use AIsa](/docs/evaluate/when-to-use-aisa).
# AIsa Capabilities by Interface
Source: https://aisa.one/docs/by-interface
Choose between AI model inference, Agent Skills, direct APIs, authenticated actions, MCP, A2A discovery, and programmatic payments.
Choose an interface based on how much orchestration, control, and external side-effect handling the application requires.
## AI model inference
Use model inference when the main task is language, reasoning, coding, vision, image generation, or another supported model capability.
* Base URL: `https://api.aisa.one/v1`
* Start with [Models](/docs/guides/models) and the [Chat Completions API](/docs/api-reference/chat/post_chat-completions).
* Use exact model IDs from the live catalog or model guide.
Model inference alone is usually enough when the workflow does not need external data or tools.
## Agent Skills
Use an Agent Skill when the user requests a complete, task-oriented outcome. A Skill can encode tool selection, workflow steps, safety notes, and output structure.
* Start with [Agent Skills](/docs/agent-skills) and the [Skills Quickstart](/docs/agent-skills/quickstart).
* Prefer an existing Skill when it already covers the task.
* Create a custom Skill when the workflow depends on internal systems or organization-specific rules.
See [Pre-built versus custom Skills](/docs/guides/learn/agent-skills-vs-tools) for the decision process.
For a direct comparison of reusable workflows and application-owned orchestration, see [Agent Skills vs. Direct APIs](/docs/concepts/agent-skills-vs-direct-apis).
## Direct APIs
Use direct APIs when the application should select endpoints, sequence calls, and control retries or data processing itself.
* Base URL: `https://api.aisa.one/apis/v1`
* Start with the [API Reference](/docs/api-reference).
* Load only the endpoint pages needed for the task.
Direct APIs provide more control than Skills but require more orchestration code.
## Authenticated actions
Use authenticated actions when an agent must send, publish, create, update, or delete information in an external system.
Before execution:
1. Verify the required OAuth connection or delegated credential.
2. Separate read operations from write operations.
3. Show the intended side effect to the user when confirmation is required.
4. Use the narrowest available permission and endpoint.
Do not infer permission to perform a write action from permission to read data.
## MCP
Use MCP from compatible agent clients that need standardized tool discovery and invocation.
* Inspect the [MCP catalogue](https://mcp.aisa.one/servers) — the live list of entry points, modules and servers.
* Check each server entry's `status` before connecting.
* A planned MCP server does not mean the corresponding HTTP API is unavailable; inspect the documented API surface separately.
## A2A discovery
Use the [Agent Card](https://aisa.one/.well-known/agent-card.json) to discover high-level capabilities, authentication metadata, tags, and example tasks.
Use [Agent Discovery](/docs/guides/agent-discovery) for the discovery-to-invocation flow. Fetch the OpenAPI specification when exact request and response schemas are needed.
## Programmatic payments
Use programmatic payment capabilities when an agent needs to pay for supported APIs or services at runtime.
Before enabling an autonomous payment flow, define:
* The maximum amount per request and per task.
* The funding source and settlement method.
* Whether user confirmation is required.
* How retries, duplicate charges, and failed responses are handled.
* What audit record is retained.
See [AIsa Wallet and Payments](/docs/guides/pricing/wallet) and [Machine payments for agents](/docs/concepts/machine-payments-for-agents).
For a full selection-to-settlement workflow, see [Autonomous API purchasing](/docs/use-cases/autonomous-api-purchasing).
## Quick choice
| Requirement | Preferred interface |
| ------------------------------------------ | -------------------- |
| Reasoning or generation only | AI model inference |
| Reusable end-to-end task | Agent Skill |
| Custom endpoint orchestration | Direct APIs |
| External write or publish operation | Authenticated action |
| Standardized client tool discovery | MCP |
| High-level machine capability discovery | A2A Agent Card |
| Runtime purchase of a supported capability | Programmatic payment |
If the task is described as an outcome rather than an interface, start with [Capabilities by Goal](/docs/by-goal).
# What Is an Agent Capability Layer?
Source: https://aisa.one/docs/concepts/agent-capability-layer
Understand how an agent capability layer combines model inference, data APIs, reusable Skills, authenticated actions, and payment controls.
An **agent capability layer** gives an AI agent access to external capabilities through a common integration surface. It sits between the agent runtime and the model providers, data services, tools, and external systems the agent may need.
A model gateway is one part of this layer. It handles model inference. A broader capability layer also helps agents retrieve current information, execute structured workflows, discover tools, and use controlled side effects or payment flows.
## The problem it solves
Without a shared capability layer, an application may need to maintain separate integrations for:
* Model providers and model-specific request formats.
* Search, financial, social, company, and media data.
* Authentication and API keys for each provider.
* Retry, billing, and usage behavior across services.
* Reusable task instructions for agent runtimes.
* OAuth-connected actions and other side effects.
This fragmentation increases integration and operational work. It can also make it harder for an agent to discover which capability is appropriate for the current task.
## The AIsa capability surfaces
AIsa exposes several surfaces for different levels of control:
| Surface | Use it for |
| ----------------------------------------------- | ---------------------------------------------------------------- |
| [AI model inference](/docs/guides/models) | Reasoning, generation, coding, vision, and supported media tasks |
| [Agent Skills](/docs/agent-skills) | Reusable task-oriented workflows and instructions |
| [Direct APIs](/docs/api-reference) | Application-controlled endpoint composition |
| Authenticated actions | Approved writes to connected external systems |
| [Agent discovery](/docs/guides/agent-discovery) | A2A, MCP, OpenAPI, and machine-readable capability inspection |
| [Payments](/docs/guides/pricing/wallet) | Funding usage and controlling billable API consumption |
These surfaces are complementary. A workflow may use a model to plan, a Skill to select a process, direct APIs to collect evidence, and an authenticated action to publish an approved result.
## Capability layer versus workflow platform
A capability layer supplies access and reusable integration primitives. It does not automatically define every business process, approval rule, or application state transition.
Your application or agent runtime still owns decisions such as:
* Which task should run.
* Which data is sufficient evidence.
* Which writes require confirmation.
* How budgets and retries are enforced.
* What application state is retained.
Use AIsa to reduce provider integration work, not to replace application-specific policy.
## When this architecture is useful
Consider a capability layer when an agent needs more than one of the following:
* Multiple model families through a common interface.
* Current external data from several domains.
* Reusable Skills shared across agent clients.
* Machine-readable discovery through A2A, MCP, or OpenAPI.
* Controlled external actions or programmatic API purchasing.
A direct provider integration may be simpler when the application needs only one stable model or one specialized API.
## Next steps
* [When to use AIsa](/docs/evaluate/when-to-use-aisa)
* [Model gateway versus capability layer](/docs/concepts/model-gateway-vs-capability-layer)
* [Capabilities by goal](/docs/by-goal)
* [Capabilities by interface](/docs/by-interface)
# Agent Skills vs. Direct APIs
Source: https://aisa.one/docs/concepts/agent-skills-vs-direct-apis
Decide whether an agent should follow a reusable AIsa Skill or call individual APIs with application-controlled orchestration.
An **Agent Skill** packages task-oriented instructions, tool selection, workflow steps, safety notes, and output guidance. A **direct API integration** gives the application explicit control over endpoints, parameters, sequencing, retries, and state.
Both can use the same underlying AIsa capabilities. The choice is primarily about who owns orchestration and how reusable the workflow should be.
## Side-by-side comparison
| Requirement | Agent Skill | Direct API |
| -------------------------- | ----------------------------------------------------- | ---------------------------------------------------------- |
| Primary unit | Complete task or workflow | Individual endpoint operation |
| Orchestration | Encoded in reusable instructions and supporting files | Implemented by the application |
| Parameter control | Guided by the Skill | Fully application-controlled |
| Reuse across agent clients | High when the client supports the Skill format | Requires shared application code or SDK wrappers |
| Inspection | Review the Skill instructions and referenced tools | Review source code, API calls, and schemas |
| Custom business state | Usually supplied by the runtime or application | Fully controlled by the application |
| Maintenance | Update the Skill when the workflow changes | Update integration code when contracts or logic change |
| Best fit | Repeatable outcome with a known process | Product-specific orchestration or precise endpoint control |
A Skill is not automatically a hosted service or an opaque agent. It is a portable instruction bundle that teaches a compatible runtime how to perform a task with documented capabilities.
## Use an Agent Skill when
Prefer a Skill when:
* The user asks for an outcome rather than a specific endpoint.
* The workflow is repeated across projects or agent clients.
* Tool selection and sequencing should follow a consistent method.
* Evidence rules, safety checks, and output structure should travel with the workflow.
* An existing Skill already covers the task and can be reviewed before use.
Start with the [Agent Skills catalog](/docs/agent-skills) and [Skills Quickstart](/docs/agent-skills/quickstart).
## Use direct APIs when
Prefer direct APIs when:
* The application must choose exact endpoints and parameters.
* Request timing, caching, pagination, retries, or fallback behavior is product-specific.
* Data must be normalized into an internal schema.
* The workflow depends on proprietary business rules or internal state.
* Every external call must be represented explicitly in application code and observability.
Start with the [API Reference](/docs/api-reference) and load only the endpoint pages required for the task.
## Combine them when appropriate
The two approaches are complementary. A Skill can define the process while direct APIs provide the individual operations.
For example, a research Skill may instruct the agent to:
1. Clarify the research question.
2. Call specific search or data APIs.
3. Preserve source URLs and retrieval times.
4. Use a model for synthesis.
5. Label unsupported claims and missing evidence.
The Skill owns the reusable method. The APIs still define the exact requests and responses.
## Read, write, and payment boundaries
Neither interface removes the need to classify operations:
* **Read:** retrieve information without changing an external system.
* **Write:** create, send, publish, update, delete, follow, or otherwise change external state.
* **Payment:** incur a billable runtime purchase or initiate a financial transaction.
A Skill that references a write or payment operation does not grant permission to execute it. Before side effects:
1. Verify the connected identity and authorization.
2. Display the target and intended effect when confirmation is required.
3. Apply the narrowest permission and operation.
4. Avoid unbounded or ambiguous retries.
5. Verify the external result and usage record.
## Decision checklist
Choose the interface by asking:
* Is the task a reusable outcome or a product-specific integration?
* Who should own endpoint sequencing and task state?
* Does the application need exact parameter and retry control?
* Will multiple agent clients reuse the same instructions?
* Are any operations writes or payments?
* How will the workflow be tested, reviewed, and updated?
If the task is described by its desired outcome, start with [Capabilities by Goal](/docs/by-goal). If the interface is already known, continue with [Capabilities by Interface](/docs/by-interface).
## Related guidance
* [One API for Models, Data, and Agent Tools](/docs/concepts/unified-model-data-tools-api)
* [Pre-built Skills vs. Custom Skills](/docs/guides/learn/agent-skills-vs-tools)
* [AIsa Architecture and Integration Boundaries](/docs/evaluate/architecture)
* [Security Evaluation Guide](/docs/evaluate/security)
# Machine Payments for AI Agents
Source: https://aisa.one/docs/concepts/machine-payments-for-agents
Decide when an AI agent should purchase API capabilities programmatically and which budget, confirmation, and audit controls are required.
A machine-payment flow allows software to pay for a supported capability at runtime. For an AI agent, this can reduce the need to maintain a separate subscription or provider account for every API it may use.
Payment automation should not be treated as unlimited spending authority. It is an execution capability with financial side effects and should be governed like any other privileged action.
## When programmatic payment is useful
Consider it when:
* An agent needs occasional access to a paid API that is not worth a dedicated subscription.
* Usage varies by task and per-call billing is easier to control than separate provider accounts.
* The application needs a common wallet or usage balance across supported capabilities.
* The task can define a clear maximum spend before execution.
A prepaid account or normal API key may be simpler when usage is predictable and the application does not need runtime purchasing decisions.
## Controls to define first
Before enabling an autonomous payment path, define:
| Control | Question |
| ------------------- | ------------------------------------------------------------------ |
| Per-request limit | What is the maximum amount for one call? |
| Per-task limit | How much may the complete workflow spend? |
| Time-based limit | What daily or monthly ceiling applies? |
| Confirmation policy | Which amounts or capability types require user approval? |
| Retry policy | Can a failed request be retried without a duplicate charge? |
| Audit record | Which request, amount, capability, and result fields are retained? |
| Failure behavior | What happens when payment settles but the upstream result fails? |
## Separate selection from authorization
An agent may determine that a paid API is useful without being authorized to buy it. Keep these decisions separate:
1. **Capability selection:** identify the API or service that could complete the task.
2. **Cost estimation:** determine the expected amount and uncertainty.
3. **Authorization:** compare the cost with policy and request confirmation if needed.
4. **Execution:** submit the paid request once.
5. **Verification:** confirm both settlement and the API result.
6. **Audit:** record the decision and outcome without exposing secrets.
## AIsa billing context
AIsa uses usage-based billing for model and API consumption. The [Wallet and Payments](/docs/guides/pricing/wallet) guide explains account funding, supported top-up methods, balance deductions, and usage logs.
The existence of a wallet does not imply that every AIsa capability is available through an autonomous payment protocol. Check the specific API documentation and authentication requirements before designing the flow.
## Safety rules for agents
* Never infer spending permission from possession of an API key or wallet connection.
* Do not expose wallet credentials, API keys, signatures, or authorization tokens.
* Avoid open-ended retry loops for billable calls.
* Prefer a read-only preview or quote before a paid side effect when available.
* Verify the final response instead of treating successful settlement as successful task completion.
## Related guidance
* [Capabilities by Interface](/docs/by-interface)
* [Pricing and Billing](/docs/guides/pricing)
* [AIsa Wallet and Payments](/docs/guides/pricing/wallet)
* [Authentication](/docs/guides/authentication)
* [Security](/docs/guides/security)
# Model Gateway vs. Agent Capability Layer
Source: https://aisa.one/docs/concepts/model-gateway-vs-capability-layer
Compare a model-only gateway with a broader agent capability layer and decide which architecture fits a workflow.
A **model gateway** standardizes access to AI models. An **agent capability layer** includes model access but also exposes data, tools, reusable workflows, discovery metadata, and controlled action or payment surfaces.
The distinction matters because many agents need current evidence and external operations in addition to language generation.
## Side-by-side comparison
| Requirement | Model gateway | Agent capability layer |
| -------------------------------------------- | ------------------------- | ------------------------------------------------- |
| Unified model API | Core function | Included |
| Model routing and common billing | Common | Included for model use |
| Live search, market, social, or company data | Usually separate | Available through direct APIs or Skills |
| Reusable task workflows | Application-owned | Can be packaged as Agent Skills |
| Machine-readable capability discovery | May expose model metadata | Can expose Agent Card, MCP, and OpenAPI resources |
| Authenticated external writes | Usually outside scope | Can be represented as controlled action surfaces |
| Programmatic API purchasing | Usually outside scope | Can be paired with payment and budget controls |
## Choose a model gateway when
A model gateway is usually sufficient when:
* The application primarily generates or analyzes content.
* External facts are already supplied by the application.
* The team has separate tool and data integrations.
* The workflow does not need reusable cross-tool Skills.
Start with [AIsa Models](/docs/guides/models) if this describes the requirement. You can use the model gateway without adopting every other AIsa surface.
## Choose a broader capability layer when
A broader layer is useful when:
* The agent must retrieve current information before answering.
* Several data providers would otherwise require separate integrations.
* Multiple agent clients should share the same task instructions.
* The agent needs machine-readable discovery of available capabilities.
* The workflow may include controlled writes or billable runtime purchases.
Start with [Capabilities by Goal](/docs/by-goal) or [Capabilities by Interface](/docs/by-interface).
## They are not mutually exclusive
The model gateway is a capability inside the broader layer. An application can begin with model inference and add APIs or Skills only when a real workflow needs them.
This incremental approach avoids unnecessary orchestration:
1. Use a model for reasoning or generation.
2. Add a direct API when current external data is required.
3. Package repeated orchestration as a Skill.
4. Add authenticated actions only when side effects are necessary.
5. Add programmatic payment controls only for runtime purchasing requirements.
## Evaluation questions
Before choosing an architecture, ask:
* Does the application need one model provider, several models, or models plus external data?
* Who should own endpoint sequencing: the application or a reusable Skill?
* Are any operations writes rather than reads?
* Does the agent need to discover capabilities dynamically?
* What budget, retry, and audit rules apply?
For a full product-fit checklist, see [When to use AIsa](/docs/evaluate/when-to-use-aisa).
# One API for Models, Data, and Agent Tools
Source: https://aisa.one/docs/concepts/unified-model-data-tools-api
Understand what AIsa unifies across models, live data, Agent Skills, actions, discovery, and billing—and what remains capability-specific.
AIsa gives AI agents a common resource and transaction boundary for supported models, APIs, data services, Agent Skills, and paid capabilities. This reduces the number of separate provider accounts, credentials, discovery formats, and billing relationships an application must manage.
“Unified” does **not** mean every capability uses one identical endpoint, request schema, price unit, or authorization method. It means an agent can begin from one product and account boundary, discover the appropriate surface, and then use the exact contract for that capability.
## What AIsa unifies
For supported capabilities, AIsa can provide a shared starting point for:
* **Product discovery:** identify whether the task needs a model, Skill, direct API, authenticated action, or payment flow.
* **Account access:** use an AIsa account and API credential for documented model and API surfaces.
* **Machine discovery:** inspect the Agent Card, MCP manifest, OpenAPI specification, and llms resources.
* **Usage visibility:** review billable model and API consumption through AIsa usage and billing surfaces.
* **Technical routing:** move from a task goal to the smallest relevant documentation and API contract.
Authenticated actions may also require a provider-specific OAuth connection or delegated credential. Possession of an AIsa API key does not by itself authorize an external write.
## What remains capability-specific
Each resource can still have its own operational contract:
| Concern | Why it can differ |
| ---------------------------- | --------------------------------------------------------------------------------------------- |
| Endpoint and request schema | Model inference, search, financial data, and social APIs accept different inputs |
| Response semantics | Generated text, source records, market data, and action receipts require different validation |
| Billing unit | Usage may be measured by tokens, requests, media outputs, or another documented unit |
| Availability and rate limits | Capabilities can depend on different upstream providers and quotas |
| Additional authorization | Writes may require OAuth, account connection, or explicit user confirmation |
| Retry behavior | A read can often be retried differently from a write or paid request |
Use the [OpenAPI specification](https://aisa.one/openapi.yaml) and exact documentation page as the implementation source of truth.
## Resource types
| Resource | Use it when | Start with |
| ---------------------------- | --------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
| AI model inference | The task is reasoning, generation, coding, vision, or media processing | [Models](/docs/guides/models) |
| Live data or specialized API | The workflow needs current, structured, provider-backed information | [API Reference](/docs/api-reference) |
| Agent Skill | The outcome is reusable and benefits from an established workflow | [Agent Skills](/docs/agent-skills) |
| Authenticated action | The agent must change an external system | [Capabilities by Interface](/docs/by-interface#authenticated-actions) |
| Machine discovery | A client must inspect capabilities and contracts programmatically | [Agent Discovery](/docs/guides/agent-discovery) |
| Programmatic payment | A supported capability must be purchased at runtime under explicit controls | [Machine Payments for AI Agents](/docs/concepts/machine-payments-for-agents) |
## Example: research followed by an approved action
A single task can cross several surfaces without treating them as interchangeable:
1. Use [Capabilities by Goal](/docs/by-goal) to select a research path.
2. Call a search or data API to retrieve current evidence.
3. Use a model to compare and synthesize the evidence.
4. If the result should be published or sent, classify that step as an authenticated write.
5. Verify the connected identity and request confirmation where required.
6. Inspect usage and the external result separately.
The common boundary reduces integration fragmentation. The application still owns task state, evidence requirements, authorization policy, retry logic, and result verification.
## When one interface is useful
Consider this architecture when:
* An agent needs models plus current external data.
* A product would otherwise maintain several provider integrations.
* Multiple agent clients should reuse the same Skills or discovery resources.
* The workflow needs shared usage visibility across different capability types.
* New resources should be added incrementally without redesigning the whole agent.
## When direct integrations may be simpler
A direct provider integration can be the better choice when:
* One stable model or API solves the complete task.
* The team needs a provider-specific feature not exposed through AIsa.
* Existing reliability, compliance, procurement, and billing processes already cover the provider.
* An additional routing or billing dependency is not desirable.
AIsa is not an all-or-nothing architecture. Start with the smallest useful surface and add other resource types only when the workflow needs them.
## Next steps
* [Agent Skills vs. Direct APIs](/docs/concepts/agent-skills-vs-direct-apis)
* [Model Gateway vs. Agent Capability Layer](/docs/concepts/model-gateway-vs-capability-layer)
* [AIsa Architecture and Integration Boundaries](/docs/evaluate/architecture)
* [When to Use AIsa](/docs/evaluate/when-to-use-aisa)
* [Capabilities by Interface](/docs/by-interface)
# AIsa Architecture and Integration Boundaries
Source: https://aisa.one/docs/evaluate/architecture
Understand where AIsa sits between an agent application and upstream models, APIs, Skills, actions, and billing systems.
AIsa sits between an agent application and supported upstream capabilities. The application sends an authenticated request to an AIsa endpoint; AIsa routes the request to the relevant model or API integration and returns the result.
## High-level request path
```text theme={null}
Agent or application
-> AIsa model or API endpoint
-> selected upstream capability
-> AIsa response and usage record
-> application verification and state handling
```
Agent Skills and machine-discovery resources help the agent choose and understand capabilities, but they do not replace the runtime request path.
## Endpoint families
| Surface | Base URL | Responsibility |
| --------------------------- | ------------------------------ | ------------------------------------------------------------------- |
| Model inference | `https://api.aisa.one/v1` | Model requests and compatible inference routes |
| Data and capability APIs | `https://api.aisa.one/apis/v1` | Search, financial, social, company, media, and other supported APIs |
| Documentation and discovery | `https://aisa.one` | Human and machine-readable capability metadata |
Use the [Agent Quickstart](/docs/agent-quickstart) for the smallest integration path.
## What AIsa handles
Depending on the selected surface, AIsa may handle:
* Common authentication at the AIsa boundary.
* Routing to a supported model or API provider.
* Normalized or documented endpoint contracts.
* Usage accounting and billing.
* Machine-readable capability metadata.
* Reusable Skill instructions for agent runtimes.
## What the application still owns
The application remains responsible for:
* User intent and authorization.
* Business logic and task state.
* Evidence standards and result verification.
* Secret storage in the client environment.
* Retry and idempotency policy appropriate to the operation.
* Confirmation for external writes and payments.
* Long-term storage of application data.
* Fallback behavior if a capability is unavailable.
A common gateway does not remove the need for application-specific policy.
## Read, write, and payment boundaries
Classify each operation before execution:
1. **Read:** retrieves data without changing an external system.
2. **Write:** creates, updates, sends, publishes, or deletes external data.
3. **Payment:** moves value or authorizes a billable runtime purchase.
A credential that permits one class should not be assumed to permit another. Apply narrower confirmation and retry policies to writes and payments.
## Data and provider boundaries
AIsa integrates with upstream providers. Requests needed to fulfill an operation may be sent to the selected provider. Review [Security](/docs/guides/security) and any relevant upstream terms for the workload.
For current models and API contracts, use live or generated sources rather than architecture prose:
* [Models](/docs/guides/models)
* [API Reference](/docs/api-reference)
* [OpenAPI specification](https://aisa.one/openapi.yaml)
## Deployment considerations
For production use, define:
* Health and timeout expectations.
* Retry behavior for reads versus writes.
* Budget and balance monitoring.
* Provider or route fallback policy.
* Logging that excludes secrets and sensitive request content.
* A verification step before reporting success.
For an overall fit assessment, see [When to use AIsa](/docs/evaluate/when-to-use-aisa).
# Pricing Evaluation Guide
Source: https://aisa.one/docs/evaluate/pricing
Evaluate AIsa model, API, wallet, and usage-based billing without relying on stale static price claims.
AIsa uses usage-based billing across model inference and billable API capabilities. Exact prices depend on the selected model, route, or endpoint and can change independently of this evaluation page.
Use current pricing sources for final decisions.
## Sources of truth
* [AI Model Pricing](/docs/guides/pricing/ai-model-pricing-llm-inference) for model-pricing guidance.
* [Per-call API Pricing](/docs/guides/pricing/per-call-api-pricing) for API billing guidance.
* [Wallet and Payments](/docs/guides/pricing/wallet) for funding and balance behavior.
* [Usage Logs](/docs/guides/dashboard/usage-logs) for observed account usage.
* The live model catalog or exact API page for current capability context.
Do not copy a price from a comparison or conceptual article into production logic.
## Estimate the complete workflow
A multi-step agent may incur more than one charge. Estimate:
1. Retrieval or API calls.
2. Model input and output tokens.
3. Retries or fallback routes.
4. Enrichment calls for shortlisted records.
5. Media generation or other per-request capabilities.
The cheapest individual endpoint may not produce the lowest complete-task cost if it requires more retries, tokens, or follow-up calls.
## Budget controls
Define:
* Maximum cost per API call.
* Maximum cost per task.
* Daily or monthly workspace limits.
* Whether the agent may select a more expensive fallback.
* Which amount requires confirmation.
* What happens when the balance is insufficient.
For runtime purchasing, also see [Machine payments for agents](/docs/concepts/machine-payments-for-agents).
## Compare alternatives fairly
When comparing AIsa with direct providers or another gateway, include:
* Model or endpoint price.
* Engineering work for additional providers.
* Billing and credential management.
* Required data APIs or tools.
* Reliability and fallback requirements.
* Observability and audit needs.
A direct provider can be the simpler option for a stable, single-provider workload. A shared capability layer may be more useful when the workflow combines several providers or capability types.
## Verify before production
* Confirm the exact model ID or endpoint.
* Check current price units.
* Run a small representative request.
* Inspect the usage record.
* Measure the complete workflow, not only one call.
* Add budget alerts before scaling traffic.
For the broader product decision, see [When to use AIsa](/docs/evaluate/when-to-use-aisa).
# Security Evaluation Guide
Source: https://aisa.one/docs/evaluate/security
Evaluate AIsa authentication, data handling, upstream-provider boundaries, actions, payments, and production controls.
Use this page as an evaluation checklist. The detailed security policy is maintained in [Security and Data Privacy](/docs/guides/security), and API-key guidance is maintained in [Authentication](/docs/guides/authentication).
## Authentication
AIsa API requests use Bearer-token authentication unless the exact capability documentation states otherwise.
Evaluate:
* How keys are created, scoped, stored, and rotated.
* Whether development and production use separate credentials.
* Whether logs, errors, and analytics exclude credentials.
* Which people or services can access the key.
Do not embed keys in client-side applications, public repositories, documentation examples, or agent prompts.
## Request and response data
Review [Security and Data Privacy](/docs/guides/security) for AIsa's documented processing and retention model. Also consider the selected upstream provider, because provider-specific terms may apply to data required to fulfill the request.
For sensitive workloads, identify:
* The data fields sent to AIsa and upstream providers.
* Whether the task can minimize or redact those fields.
* Applicable regulatory or contractual restrictions.
* Whether the result may contain sensitive data.
## External actions
Writes require stricter controls than reads. Before an action that sends, publishes, creates, updates, or deletes external data:
1. Verify the connected identity and permission.
2. Display the intended target and side effect.
3. Obtain confirmation where required.
4. Avoid unbounded retries.
5. Verify the external result.
Read access must not be treated as authorization to write.
## Payments and billable calls
For programmatic payment or billable agent workflows, define spend limits, confirmation thresholds, duplicate-charge handling, and audit records.
See:
* [Pricing and Billing](/docs/guides/pricing)
* [Wallet and Payments](/docs/guides/pricing/wallet)
* [Machine payments for agents](/docs/concepts/machine-payments-for-agents)
## Operational controls
Production integrations should define:
* Request timeouts and rate-limit handling.
* Separate retry policies for idempotent reads and side-effecting operations.
* Budget or balance alerts.
* Sanitized error reporting.
* Dependency health checks and fallback behavior.
* Verification before reporting that an operation succeeded.
## Security questions for procurement or review
* Which exact capability and upstream provider will process the request?
* What data is sent, stored, or logged?
* Which credentials and permissions are required?
* Does the operation create an external side effect?
* How are spend and retries bounded?
* What evidence verifies the final result?
Use the exact API or Skill page to answer capability-specific questions. Do not rely on a general platform description for endpoint-level security assumptions.
# Supported AIsa Capabilities
Source: https://aisa.one/docs/evaluate/supported-capabilities
Evaluate the main AIsa capability surfaces and find the live source of truth for models, APIs, Skills, actions, discovery, and billing.
AIsa supports multiple capability surfaces. Availability is not represented by one static count: model routes, API providers, Skills, MCP descriptors, and authenticated actions have different release and status mechanisms.
Use this page to identify the correct source of truth before building against a capability.
## AI model inference
AIsa exposes model inference through `https://api.aisa.one/v1` with OpenAI-compatible and selected provider-compatible routes.
Check:
* [Live model catalog](https://aisa.one/models) for current availability.
* [Models guide](/docs/guides/models) for IDs, capability vocabulary, and endpoint guidance.
* [AI model pricing](/docs/guides/pricing/ai-model-pricing-llm-inference) for pricing guidance.
Do not infer model availability or modality support from the provider family name alone.
## Direct data and capability APIs
AIsa exposes non-chat APIs under `https://api.aisa.one/apis/v1`.
The [API Reference](/docs/api-reference) is the technical entry point for exact methods, paths, parameters, authentication, and examples. Relevant domains include search, research, financial data, social platforms, prediction markets, media, company and people data, and other providers represented in the current reference.
A page in the API reference documents a route; production use should still account for current health, pricing, rate limits, and provider-specific requirements.
## Agent Skills
[Agent Skills](/docs/agent-skills) are reusable instruction bundles for supported agent runtimes. They may combine models, APIs, scripts, safety notes, and output guidance.
Check:
* The Skill page for its intended trigger and tools.
* The Skill source repository for the current implementation.
* Configuration requirements before execution.
A Skill is not the same as an independently hosted service. It teaches an agent how to use the underlying capabilities.
## Authenticated actions
Some APIs can create, update, send, publish, follow, or otherwise change an external system. These operations may require an OAuth-connected account or additional authorization.
Treat them separately from read-only APIs:
* Verify required permissions.
* Identify the external side effect.
* Obtain confirmation when required.
* Verify the external result after execution.
## Machine-readable discovery
AIsa publishes:
* [Agent Card](https://aisa.one/.well-known/agent-card.json) for high-level A2A-style discovery.
* [MCP catalogue](https://mcp.aisa.one/servers) for the live list of MCP entry points, modules and servers.
* [OpenAPI specification](https://aisa.one/openapi.yaml) for request and response contracts.
* [Technical llms.txt](https://aisa.one/docs/llms.txt) for documentation routing.
Check status fields in discovery resources. A planned MCP descriptor should not be treated as a live MCP server.
## Billing and payments
Model and API usage is usage-based. Review:
* [Pricing and Billing](/docs/guides/pricing)
* [Wallet and Payments](/docs/guides/pricing/wallet)
* [Usage Logs](/docs/guides/dashboard/usage-logs)
* [Machine payments for agents](/docs/concepts/machine-payments-for-agents)
Do not assume every capability supports the same authentication or payment path.
## Verification checklist
Before relying on a capability:
1. Confirm its live model, API, Skill, or discovery entry.
2. Read the exact authentication requirements.
3. Check pricing and rate limits.
4. Test the smallest safe request.
5. Verify response shape and failure behavior.
6. For writes or payments, verify authorization and side effects separately.
For product-fit guidance, see [When to use AIsa](/docs/evaluate/when-to-use-aisa).
# When to Use AIsa
Source: https://aisa.one/docs/evaluate/when-to-use-aisa
Evaluate whether AIsa fits a workflow that needs models, live data, Agent Skills, discovery, actions, or usage-based billing.
AIsa is a good candidate when an agent needs more than one provider integration and the application benefits from a common model, data, Skill, discovery, or billing surface.
## Consider AIsa when
* The agent needs model inference plus current external data.
* The application would otherwise maintain several provider keys and API contracts.
* A reusable Skill can replace repeated endpoint orchestration.
* The agent needs to discover capabilities through Agent Card, MCP, or OpenAPI.
* The workflow needs usage-based access to multiple supported capabilities.
* The team wants to start with model inference and add data or Skills incrementally.
## AIsa may not be necessary when
* One model provider fully covers the workload.
* One specialized API already solves the complete problem.
* The team intentionally owns every provider integration and billing relationship.
* The workflow has no need for current external data, reusable Skills, or machine discovery.
Using AIsa is not an all-or-nothing decision. A project can use the model gateway first and adopt other surfaces only when the workflow requires them.
## Fit checklist
| Question | If yes |
| --------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| Do you need more than one model family? | Start with [Models](/docs/guides/models). |
| Do you need current web, market, social, or company data? | Choose a [Skill or direct API](/docs/by-goal). |
| Do you need an end-to-end reusable task? | Review [Agent Skills](/docs/agent-skills). |
| Do you need custom endpoint sequencing? | Use the [API Reference](/docs/api-reference). |
| Do you need external writes? | Review [Capabilities by Interface](/docs/by-interface) and authorization requirements. |
| Do you need runtime purchasing? | Review [Machine payments](/docs/concepts/machine-payments-for-agents) and budget controls. |
## Evaluation sequence
1. Define the user outcome and required evidence.
2. Choose the smallest suitable interface.
3. Check current availability, pricing, authentication, and rate limits.
4. Test a read-only or low-risk request.
5. Decide which data, side effects, and costs the application will own.
6. Document fallback and failure behavior before production use.
## Main trade-offs
A common capability layer can reduce integration duplication, but it also introduces a dependency on an additional routing and billing layer. Evaluate:
* Latency and reliability for the required route.
* Whether the live catalog supports the exact model or API needed.
* Data handling and upstream-provider terms.
* Cost visibility and budget controls.
* Migration and fallback requirements.
## Start here
* [Agent Quickstart](/docs/agent-quickstart)
* [Capabilities by Goal](/docs/by-goal)
* [Capabilities by Interface](/docs/by-interface)
* [Security](/docs/guides/security)
* [Pricing and Billing](/docs/guides/pricing)
* [Service and capability discovery](/docs/guides/agent-discovery)
# Welcome to AIsa
Source: https://aisa.one/docs/guides
The unified API gateway for AI agents - live LLM and media model routing, 100+ data APIs, and stablecoin payments through one endpoint.
AIsa is the unified resource and payment layer for the AI economy. Route requests to the live catalog of GPT, Claude, Gemini, Grok, DeepSeek, Qwen, Kimi, MiniMax, GLM, Seed, Seedream, Wan, Hunyuan, and MiMo models, access real-time web, financial, and social data from 100+ APIs, and let autonomous agents pay for their own compute - all through one API key.
Create an account, generate an API key, and make your first unified API call in minutes.
Test any model in the browser - adjust parameters, inspect payloads, no code required.
Configure OpenClaw with AIsa using the recommended quick setup path.
Connect Hermes Agent to the AIsa model endpoint and capability layer.
## How it works
Swap your `base_url` to AIsa and instantly access GPT, Claude, Gemini, Grok, DeepSeek, Qwen, Kimi, MiniMax, GLM, Seed, Seedream, Wan, Hunyuan, and MiMo models. Most models use OpenAI-compatible chat completions; selected models also expose Anthropic Messages, OpenAI Responses, Gemini GenerateContent, or image-generation routes.
Access 100+ specialized APIs - Twitter, Perplexity, Tavily, YouTube, stock prices, prediction markets - without managing separate vendor accounts.
Fund a single AIsa wallet with fiat or USDC. Every endpoint supports the x402 machine payment protocol, so agents can pay for compute and data on their own.
## Core pillars
Live LLM and media model routing plus 100+ data APIs behind one gateway. One key, one bill, zero vendor lock-in.
Composable, reusable agent capabilities for Claude Code, Cursor, OpenClaw, and more. Install with a single command.
Pre-configured OpenClaw instances with LLMs and Skills built in. Deploy agents to Telegram, Discord, or Slack without managing infra.
## Supported models
AIsa is API-compatible with the OpenAI ecosystem for chat-style model calls, with additional provider-compatible routes where useful. Switch models without changing billing or key management - optimize for cost, speed, reasoning, coding, vision, audio, image generation, or long context on a per-request basis.
| Family | Developer | Modalities |
| ---------------------------- | ----------- | ----------------------------------------- |
| GPT | OpenAI | Text, Vision, Image, Coding |
| Claude | Anthropic | Text, Vision, Coding |
| Gemini | Google | Text |
| Grok | xAI | Text, Vision, Coding |
| DeepSeek | DeepSeek | Text, Coding |
| Qwen and Wan | Alibaba | Text, Vision, Audio, Video, Image, Coding |
| Kimi | Moonshot AI | Text, Vision, Video, Coding |
| MiniMax | MiniMax | Text, Vision, Video, Coding |
| GLM | Zhipu AI | Text, Coding |
| Seed, Seedream, and Dreamina | ByteDance | Text, Vision, Video, Image, Coding |
| Hunyuan | Tencent | Text |
| MiMo | Xiaomi | Text |
| HappyHorse | HappyHorse | Video |
See the exact model IDs, context windows, endpoint mappings, capabilities, and billing notes in the [supported model catalog](/docs/guides/models), the [AI Model Pricing](/docs/guides/pricing/ai-model-pricing-llm-inference) docs, or the live [AIsa Marketplace](https://aisa.one/models).
## Next steps
Make your first unified API call.
Browse and install production-ready skills.
Explore every endpoint with interactive examples.
AIsa vs. OpenRouter, pricing, compatibility.
# Agent Discovery – Let Autonomous Agents Find and Use AIsa
Source: https://aisa.one/docs/guides/agent-discovery
Integrate autonomous agents with AIsa using the A2A Agent Card, MCP manifest, OpenAI plugin manifest, OpenAPI 3.1 spec, and llms.txt resources.
AIsa publishes several machine-readable discovery resources so that autonomous agents can find, understand, and invoke supported capabilities. This guide explains the main resources and the discovery-to-invocation flow.
## Discovery Endpoints
AIsa exposes the following public URLs for agent and documentation discovery. They require no authentication to read.
| Endpoint | Protocol | URL | Purpose |
| :--------------------- | :----------------- | :--------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------- |
| **Agent Card** | Google A2A | `https://aisa.one/.well-known/agent-card.json` | High-level capabilities with metadata, tags, examples, and I/O modes |
| **AI Plugin** | OpenAI Plugin (v1) | `https://aisa.one/.well-known/ai-plugin.json` | Backward compatibility with ChatGPT-era agent tooling |
| **MCP Catalogue** | Live MCP inventory | `https://mcp.aisa.one/servers` | Entry points (root `mcp.aisa.one/mcp`, domain aliases), modules and per-server endpoints, generated by the running service |
| **OpenAPI Spec** | OpenAPI 3.1.0 | `https://aisa.one/openapi.yaml` | Machine-readable request and response contracts |
| **Product llms.txt** | llms.txt | `https://aisa.one/llms.txt` | Product fit, goals, interfaces, and evaluation routes |
| **Technical llms.txt** | llms.txt | `https://aisa.one/docs/llms.txt` | Technical documentation router |
## How Agent Discovery Works
The discovery flow follows three steps: **discover**, **inspect**, and **invoke**. An autonomous agent starts by fetching the agent card to learn what AIsa can do, selects the relevant skill, and then calls the corresponding API endpoint using the OpenAPI spec for request/response schemas.
The agent fetches `/.well-known/agent-card.json` from `aisa.one`. The response contains a list of skills, each with an `id`, `name`, `description`, `tags`, and `examples`. The agent uses this metadata to determine whether AIsa can fulfill the current task.
Once the agent identifies a relevant skill, it fetches `/openapi.yaml` to retrieve the full request/response schema for the corresponding API endpoints. The OpenAPI spec provides parameter types, required fields, authentication requirements, and example payloads.
The agent constructs an authenticated API request using the schema from the OpenAPI spec, sends it to `api.aisa.one`, and processes the response. All endpoints use Bearer token authentication with an AIsa API key.
## The A2A Agent Card
The [Agent2Agent (A2A) Protocol](https://a2a-protocol.org/latest/) defines a standard format for agents to advertise capabilities and interoperate. AIsa's agent card lives at the well-known URL and describes the platform, authentication requirements, and public capability catalog.
### Fetching the Agent Card
```bash curl theme={null}
curl -s https://aisa.one/.well-known/agent-card.json | jq .
```
```python Python theme={null}
import requests
card = requests.get("https://aisa.one/.well-known/agent-card.json").json()
print(f"Agent: {card['name']} — {card['description']}")
print(f"Skills: {len(card['skills'])}")
for skill in card["skills"]:
print(f" • {skill['id']}: {skill['name']}")
```
```typescript TypeScript theme={null}
const res = await fetch("https://aisa.one/.well-known/agent-card.json");
const card = await res.json();
console.log(`Agent: ${card.name} — ${card.description}`);
console.log(`Skills: ${card.skills.length}`);
card.skills.forEach((s: any) => console.log(` • ${s.id}: ${s.name}`));
```
### Agent Card Structure
The top-level fields describe the agent identity, authentication, and capabilities:
| Field | Type | Description |
| :----------------- | :----- | :----------------------------------------------------------- |
| `name` | string | Agent name — `"AIsa"` |
| `description` | string | One-line summary of the agent's purpose |
| `url` | string | Base URL for API requests — `https://api.aisa.one` |
| `provider` | object | Organization name and website |
| `version` | string | Semantic version of the agent card |
| `documentationUrl` | string | Link to human-readable documentation |
| `capabilities` | object | Feature flags — streaming, push notifications, state history |
| `authentication` | object | Supported auth schemes and credential instructions |
### Skill Objects
Each entry in the `skills` array describes a single capability:
| Field | Type | Description |
| :------------ | :-------- | :---------------------------------------------------------------------- |
| `id` | string | Unique skill identifier (e.g., `chat-completions`, `twitter-autopilot`) |
| `name` | string | Human-readable skill name |
| `description` | string | What the skill does and what data it provides |
| `tags` | string\[] | Searchable tags for filtering and matching |
| `examples` | string\[] | Natural-language example queries the skill can handle |
| `inputModes` | string\[] | Accepted content types (defaults to `application/json`) |
| `outputModes` | string\[] | Response content types (e.g., `application/json`, `text/event-stream`) |
### Available capabilities
The Agent Card is generated from the public catalog. Fetch the live card instead of relying on a fixed capability list in documentation:
```bash theme={null}
curl -s https://aisa.one/.well-known/agent-card.json \
| jq -r '.skills[] | [.id, .name, (.tags // [] | join(","))] | @tsv'
```
Use each capability's `description`, `tags`, and `examples` for matching. Confirm the underlying Skill or API documentation before invocation.
## The OpenAI Plugin Manifest
For backward compatibility with agent frameworks that implement the original ChatGPT plugin protocol, AIsa also publishes an `ai-plugin.json` manifest at `/.well-known/ai-plugin.json`. The manifest references the same OpenAPI spec. For current OpenAI tool integration guidance, see [Actions](https://platform.openai.com/docs/actions).
```bash theme={null}
curl -s https://aisa.one/.well-known/ai-plugin.json | jq .
```
The manifest includes a `description_for_model` field that lists key API endpoints, helping LLM-based agents understand which tools are available without parsing the full OpenAPI spec.
## The OpenAPI 3.1 Specification
The consolidated OpenAPI spec at `/openapi.yaml` is the authoritative machine-readable contract for constructing API requests. Parse the live specification instead of relying on a fixed path or schema count.
### Fetching and Parsing the Spec
```python Python theme={null}
import yaml, requests
spec = yaml.safe_load(requests.get("https://aisa.one/openapi.yaml").text)
paths = list(spec["paths"].keys())
print(f"Total endpoints: {len(paths)}")
print(f"First 5: {paths[:5]}")
```
```typescript TypeScript theme={null}
import YAML from "yaml";
const res = await fetch("https://aisa.one/openapi.yaml");
const spec = YAML.parse(await res.text());
const paths = Object.keys(spec.paths);
console.log(`Total endpoints: ${paths.length}`);
```
```bash curl theme={null}
curl -s https://aisa.one/openapi.yaml | head -50
```
### API Categories
The spec organizes endpoints into the following tag groups:
| Category | Example Endpoints | Description |
| :----------------- | :------------------------------------------------------------ | :-------------------------------------------------------------- |
| AI Models | `/v1/chat/completions`, `/v1/models` | Live LLM and media model catalog, OpenAI-compatible chat routes |
| Twitter/X | `/apis/v1/twitter/tweet/advanced_search` | Profile, timeline, search, posting |
| Financial Data | `/apis/v1/financial/prices`, `/apis/v1/financial/sec-filings` | Equities, SEC, earnings, screening |
| Web & News Search | `/apis/v1/tavily/search`, `/apis/v1/search/smart` | Multi-source and Tavily search |
| Prediction Markets | `/apis/v1/polymarket/events`, `/apis/v1/kalshi/markets` | Polymarket and Kalshi data |
| Crypto Data | `/apis/v1/coingecko/simple/price` | CoinGecko market data |
| Image Generation | `/v1/images/generations` | GPT, Seedream, Wan, and other image-capable routes |
| YouTube Search | `/apis/v1/youtube/search` | YouTube SERP |
| Scholar Search | `/apis/v1/scholar/search/scholar` | Academic paper search |
## End-to-End Integration Example
The following Python example demonstrates the complete discovery-to-invocation flow. An autonomous agent discovers AIsa's capabilities, identifies the `chat-completions` skill, and makes an authenticated API call.
```python theme={null}
import requests
# Step 1: Discover — fetch the agent card
card = requests.get("https://aisa.one/.well-known/agent-card.json").json()
# Step 2: Find a skill by tag
target_tag = "llm"
matching = [s for s in card["skills"] if target_tag in s.get("tags", [])]
if not matching:
raise RuntimeError(f"No skill found with tag '{target_tag}'")
skill = matching[0]
print(f"Selected skill: {skill['name']} ({skill['id']})")
# Step 3: Invoke — call the API using the base URL from the card
response = requests.post(
f"{card['url']}/v1/chat/completions",
headers={
"Authorization": "Bearer YOUR_AISA_API_KEY",
"Content-Type": "application/json",
},
json={
"model": "gpt-5.4-mini",
"messages": [
{"role": "user", "content": "Summarize the A2A protocol in two sentences."}
],
},
)
result = response.json()
print(result["choices"][0]["message"]["content"])
```
## Authentication
All AIsa API endpoints require Bearer token authentication. Include your API key in the `Authorization` header of every request:
```
Authorization: Bearer YOUR_AISA_API_KEY
```
Generate an API key from the AIsa console. For detailed key management guidance — scoping, rotation, and secure storage — see the [Authentication](/docs/guides/authentication) guide.
The discovery resources (`agent-card.json`, `mcp.json`, `ai-plugin.json`, `openapi.yaml`, and llms.txt files) are publicly readable and require no authentication. API calls to `api.aisa.one` require the authentication documented for the selected route.
## Integration Patterns
### Pattern 1: Tag-Based Skill Matching
Agents can match tasks to skills using the `tags` array. This is the recommended approach for agents that need to dynamically select capabilities at runtime.
```python theme={null}
def find_skills_by_tags(card, required_tags):
"""Return skills that match ALL required tags."""
return [
skill for skill in card["skills"]
if all(tag in skill.get("tags", []) for tag in required_tags)
]
# Find skills for financial research
finance_skills = find_skills_by_tags(card, ["finance", "stocks"])
# Returns: [MarketPulse Financial Data]
```
### Pattern 2: Example-Based Intent Matching
For LLM-powered agents, the `examples` field provides natural-language queries that can be used for semantic similarity matching against the user's intent.
```python theme={null}
# Collect all examples with their skill IDs
example_index = []
for skill in card["skills"]:
for example in skill.get("examples", []):
example_index.append({"text": example, "skill_id": skill["id"]})
# Use an embedding model to find the closest match to the user's query
# user_query = "What's the stock price of Apple?"
# → Matches MarketPulse skill via "Get the current stock price for AAPL"
```
## Interactive Explorer
AIsa provides two browser-based tools for exploring the discovery surface:
* **[API Explorer](https://aisa.one/api-explorer)** — Interactive API reference for browsing documented endpoints and request/response examples.
* **[Agent Discovery](https://aisa.one/agent-discovery)** — Visual skill explorer with search and tag filtering, plus integration code examples.
## CORS Support
The discovery endpoints include permissive CORS headers (`Access-Control-Allow-Origin: *`) so that browser-based agents and web applications can fetch them directly without a proxy server. This applies to:
* `/.well-known/agent-card.json`
* `/.well-known/ai-plugin.json`
* `/openapi.yaml`
## Related
API key generation, scoping, rotation, and secure storage.
Browse and install composable skills for Claude Code, Cursor, and OpenClaw.
Make your first authenticated API request in minutes.
# Authentication
Source: https://aisa.one/docs/guides/authentication
Authenticate every AIsa API request with a Bearer token. Covers API key generation, storage, rotation, scoping, and best practices for secure key management.
Every AIsa API request is authenticated with a single Bearer token — your **AIsa API key**. One key works across all 100+ endpoints: LLM inference, search, financial data, Twitter, prediction markets, and more.
## How it works
Create a key in the [dashboard](https://console.aisa.one) under **API Keys**. Each key has a unique prefix (`sk-aisa-...`) and is shown **once** — copy it immediately to a secure store.
Include the key in every request's `Authorization` header:
```
Authorization: Bearer YOUR_AISA_API_KEY
```
Every call deducts from your workspace wallet. Usage and cost appear in [Usage Logs](/docs/guides/dashboard/usage-logs) in real time.
## Authenticating with SDKs
Because AIsa is OpenAI-compatible, the official OpenAI SDKs work by swapping `base_url` and `api_key`:
```python Python theme={null}
from openai import OpenAI
client = OpenAI(
base_url="https://api.aisa.one/v1",
api_key="sk-aisa-..."
)
```
```typescript TypeScript theme={null}
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.aisa.one/v1",
apiKey: process.env.AISA_API_KEY,
});
```
```bash curl theme={null}
curl https://api.aisa.one/v1/chat/completions \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-5.4","messages":[{"role":"user","content":"Hello"}]}'
```
Pass the key through an environment variable (`AISA_API_KEY`) rather than hard-coding it in source. All AIsa examples and skill clients read from this variable by default.
## Key lifecycle
### Creating keys
* Navigate to [console.aisa.one](https://console.aisa.one) → **API Keys**.
* Click **Create Key**, give it a label (e.g., `prod-web-app`, `ci-tests`), and copy the value.
* Create **one key per deployment environment** — separate keys for dev, staging, prod, and each service. This makes rotation and revocation surgical.
### Scoping and quotas
On the key creation form you can optionally set:
* **Spend cap** — maximum USD the key can charge per day/week/month. When hit, subsequent requests return `429 quota_exceeded`.
* **Rate-limit overrides** — lower the default RPM/TPM below your account tier for a specific key.
* **Model allowlist** — restrict the key to specific models (e.g., only `gpt-5.4-mini` for a cost-sensitive internal tool).
### Rotating keys
Rotate keys at least **every 90 days**, or immediately if you suspect exposure.
Generate a new key with the same label + a version suffix (e.g., `prod-web-app-v2`).
Push the new key to your secret manager. Wait for the deployment to roll out across every instance.
Once you've verified no requests are still using the old key (check **Usage Logs** filtered by key), revoke it in the dashboard.
### Revoking keys
If a key leaks, **revoke it immediately** in the dashboard. Revocation is instant — the next request with that key returns `401 revoked_api_key`. Always revoke before investigating.
## Storing keys securely
Never commit keys to source control. Never paste keys in public issues, shared documents, or screenshots. AIsa keys grant full spend authority against your wallet.
Use a `.env` file and a loader like `python-dotenv` or `dotenv` (Node). Add `.env` to `.gitignore`.
```bash theme={null}
# .env
AISA_API_KEY=sk-aisa-...
```
```python theme={null}
from dotenv import load_dotenv
load_dotenv()
```
Store the key as a **secret** in your CI provider (GitHub Actions, GitLab CI, CircleCI). Reference it as an environment variable in the workflow.
```yaml theme={null}
# GitHub Actions
env:
AISA_API_KEY: ${{ secrets.AISA_API_KEY }}
```
Use a dedicated `ci-tests` key with a low spend cap so a runaway test can't drain the wallet.
Use your cloud provider's secret manager:
* **AWS**: Secrets Manager or Systems Manager Parameter Store
* **GCP**: Secret Manager
* **Azure**: Key Vault
* **Fly/Render/Railway**: the platform's built-in env var encryption
Rotate by updating the secret; the next container restart picks it up.
**Never ship an API key in a browser, mobile app, or any client the user can inspect.** Always route through a backend proxy you control.
If you need to call AIsa from a client, build a server-side endpoint that:
1. Validates the caller (user auth)
2. Applies per-user rate limits
3. Forwards to AIsa with your server-held key
## Best practices
* **One key per service** — never share keys across apps
* **Scope narrowly** — use model allowlists and spend caps to blast-radius any leak
* **Rotate on a schedule** — at minimum every 90 days; immediately on personnel change
* **Monitor usage logs** — unusual spikes often appear in [Usage Logs](/docs/guides/dashboard/usage-logs) before billing alerts
* **Set quota alerts** — configure daily/weekly spend thresholds in the [AIsa console](https://console.aisa.one/) settings
* **Prefer SSO** for dashboard access so revocation propagates from your identity provider
## Related
Data retention, transport security, and third-party provider handling.
401, 403, and other auth-related responses.
RPM, TPM, and concurrency caps per tier.
Make your first authenticated request.
# Changelog
Source: https://aisa.one/docs/guides/changelog
A running log of new features, API additions, fixes, and improvements to the AIsa platform. Updated with every significant release.
Stay up to date with what's new across the AIsa platform — API endpoints, documentation, developer tools, and infrastructure changes. Entries are grouped by date, with the most recent changes at the top.
***
## April 21, 2026
### Agent Discovery Infrastructure
AIsa now publishes three machine-readable discovery endpoints so autonomous agents can find, authenticate with, and invoke AIsa's capabilities without human intervention.
| Endpoint | URL | Protocol |
| :----------------- | :----------------------------- | :--------------- |
| A2A Agent Card | `/.well-known/agent-card.json` | Google A2A |
| AI Plugin Manifest | `/.well-known/ai-plugin.json` | OpenAI Plugin v1 |
| OpenAPI Spec | `/openapi.yaml` | OpenAPI 3.1.0 |
All three endpoints include permissive CORS headers (`Access-Control-Allow-Origin: *`) so browser-based agents and web applications can fetch them directly. The agent card advertises 13 skills with tags, descriptions, and example queries for programmatic skill matching.
Learn how to integrate your agents with AIsa using the A2A protocol, plugin manifest, and OpenAPI spec.
### Developer Tools on aisa.one
The main website now includes two new developer-facing pages and an updated navigation structure:
**API Explorer** — An interactive Swagger UI at [aisa.one/api-explorer](https://aisa.one/api-explorer) for browsing, testing, and integrating with all 111+ AIsa endpoints directly in the browser. Supports persistent authorization and live request execution.
**Agent Discovery Page** — A visual skill explorer at [aisa.one/agent-discovery](https://aisa.one/agent-discovery) with search and tag filtering across all 13 skills, integration code examples in Python, TypeScript, and cURL, and a live "Try It" sandbox for testing the discovery-to-invocation flow.
**Developers Dropdown** — The navbar now features a "Developers" dropdown with quick links to Documentation, API Explorer, Agent Discovery, and the OpenAPI Spec.
### OpenAPI Auto-Sync
A new GitHub Actions workflow automatically consolidates individual OpenAPI specs from the docs repo, validates the generated `openapi.yaml`, and syncs it to the website repository. Slack notifications report success, no-change, or failure outcomes.
### URL Migration
All documentation URLs have been migrated from `docs.aisa.one` to `aisa.one/docs`, and `marketplace.aisa.one` has been replaced with `console.aisa.one`. Existing links redirect automatically.
***
## April 20, 2026
### Financial API Additions
Two new endpoints have been added to the Financial Data API:
| Endpoint | Description |
| :--------------------------------------- | :------------------------------------------------------------------- |
| `GET /apis/v1/financial/prices/snapshot` | Batch price snapshot for multiple tickers in a single request |
| `GET /apis/v1/financial/earnings` | Earnings data including EPS actuals, estimates, and surprise metrics |
The Financial API reference pages have been reorganized by canonical tag for easier navigation, and macro interest rate pages are now grouped under a dedicated "Interest Rates" subheader.
### Prediction Market Fixes
Several improvements to the Polymarket and Kalshi API documentation:
The Polymarket candlestick and wallet PnL endpoints have been corrected to use query parameters instead of path parameters, matching the actual API behavior. Missing query parameters `condition_id` and `wallet_address` have been added to the relevant endpoints. The pagination example link in the Polymarket spec has been updated to point to the correct location.
### Analyst Estimates Correction
The analyst estimates endpoint has been renamed from "Earnings Per Share" to "Analyst Estimates" to accurately reflect its content. The description has been updated to remove references to price targets and analyst counts that are not returned by the endpoint.
***
## April 19, 2026
### CoinGecko API (23 Endpoints)
A complete CoinGecko integration is now available through AIsa, covering cryptocurrency market data across 23 endpoints. Access coin prices, market charts, OHLC data, trending coins, exchange information, and global market statistics — all through your existing AIsa API key.
Browse all 23 CoinGecko endpoints with interactive examples.
### Video Generation — All 4 Wan Models
The video generation documentation has been expanded to cover all four Wan 2.7 model variants:
| Model | Type | Resolution |
| :-------------------- | :------------- | :--------- |
| `wan2.7-t2v-1.3B` | Text-to-video | 480p |
| `wan2.7-t2v-14B` | Text-to-video | 720p |
| `wan2.7-i2v-480p-14B` | Image-to-video | 480p |
| `wan2.7-i2v-720p-14B` | Image-to-video | 720p |
> These variant IDs were later consolidated. The gateway now exposes `wan2.7-t2v`, `wan2.7-i2v`, and `wan2.7-r2v` at 720p/1080p — see the [model catalog](/docs/guides/models) for current IDs.
### Navigation Restructure
Documentation tab slugs have been flattened to `/guides`, `/api-reference`, and `/agent-skills` for cleaner URLs and improved navigation.
***
## April 18, 2026
### Image Generation Endpoints
Two new image generation pages have been added to the API reference:
**Image Generation via Chat** — Generate images using the `wan2.7-image` model family through the standard `/v1/chat/completions` endpoint. This allows image generation within the same conversational interface used for text.
**OpenAI-Compatible Image Generations** — Generate images using SeedREAM through the `/v1/images/generations` endpoint, fully compatible with the OpenAI Images API format.
The video task-status endpoint has been corrected to use a path parameter for the task ID, matching the actual API behavior.
***
## April 17, 2026
### Twitter/X Action Endpoints
Six new Twitter/X action endpoints are now available, enabling full read-write automation:
| Endpoint | Method | Description |
| :---------------------------------- | :----- | :--------------------- |
| `/apis/v1/twitter/follow_twitter` | POST | Follow a user |
| `/apis/v1/twitter/unfollow_twitter` | POST | Unfollow a user |
| `/apis/v1/twitter/post_twitter` | POST | Post a tweet |
| `/apis/v1/twitter/like_twitter` | POST | Like a tweet |
| `/apis/v1/twitter/unlike_twitter` | POST | Unlike a tweet |
| `/apis/v1/twitter/auth_twitter` | POST | Initiate OAuth linking |
These endpoints complement the existing read-only Twitter search and profile endpoints, enabling autonomous agents to engage on Twitter/X programmatically.
### Documentation Platform Migration
The AIsa documentation has been migrated from ReadMe.com to Mintlify, bringing improved navigation, interactive API playground, and a cleaner reading experience. All existing documentation URLs continue to work through automatic redirects.
### Model Catalog Updates
The model families table on the welcome page has been updated to reflect the current catalog. Pricing documentation has been clarified to note that Anthropic models are available at provider rates rather than discounted rates.
### Housekeeping
Several orphaned OpenAPI specification files have been removed, including stale v2 Twitter specs and unused Jina AI specs. This cleanup reduces repository size and prevents confusion with outdated endpoint definitions.
***
## Earlier Releases
For changes prior to April 17, 2026, see the [GitHub commit history](https://github.com/AIsa-team/docs/commits/main).
# Access Chinese AI Models via One API - Qwen, DeepSeek, Kimi, ByteDance Seed, MiniMax, GLM, StepFun and MiMo
Source: https://aisa.one/docs/guides/chinese-llms
Current AIsa guide to Chinese LLM and media models: exact model IDs, context windows, capabilities, endpoints, and pricing links for Qwen, Wan, DeepSeek, Kimi, ByteDance Seed, Seedream, MiniMax, GLM, StepFun, and Xiaomi MiMo. OpenAI-compatible through https://api.aisa.one/v1.
AIsa gives you one API key for China's leading AI model families: Alibaba Qwen and Wan, DeepSeek, Moonshot Kimi, ByteDance Seed and Seedream, MiniMax, Zhipu GLM, StepFun, and Xiaomi MiMo. Use the same AIsa wallet, usage logs, and OpenAI-compatible SDK setup you use for GPT and Claude.
This page was refreshed from the live [AIsa Model Gateway](https://aisa.one/models) pricing feed on July 28, 2026. For exact prices at request time, check [aisa.one/models](https://aisa.one/models) or the [pricing guide](/docs/guides/pricing/ai-model-pricing-llm-inference).
## API base
```python theme={null}
from openai import OpenAI
client = OpenAI(
api_key="YOUR_AISA_API_KEY",
base_url="https://api.aisa.one/v1"
)
response = client.chat.completions.create(
model="qwen3.7-max",
messages=[{"role": "user", "content": "Compare Qwen, DeepSeek, and Kimi for a coding agent."}]
)
print(response.choices[0].message.content)
```
Chinese text, vision, coding, audio, and video-understanding models use `POST /v1/chat/completions`, and most also accept Anthropic-compatible `POST /v1/messages`. `POST /v1/responses` is now served by most Chinese text-model routes (including `qwen3-max`, `MiniMax-M3`, `deepseek-v3`, `glm-5.2`, and `kimi-k3`) — exceptions include `qwen-plus-2025-12-01`, `seed-2-0-mini-260215`, and the `step-3.5-flash` routes; an unsupported combination returns `400 model_route_not_supported`. Image models use `POST /v1/images/generations` and `POST /v1/images/edits` (except `seedream-4-5-251128`, which stays on chat/completions); Wan and Dreamina video models are asynchronous through `POST /v1/video/generations`. Use the exact model IDs below.
## Alibaba Qwen and Wan
| Model ID | Context | Capabilities | Best for |
| -------------------------------- | --------: | ---------------------------------- | ------------------------------------------------- |
| `qwen-flash` | 1,000,000 | Audio, Coding, Text, Video, Vision | Lowest-cost high-volume multimodal work |
| `qwen-mt-flash` | 1,000,000 | Text | Fast translation |
| `qwen-mt-lite` | 1,000,000 | Text | Lowest-cost translation |
| `qwen-plus-2025-12-01` | 1,000,000 | Audio, Coding, Text, Video, Vision | General multimodal workloads |
| `qwen3-coder-480b-a35b-instruct` | 262,144 | Coding, Text | Maximum Qwen coding capability |
| `qwen3-coder-flash` | 1,000,000 | Coding, Text | Fast coding pipelines |
| `qwen3-coder-plus` | 1,000,000 | Coding, Text | Balanced coding agents |
| `qwen3-max` | 262,144 | Audio, Coding, Text, Video, Vision | Strong general Qwen model |
| `qwen3-vl-flash` | 131,072 | Coding, Text, Video, Vision | Low-cost vision and video understanding |
| `qwen3-vl-flash-2025-10-15` | 131,072 | Coding, Text, Video, Vision | Pinned Qwen VL Flash version |
| `qwen3-vl-plus` | 131,072 | Coding, Text, Video, Vision | Stronger document/spatial vision |
| `qwen3.6-plus` | 1,000,000 | Coding, Text, Video, Vision | Long-context Chinese and bilingual work |
| `qwen3.6-plus-2026-04-02` | 262,144 | Coding, Text, Vision | Pinned Qwen 3.6 Plus version |
| `qwen3.7-max` | 1,000,000 | Coding, Text | Frontier Qwen reasoning and agentic coding |
| `qwen3.7-max-2026-06-08` | — | Text | Pinned Qwen 3.7 Max version |
| `qwen3.7-plus` | — | Text | Lower-cost Qwen 3.7 route |
| `wan2.7-image` | N/A | Image, Text, Vision | Image generation/editing, text in images |
| `wan2.7-image-pro` | N/A | Image, Text, Video, Vision | Higher-quality image and image-to-video workflows |
| `wan2.7-t2v` | — | Video | Text-to-video generation (720p/1080p) |
| `wan2.7-i2v` | — | Video | Image-to-video generation (720p/1080p) |
| `wan2.7-r2v` | — | Video | Reference-to-video generation (720p/1080p) |
## DeepSeek
| Model ID | Context | Capabilities | Best for |
| ------------------- | ------: | ------------ | ------------------------------------------------------ |
| `deepseek-r1` | 262,144 | Coding, Text | Reasoning-heavy DeepSeek tasks |
| `deepseek-v3` | 262,144 | Coding, Text | Low-cost general and coding work |
| `deepseek-v3.1` | 262,144 | Coding, Text | Balanced DeepSeek reasoning and coding |
| `deepseek-v3.2` | 128,000 | Coding, Text | Very low-cost current DeepSeek general use |
| `deepseek-v4-flash` | 262,144 | Coding, Text | Very low-cost high-throughput coding/text |
| `deepseek-v4-pro` | 262,144 | Coding, Text | Strong DeepSeek route on chat/completions and messages |
## Kimi
| Model ID | Context | Capabilities | Best for |
| ------------------ | ------: | --------------------------- | ------------------------------------------------------------- |
| `kimi-k3` | — | Text | Newest Kimi generation; Moonshot's highest-tier route on AIsa |
| `kimi-k2.7-code` | — | Text | Coding-focused K2.7 route |
| `kimi-k2.6` | 128,000 | Text | General Kimi reasoning and long-context text |
| `kimi-k2.5` | 262,144 | Coding, Text, Video, Vision | Visual coding, document vision, long-video understanding |
| `kimi-k2-thinking` | 256,000 | Coding, Text | Reasoning and agentic coding |
## MiniMax and GLM
| Model ID | Provider | Context | Capabilities | Best for |
| -------------- | --------- | --------: | --------------------------- | ---------------------------------------------- |
| `MiniMax-M2.5` | MiniMax | 262,144 | Coding, Text | Cost-efficient long-document text and coding |
| `MiniMax-M3` | MiniMax | 1,000,000 | Coding, Text, Video, Vision | 1M-context MiniMax with vision/video tags |
| `glm-5` | Zhipu GLM | 128,000 | Coding, Text | Chinese reasoning, bilingual documents, coding |
| `glm-5.1` | Zhipu GLM | — | Text | Mid-tier GLM 5 revision |
| `glm-5.2` | Zhipu GLM | — | Text | Newest GLM 5 revision |
## ByteDance Seed and Seedream
| Model ID | Context | Capabilities | Best for |
| ----------------------------------- | ------: | --------------------------- | --------------------------------------------- |
| `seed-1-6-250915` | 262,144 | Text, Video, Vision | Stable general Seed route |
| `seed-1-6-flash-250715` | 262,144 | Text, Video, Vision | Fast, low-cost throughput |
| `seed-1-8-251228` | 262,144 | Coding, Text, Video, Vision | Stronger agentic and coding tasks |
| `seed-2-0-mini-260215` | 262,144 | Coding, Text, Video, Vision | Low-cost Seed 2.0 route |
| `seed-2-0-lite-260228` | 262,144 | Coding, Text, Video, Vision | Balanced Seed 2.0 route |
| `seed-2-0-pro-260328` | 262,144 | Coding, Text, Video, Vision | Strongest Seed 2.0 route |
| `seedream-4-5-251128` | N/A | Image, Vision | Image generation and editing |
| `seedream-5-0-260128` | 262,144 | Image, Vision | Newer Seedream image route |
| `dreamina-seedance-2-0-260128` | — | Video | Dreamina Seedance video generation (up to 4k) |
| `dreamina-seedance-2-0-fast-260128` | — | Video | Faster, lower-cost Seedance video route |
## StepFun and Xiaomi MiMo
| Model ID | Provider | Context | Capabilities | Best for |
| --------------------- | -------- | ------: | ------------ | ----------------------------------- |
| `step-3.5-flash` | StepFun | — | Text | Low-cost StepFun text route |
| `step-3.5-flash-2603` | StepFun | — | Text | Pinned snapshot of `step-3.5-flash` |
| `step-3.7-flash` | StepFun | — | Text | Newest StepFun flash route |
| `mimo-v2.5` | Xiaomi | — | Text | Very low-cost Xiaomi MiMo route |
| `mimo-v2.5-pro` | Xiaomi | — | Text | Higher-tier MiMo route |
## Choosing quickly
| Need | Start with |
| ----------------------------------- | ------------------------------------------------------------------- |
| Lowest-cost text or coding | `deepseek-v4-flash`, `qwen-flash`, `qwen-mt-flash` |
| 1M-token Chinese/bilingual context | `qwen3.7-max`, `qwen3.6-plus`, `MiniMax-M3` |
| Coding agents | `qwen3-coder-plus`, `qwen3.7-max`, `kimi-k2-thinking`, `MiniMax-M3` |
| Vision/document/video understanding | `qwen3-vl-plus`, `kimi-k2.5`, `seed-2-0-pro-260328` |
| Image generation/editing | `seedream-5-0-260128`, `seedream-4-5-251128`, `wan2.7-image-pro` |
| Chinese-language reasoning | `glm-5.2`, `qwen3.7-max`, `MiniMax-M3` |
| Video generation | `wan2.7-t2v`, `wan2.7-i2v`, `dreamina-seedance-2-0-260128` |
| Lowest-cost experimentation | `qwen-flash`, `step-3.5-flash` |
A `—` in the Context column means the current gateway metadata does not publish that model's context window, and the Capabilities column then shows only its base type. Check [aisa.one/models](https://aisa.one/models) for live limits and capability tags.
## Provider guides
* [Qwen and Wan models](/docs/guides/chinese-llms/qwen)
* [DeepSeek models](/docs/guides/chinese-llms/deepseek)
* [Kimi models](/docs/guides/chinese-llms/kimi)
* [ByteDance Seed and Seedream](/docs/guides/chinese-llms/bytedance)
* [MiniMax models](/docs/guides/chinese-llms/minimax)
* [GLM models](/docs/guides/chinese-llms/glm)
* [All supported AIsa models](/docs/guides/models)
# ByteDance Models API - Access Seed and Seedream via AIsa
Source: https://aisa.one/docs/guides/chinese-llms/bytedance
Current AIsa guide to ByteDance Seed and Seedream model IDs, context windows, capabilities, endpoints, and prices, including Seed 1.x, Seed 2.0, Seedream 4.5, and Seedream 5.0 routes through BytePlus.
AIsa routes ByteDance Seed and Seedream models through BytePlus, ByteDance's official international enterprise platform. Use one AIsa API key for Seed text/vision/video/coding models and Seedream image models.
Seed text/vision/video-understanding models use `POST /v1/chat/completions` (most also accept Anthropic-compatible `POST /v1/messages`). `seedream-5-0-260128` uses `POST /v1/images/generations` and `seedream-4-5-251128` uses `POST /v1/chat/completions`; both are billed per request. Dreamina Seedance video models are asynchronous through `POST /v1/video/generations`.
## Supported ByteDance models
| Model ID | Context | Capabilities | Price | Best for |
| ----------------------------------- | ------: | --------------------------- | --------------------------------------------------------: | --------------------------------------- |
| `seed-1-6-250915` | 262,144 | Text, Video, Vision | \$0.2250 in / \$0.9000 out per 1M | Stable general Seed route |
| `seed-1-6-flash-250715` | 262,144 | Text, Video, Vision | \$0.0675 in / \$0.2700 out per 1M | Fast, low-cost throughput |
| `seed-1-8-251228` | 262,144 | Coding, Text, Video, Vision | \$0.2250 in / \$1.8000 out per 1M | Stronger agentic and coding tasks |
| `seed-2-0-mini-260215` | 262,144 | Coding, Text, Video, Vision | \$0.1000 in / \$0.4000 out per 1M | Low-cost Seed 2.0 route |
| `seed-2-0-lite-260228` | 262,144 | Coding, Text, Video, Vision | \$0.2500 in / \$2.0000 out per 1M | Balanced Seed 2.0 route |
| `seed-2-0-pro-260328` | 262,144 | Coding, Text, Video, Vision | \$0.5000 in / \$3.0000 out per 1M | Strongest Seed 2.0 route |
| `seedream-4-5-251128` | N/A | Image, Vision | \$0.036/request | Image generation and editing |
| `seedream-5-0-260128` | 262,144 | Image, Vision | \$0.035/request | Newer Seedream image route |
| `dreamina-seedance-2-0-260128` | — | Video | \$4.30/1M tokens (480p/720p/4k), \$4.70/1M tokens (1080p) | Dreamina Seedance video generation |
| `dreamina-seedance-2-0-fast-260128` | — | Video | \$3.30/1M tokens (480p/720p) | Faster, lower-cost Seedance video route |
The date suffix in each model string is a release/version stamp in `YYMMDD` format, useful when pinning a production route. Dreamina Seedance video models are asynchronous: submit the job to `POST /v1/video/generations`, then poll `/v1/video/generations/{task_id}`. A `—` in the Context column means the current gateway metadata does not publish that model's context window.
## Quickstart
```python theme={null}
from openai import OpenAI
client = OpenAI(api_key="YOUR_AISA_API_KEY", base_url="https://api.aisa.one/v1")
response = client.chat.completions.create(
model="seed-2-0-pro-260328",
messages=[{"role": "user", "content": "Analyze this product requirements document and identify implementation risks."}]
)
print(response.choices[0].message.content)
```
## Image route example
```python theme={null}
response = client.chat.completions.create(
model="seedream-5-0-260128",
messages=[
{"role": "user", "content": "Create a clean product image of a glass water bottle on a white marble surface."}
]
)
```
## Common choices
| Need | Use |
| -------------------------------- | --------------------------------------------------------------------- |
| Lowest-cost Seed route | `seed-1-6-flash-250715` or `seed-2-0-mini-260215` |
| Strongest Seed text/coding route | `seed-2-0-pro-260328` |
| Stable Seed 1.x route | `seed-1-6-250915` |
| Image generation/editing | `seedream-5-0-260128` or `seedream-4-5-251128` |
| Video generation | `dreamina-seedance-2-0-260128` or `dreamina-seedance-2-0-fast-260128` |
## Data privacy
ByteDance Seed and Seedream requests are routed through BytePlus enterprise infrastructure. For compliance and data residency requirements, [contact us](mailto:developer@aisa.one).
## Next
* [All Chinese AI models](/docs/guides/chinese-llms)
* [Qwen and Wan models](/docs/guides/chinese-llms/qwen)
* [All supported AIsa models](/docs/guides/models)
# DeepSeek API - Access DeepSeek Models via AIsa
Source: https://aisa.one/docs/guides/chinese-llms/deepseek
Current AIsa guide to DeepSeek model IDs, context windows, endpoints, and prices, including deepseek-r1, deepseek-v3, deepseek-v3.1, deepseek-v3.2, deepseek-v4-flash, and deepseek-v4-pro.
AIsa gives you OpenAI-compatible access to the current DeepSeek model family with one API key, unified billing, usage logs, and gateway routing.
`deepseek-v4-pro` exposes `POST /v1/messages`, `POST /v1/chat/completions`, and `POST /v1/responses`. Other DeepSeek routes in the current catalog use `POST /v1/chat/completions`.
## Supported DeepSeek models
| Model ID | Context | Capabilities | Input / 1M | Output / 1M | Best for |
| ------------------- | ------: | ------------ | ---------: | ----------: | ----------------------------------------------------- |
| `deepseek-r1` | 262,144 | Coding, Text | \$0.4018 | \$1.6058 | Reasoning-heavy tasks |
| `deepseek-v3` | 262,144 | Coding, Text | \$0.2009 | \$0.8029 | Low-cost general and coding work |
| `deepseek-v3.1` | 262,144 | Coding, Text | \$0.4018 | \$1.2047 | Balanced reasoning and coding |
| `deepseek-v3.2` | 128,000 | Coding, Text | \$0.2009 | \$0.3017 | Very low-cost general use |
| `deepseek-v4-flash` | 262,144 | Coding, Text | \$0.0980 | \$0.1960 | Lowest-cost high-throughput DeepSeek route |
| `deepseek-v4-pro` | 262,144 | Coding, Text | \$0.3045 | \$0.6090 | Stronger DeepSeek route with multiple endpoint styles |
## Quickstart
```python theme={null}
from openai import OpenAI
client = OpenAI(api_key="YOUR_AISA_API_KEY", base_url="https://api.aisa.one/v1")
response = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[{"role": "user", "content": "Review this pull request for security and correctness."}]
)
print(response.choices[0].message.content)
```
## Common choices
| Need | Use |
| -------------------------------------------- | ------------------- |
| Cheapest DeepSeek text/coding | `deepseek-v4-flash` |
| General current DeepSeek route | `deepseek-v3.2` |
| Reasoning-focused route | `deepseek-r1` |
| Messages or Responses endpoint compatibility | `deepseek-v4-pro` |
## Data privacy
AIsa routes DeepSeek requests through an enterprise-backed aggregation path. Customer data is not used for model training under AIsa's enterprise agreements. For compliance details, [contact us](mailto:developer@aisa.one).
## Next
* [All Chinese AI models](/docs/guides/chinese-llms)
* [Qwen models](/docs/guides/chinese-llms/qwen)
* [AI model pricing](/docs/guides/pricing/ai-model-pricing-llm-inference)
# GLM API - Access Zhipu AI glm-5, glm-5.1, and glm-5.2 via AIsa
Source: https://aisa.one/docs/guides/chinese-llms/glm
Current AIsa guide to Zhipu GLM model access, including the exact lowercase model IDs glm-5, glm-5.1, and glm-5.2, context windows, endpoints, capabilities, and prices.
AIsa gives you OpenAI-compatible access to Zhipu AI's GLM family. The current AIsa catalog exposes the exact model IDs `glm-5`, `glm-5.1`, and `glm-5.2`; use lowercase in API calls.
All three accept `POST /v1/chat/completions`, Anthropic-compatible `POST /v1/messages`, and `POST /v1/responses`.
## Supported GLM models
| Model ID | Context | Capabilities | Input / 1M | Output / 1M | Best for |
| --------- | ------: | ------------ | ---------: | ----------: | ------------------------------------------------------- |
| `glm-5.2` | — | Text | \$0.7700 | \$2.6957 | Newest GLM 5 revision; highest-tier GLM route on AIsa |
| `glm-5.1` | — | Text | \$0.5775 | \$2.3107 | Mid-tier GLM 5 revision |
| `glm-5` | 128,000 | Coding, Text | \$0.4222 | \$1.9011 | Chinese-language reasoning, bilingual documents, coding |
Context windows and capability tags for `glm-5.1` and `glm-5.2` are not published in the current gateway metadata — check [aisa.one/models](https://aisa.one/models) for their live limits.
## Quickstart
```python theme={null}
from openai import OpenAI
client = OpenAI(api_key="YOUR_AISA_API_KEY", base_url="https://api.aisa.one/v1")
response = client.chat.completions.create(
model="glm-5",
messages=[{"role": "user", "content": "Analyze the competitive dynamics of China's cloud computing market."}]
)
print(response.choices[0].message.content)
```
## Use a GLM route when you need
* Chinese-language reasoning and long-form analysis
* Chinese-English bilingual document processing
* Coding help in Chinese development contexts
* A model family distinct from Alibaba, ByteDance, MiniMax, and Moonshot
## Data privacy
GLM requests through AIsa are covered by AIsa's enterprise agreement with Zhipu AI. Customer data is not used for model training. For compliance requirements, [contact us](mailto:developer@aisa.one).
## Next
* [All Chinese AI models](/docs/guides/chinese-llms)
* [MiniMax models](/docs/guides/chinese-llms/minimax)
* [All supported AIsa models](/docs/guides/models)
# Kimi API - Access Moonshot AI Models via AIsa
Source: https://aisa.one/docs/guides/chinese-llms/kimi
Current AIsa guide to Moonshot Kimi model IDs, context windows, capabilities, endpoints, and prices, including kimi-k3, kimi-k2.7-code, kimi-k2-thinking, kimi-k2.5, and kimi-k2.6.
AIsa gives you OpenAI-compatible access to Moonshot AI's Kimi models under one AIsa key. Kimi routes are useful for agentic coding, long-context text, document vision, visual coding, and video understanding.
All current Kimi models accept `POST /v1/chat/completions`, Anthropic-compatible `POST /v1/messages`, and `POST /v1/responses`.
## Supported Kimi models
| Model ID | Context | Capabilities | Input / 1M | Output / 1M | Best for |
| ------------------ | ------: | --------------------------- | ---------: | ----------: | ------------------------------------------------------------- |
| `kimi-k3` | — | Text | \$3.1579 | \$15.7895 | Newest Kimi generation; Moonshot's highest-tier route on AIsa |
| `kimi-k2.7-code` | — | Text | \$0.6257 | \$2.5992 | Coding-focused K2.7 route |
| `kimi-k2.6` | 128,000 | Text | \$0.6587 | \$2.7360 | General Kimi reasoning and long-context text |
| `kimi-k2.5` | 262,144 | Coding, Text, Video, Vision | \$0.4229 | \$2.2186 | Visual coding, document vision, long-video understanding |
| `kimi-k2-thinking` | 256,000 | Coding, Text | \$0.4229 | \$1.6903 | Reasoning and agentic coding |
Context windows and capability tags for `kimi-k3` and `kimi-k2.7-code` are not published in the current gateway metadata — check [aisa.one/models](https://aisa.one/models) for their live limits.
## Quickstart
```python theme={null}
from openai import OpenAI
client = OpenAI(api_key="YOUR_AISA_API_KEY", base_url="https://api.aisa.one/v1")
response = client.chat.completions.create(
model="kimi-k2.5",
messages=[{"role": "user", "content": "Analyze this UI screenshot and suggest implementation changes."}]
)
print(response.choices[0].message.content)
```
## Common choices
| Need | Use |
| ------------------------------------------ | ------------------ |
| Latest Kimi generation | `kimi-k3` |
| Coding-focused Kimi route | `kimi-k2.7-code` |
| Agentic reasoning and coding | `kimi-k2-thinking` |
| Vision, visual coding, documents, or video | `kimi-k2.5` |
| General Kimi text reasoning | `kimi-k2.6` |
## Data privacy
AIsa has an enterprise agreement with Moonshot AI covering Kimi requests. For organization-specific compliance requirements, [contact us](mailto:developer@aisa.one).
## Next
* [All Chinese AI models](/docs/guides/chinese-llms)
* [DeepSeek models](/docs/guides/chinese-llms/deepseek)
* [AI model pricing](/docs/guides/pricing/ai-model-pricing-llm-inference)
# MiniMax API - Access MiniMax Models via AIsa
Source: https://aisa.one/docs/guides/chinese-llms/minimax
Current AIsa guide to MiniMax model IDs, context windows, capabilities, endpoints, and prices, including MiniMax-M2.5 and MiniMax-M3.
AIsa gives you access to MiniMax models with a single OpenAI-compatible API key. The current catalog includes `MiniMax-M2.5` for cost-efficient text/coding and `MiniMax-M3` for 1M-token context with vision/video capability tags.
`MiniMax-M2.5` uses `POST /v1/chat/completions`. `MiniMax-M3` exposes `POST /v1/messages`, `POST /v1/chat/completions`, and `POST /v1/responses`.
## Supported MiniMax models
| Model ID | Context | Capabilities | Input / 1M | Output / 1M | Best for |
| -------------- | --------: | --------------------------- | ---------: | ----------: | -------------------------------------------- |
| `MiniMax-M2.5` | 262,144 | Coding, Text | \$0.2100 | \$0.8400 | Cost-efficient long-document text and coding |
| `MiniMax-M3` | 1,000,000 | Coding, Text, Video, Vision | \$0.2100 | \$0.8400 | 1M-context reasoning with vision/video tags |
## Quickstart
```python theme={null}
from openai import OpenAI
client = OpenAI(api_key="YOUR_AISA_API_KEY", base_url="https://api.aisa.one/v1")
response = client.chat.completions.create(
model="MiniMax-M3",
messages=[{"role": "user", "content": "Summarize this long research packet and extract action items."}]
)
print(response.choices[0].message.content)
```
## Common choices
| Need | Use |
| ----------------------------------------------------- | -------------- |
| Cost-efficient text and coding | `MiniMax-M2.5` |
| 1M-token context | `MiniMax-M3` |
| Anthropic Messages or OpenAI Responses endpoint style | `MiniMax-M3` |
| Vision or video-capability tags | `MiniMax-M3` |
## Data privacy
MiniMax requests through AIsa are covered by AIsa's enterprise agreement with MiniMax. Customer data is not used for model training. For compliance requirements, [contact us](mailto:developer@aisa.one).
## Next
* [All Chinese AI models](/docs/guides/chinese-llms)
* [Kimi models](/docs/guides/chinese-llms/kimi)
* [GLM models](/docs/guides/chinese-llms/glm)
# Qwen and Wan API - Access Alibaba Models via AIsa
Source: https://aisa.one/docs/guides/chinese-llms/qwen
Current AIsa guide to Alibaba Qwen and Wan model IDs, context windows, capabilities, endpoints, and prices, including qwen3.7-max, qwen-flash, Qwen VL, Qwen Coder, Wan image models, and translation models.
AIsa is an Alibaba Cloud Qwen Key Account Partner. Use one AIsa API key to access Qwen text, coding, vision, audio, video-understanding, translation, and Wan image models through the same gateway as your other LLMs.
Qwen text, coding, vision, and translation models use `POST /v1/chat/completions` (most also accept Anthropic-compatible `POST /v1/messages`). Wan image models use `POST /v1/images/generations` and `POST /v1/images/edits` and are billed per request; Wan video models are asynchronous through `POST /v1/video/generations` and are billed per output second.
## Supported Alibaba models
| Model ID | Context | Capabilities | Input / 1M | Output / 1M or request | Best for |
| -------------------------------- | --------: | ---------------------------------- | ---------: | ----------------------------------------: | -------------------------------------------- |
| `qwen-flash` | 1,000,000 | Audio, Coding, Text, Video, Vision | \$0.0154 | \$0.1512 | High-volume multimodal work |
| `qwen-mt-flash` | 1,000,000 | Text | \$0.0720 | \$0.2205 | Fast translation |
| `qwen-mt-lite` | 1,000,000 | Text | \$0.0840 | \$0.2520 | Lightweight translation |
| `qwen-plus-2025-12-01` | 1,000,000 | Audio, Coding, Text, Video, Vision | \$0.2800 | \$0.8400 | General multimodal applications |
| `qwen3-coder-480b-a35b-instruct` | 262,144 | Coding, Text | \$1.0500 | \$5.2500 | Maximum Qwen coding capability |
| `qwen3-coder-flash` | 1,000,000 | Coding, Text | \$0.2100 | \$1.0500 | Fast coding throughput |
| `qwen3-coder-plus` | 1,000,000 | Coding, Text | \$0.7000 | \$3.5000 | Coding agents and code review |
| `qwen3-max` | 262,144 | Audio, Coding, Text, Video, Vision | \$0.7200 | \$3.6000 | Strong general Qwen route |
| `qwen3-vl-flash` | 131,072 | Coding, Text, Video, Vision | \$0.0350 | \$0.2800 | Low-cost vision and video understanding |
| `qwen3-vl-flash-2025-10-15` | 131,072 | Coding, Text, Video, Vision | \$0.0350 | \$0.2800 | Pinned Qwen VL Flash version |
| `qwen3-vl-plus` | 131,072 | Coding, Text, Video, Vision | \$0.1400 | \$1.1200 | Stronger document and spatial vision |
| `qwen3.6-plus` | 1,000,000 | Coding, Text, Video, Vision | \$0.2760 | \$1.6510 | Long-context Chinese/bilingual work |
| `qwen3.6-plus-2026-04-02` | 262,144 | Coding, Text, Vision | \$0.2760 | \$1.6510 | Pinned Qwen 3.6 Plus route |
| `qwen3.7-max` | 1,000,000 | Coding, Text | \$1.1550 | \$3.4657 | Frontier Qwen reasoning and agentic coding |
| `qwen3.7-max-2026-06-08` | — | Text | \$1.1550 | \$3.4657 | Pinned Qwen 3.7 Max route |
| `qwen3.7-plus` | — | Text | \$0.1932 | \$0.7707 | Lower-cost Qwen 3.7 route |
| `wan2.7-image` | N/A | Image, Text, Vision | - | \$0.030/request | Image generation and editing |
| `wan2.7-image-pro` | N/A | Image, Text, Video, Vision | - | \$0.075/request | Higher-quality image and image-to-video work |
| `wan2.7-t2v` | — | Video | - | \$0.060208/s (720p), \$0.100347/s (1080p) | Text-to-video generation |
| `wan2.7-i2v` | — | Video | - | \$0.060208/s (720p), \$0.100347/s (1080p) | Image-to-video generation |
| `wan2.7-r2v` | — | Video | - | \$0.060208/s (720p), \$0.100347/s (1080p) | Reference-to-video generation |
Video models are asynchronous: submit the job to `POST /v1/video/generations`, then poll `/v1/video/generations/{task_id}`. A `—` in the Context column means the current gateway metadata does not publish that model's context window.
## Quickstart
```python theme={null}
from openai import OpenAI
client = OpenAI(api_key="YOUR_AISA_API_KEY", base_url="https://api.aisa.one/v1")
response = client.chat.completions.create(
model="qwen3.7-max",
messages=[{"role": "user", "content": "Plan a refactor for this Python service."}]
)
print(response.choices[0].message.content)
```
## Common choices
| Need | Use |
| ------------------------------------ | ------------------------------------------- |
| Cheapest high-volume text/multimodal | `qwen-flash` |
| Dedicated translation | `qwen-mt-flash` or `qwen-mt-lite` |
| Best coding balance | `qwen3-coder-plus` |
| Fast coding | `qwen3-coder-flash` |
| Maximum Qwen coding capability | `qwen3-coder-480b-a35b-instruct` |
| Long-context reasoning | `qwen3.7-max` or `qwen3.6-plus` |
| Vision/document/video work | `qwen3-vl-plus` or `qwen3-vl-flash` |
| Image generation/editing | `wan2.7-image-pro` or `wan2.7-image` |
| Video generation | `wan2.7-t2v`, `wan2.7-i2v`, or `wan2.7-r2v` |
## Data privacy
Qwen requests through AIsa are processed under AIsa's Alibaba Cloud Key Account enterprise agreement. For compliance documentation, [contact us](mailto:developer@aisa.one).
## Next
* [All Chinese AI models](/docs/guides/chinese-llms)
* [All supported AIsa models](/docs/guides/models)
* [AI model pricing](/docs/guides/pricing/ai-model-pricing-llm-inference)
# AIsa vs. OpenRouter - The Best Alternative for AI Agents
Source: https://aisa.one/docs/guides/compare/openrouter
OpenRouter is a popular platform for accessing multiple large language models through a single API. However, as AI applications evolve from passive chatbots to autonomous agents, developers need more than just a text-generation router.
AIsa is built specifically as the infrastructure layer for the agentic economy. While we share the core functionality of an LLM gateway, AIsa goes significantly further by integrating data APIs, agent skills, and a native machine-to-machine payment layer.
## Feature Comparison
The table below outlines the key differences between AIsa and OpenRouter for AI agent development.
| Feature | AIsa | OpenRouter |
| --------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- |
| **LLM Inference Pricing** | Provider rates; **up to \~30% cheaper** on select non-Anthropic models | Pass-through (same as direct provider rates) |
| **Supported AI Models** | 108-model live catalog: GPT, Claude, Gemini, Grok, DeepSeek, Qwen, Kimi, MiniMax, GLM, Seed, Seedream, Dreamina, Wan, StepFun, and MiMo | 100+ |
| **OpenAI API Compatibility** | Yes | Yes |
| **Data APIs (Search, Social, Finance)** | **100+ built-in endpoints** | None (LLM inference only) |
| **Agent Skills Marketplace** | **Yes** | Not supported |
## Why Choose AIsa?
### 1. The Complete Agent Infrastructure Stack
Agents need to think, act, and transact. OpenRouter only provides the "thinking" layer (LLMs). AIsa provides the complete stack:
* **Think:** Live LLM and media model catalog including `gpt-5.6-sol`, `claude-opus-5`, `claude-sonnet-5`, `gemini-3.5-flash`, `grok-4.5`, `qwen3.7-max`, `kimi-k3`, `deepseek-v4-flash`, and `MiniMax-M3`
* **Act:** 100+ non-LLM data APIs (Twitter, Tavily Search, Polymarket, Financial Data)
* **Transact:** Native stablecoin micropayments for autonomous agents
### 2. Lower Inference Costs on Select Models
For many non-Anthropic models, AIsa negotiates volume discounts with the upstream provider and passes the savings through. Anthropic models (Claude family) are priced at provider rates — no AIsa-applied discount — but still benefit from the unified billing, routing, and fallback layer.
The table below shows current AIsa public prices for representative routes (USD per 1M input / output tokens unless noted). OpenRouter pricing changes independently, so use its live dashboard for a final side-by-side comparison.
| Model | Current AIsa pricing | Notes |
| ------------------- | -------------------: | ----------------------------------------- |
| `deepseek-v4-flash` | \$0.0980 / \$0.1960 | Very low-cost text and coding route |
| `qwen-flash` | \$0.0225 / \$0.1800 | Low-cost high-volume multimodal route |
| `kimi-k2.5` | \$0.4018 / \$2.1077 | Kimi vision/video/coding route |
| `MiniMax-M3` | \$0.2100 / \$0.8400 | 1M-context MiniMax route |
| `kimi-k3` | \$3.0000 / \$15.0000 | Newest Kimi generation |
| `claude-opus-5` | \$5.0000 / \$25.0000 | Anthropic route at provider-style pricing |
See [AI Model Pricing](/docs/guides/pricing/ai-model-pricing-llm-inference) for the full AIsa catalog.
### 3. Built-in Agentic Payments
AIsa is the first unified API to natively support the Machine Payment Protocol (MPP) and x402 standards. This allows your agents to autonomously pay for the exact compute, data, and services they consume using a single funded wallet, eliminating the need for complex subscription management.
### 4. Seamless MCP Integration
AIsa provides a fully integrated Model Context Protocol (MCP) server. This allows developers to instantly connect AIsa's 100+ data APIs directly into modern AI development environments like Cursor and Windsurf, streamlining the creation of context-aware applications.
## Migration Guide: Switching from OpenRouter
Switching from OpenRouter to AIsa takes less than a minute. Because both platforms are fully compatible with the OpenAI API specification, you do not need to rewrite your application logic.
Simply update your `base_url` and authenticate with your AIsa API key:
```python theme={null}
from openai import OpenAI
# 1. Change the base_url to AIsa
# 2. Swap your OpenRouter key for an AIsa key
client = OpenAI(
base_url="https://api.aisa.one/v1",
api_key="sk-aisa-..."
)
# Your existing code works without modification
response = client.chat.completions.create(
model="gpt-5.4-mini",
messages=[
{"role": "user", "content": "Hello, world!"}
]
)
```
To get started, create an account and generate an [API Key](/docs/guides/dashboard/overview). New users receive a **\$2 free credit** to test the platform.
# Dashboard Overview – Monitor Your LLM API Usage
Source: https://aisa.one/docs/guides/dashboard/overview
The **Dashboard** is the landing page of the [AIsa Console](https://console.aisa.one/). It summarizes spend, traffic, and account health for the last 30 days, so you can tell at a glance whether your integration is working and how your usage is trending.
The usage figures — spend, requests, and model split — cover a fixed 30-day window. Balance, key, and account details are current state, not a windowed total. For arbitrary date ranges, per-request detail, or filtering by key and model, use [Usage & Logs](https://console.aisa.one/logs).
## Header Actions
Two shortcuts sit next to the page title:
* **New API Key** opens [API Keys](https://console.aisa.one/api-keys) to create a key
* **Top Up** opens [Billing](https://console.aisa.one/billing) to add balance
If a first top-up promotion is active on your account, the Top Up button shows the discount and a banner appears above the metrics with the remaining time.
## Metric Cards
The top row is the fastest read on account state.
**Total Balance** is the credit available for API spend. It is drawn down automatically as requests are processed.
**Spend · 30D** is what your traffic cost over the last 30 days, with the daily average below it.
**Requests · 30D** is the number of API calls in the same window. The subtitle shows the error rate — the share of those calls that failed. A rate climbing above your normal baseline is usually the first sign of a bad key, an unavailable model, or a malformed request.
**Active Keys** shows enabled keys out of total keys, plus when any key was last used. If it reads *No key activity yet*, no request has ever been made with your keys.
## Spend and Requests Charts
Two charts break the same 30-day totals down by day.
**Spend** is plotted in USD per day, **Requests** in calls per day. The value above each chart repeats the 30-day total, and the number in the top-right corner marks the peak day.
Hover — or focus the chart and use the left and right arrow keys — to read the exact value and date for any single day. The labels below the line mark the start, middle, and end of the window.
Reading the two charts together separates a traffic spike from a cost spike: requests flat but spend rising usually means a shift toward more expensive models or longer contexts.
## Model Split
Model Split shows which models your traffic actually went to.
Each row lists a model, its call count for the last 30 days, and its share of total calls. **View usage** opens [Usage & Logs](https://console.aisa.one/logs) for the full breakdown.
If nothing has been called in the window, the panel reports that no model data is available.
## Account
The Account panel shows your current identity and access status:
* Display name and email
* **Account type** — your current plan tier
* **Security** — *Verified* or *Pending*, reflecting email verification
* **Member since** — account creation date
* **Last sign-in** — time of your most recent login
## When Data Fails to Load
If balance, key, or usage data cannot be fetched, an inline warning appears at the top of the page with a **Refresh** button that retries all three requests at once.
## Related
Test any model in the browser before writing code.
Per-request cost, latency, and audit trail.
# Model Playground – Test 100+ AI Models from a Single Endpoint
Source: https://aisa.one/docs/guides/dashboard/playground
The Playground is an interactive environment for testing models available through AIsa before integrating them into your application. It sends real requests through the same relay endpoints your production code uses, and shows you the exact request body and raw response alongside the result.
Open it at [**Console → Playground**](https://console.aisa.one/playground). Requests are sent with one of your own API keys, so you need at least one **enabled key** before running a test. New accounts receive **free credits** that the Playground can spend immediately (the exact amount and eligibility depend on the promotion running at the time — see the official announcements for current terms).
## Endpoint Bar
The bar above the panels shows the exact endpoint the current configuration targets, for example `POST https://api.aisa.one/v1/chat/completions`, along with a `stream: true` / `stream: false` chip that reflects the Stream toggle.
The endpoint changes when you change the **Route**.
## Request Panel
The left panel defines the request.
### Key
The **Key** selector chooses which of your API keys authenticates the request. Only enabled keys are listed, and each entry shows the key name plus a masked prefix and suffix.
The full key value is never sent to the browser — the request is signed on the backend. Usage is attributed to the selected key, so you can isolate Playground traffic from application traffic by testing with a dedicated key.
If you have no enabled keys, create one first — see [API Keys](https://console.aisa.one/api-keys).
### Route
The **Route** selector chooses the API surface used for the request:
* **Chat completions** — `POST /v1/chat/completions`, the OpenAI-compatible route. The system prompt is sent as a `system` message inside `messages`.
* **Messages** — `POST /v1/messages`, the Anthropic-compatible route. The system prompt is sent as a top-level `system` field.
Changing the route reloads the model list, because the two routes expose different sets of models.
### Model
The **Model** selector lists every model the selected key can reach on the current route. The counter below the selectors shows how many models were loaded, and the refresh button re-fetches the list.
Switching models does not change the request format — only the `model` identifier changes.
If your account is still on trial credits and the selected model requires a paid balance, the Playground shows a top-up notice and disables **Run Test** for that model. Pick another model or add credits to continue.
## Generation Parameters
### Stream
**Stream** controls whether the response is delivered incrementally as server-sent events. When enabled, output appears token by token in the Output panel and `"stream": true` is included in the request body.
### Temperature
**Temperature** is opt-in: the toggle next to it decides whether `temperature` is included in the request at all. When the toggle is off, the parameter is omitted and the model's own default applies.
When enabled, lower values produce more deterministic output and higher values increase variation. Accepted range is 0–2.
### Max Tokens
**Max tokens** sets the upper bound on generated tokens, controlling response length and cost. It is always included in the request.
### System and User
The **System** field carries instructions that shape the model's behavior; the **User** field carries the prompt itself. Both are plain text areas and both update the request preview as you type.
**Run Test** sends the request. While a request is in flight the button becomes **Stop**, which aborts the connection immediately.
## Debug Panel
The right panel shows exactly what AIsa sends, before you run anything.
* **JSON** — the request body as it will be posted, with line numbers
* **cURL** — the same request as a copy-and-paste terminal command using `$AISA_API_KEY`
The copy button in the panel header copies whichever tab is active. The cURL command is the fastest way to move a validated configuration from the Playground into a script or a teammate's terminal.
The generated command wraps the JSON body in single quotes. If your System or User prompt contains a single quote (`'`), escape it before running the command in a shell, or the body will be truncated.
## Output Panel
Below the request preview, the Output panel shows the response.
* **Result** — the extracted assistant text, streamed live when Stream is on
* **Response** — the response payload: the full JSON body for a non-streamed request, or, when streaming, the `data` payload of each SSE event on its own line (the `data:` prefixes and other event fields are stripped)
The footer line reports request latency in milliseconds, the `x-request-id` returned by the gateway, and whether the call was streamed. Use that request ID when correlating a test with the [Usage Logs](https://console.aisa.one/logs) page or when contacting support.
Errors are shown inline, with the raw error body available under the **Response** tab.
## Usage and Billing
All Playground requests count toward usage and billing exactly like API requests, and appear in your logs and usage charts under the key you selected.
## What the Playground Is Best Used For
* Comparing outputs across models without changing code
* Checking that a model is reachable with a specific key
* Validating the request body before writing the integration
* Copying a working cURL command as a starting point
* Debugging errors with the raw response and request ID in one place
## Related
Ship the same request via code once you've validated it here.
Create and manage the API key the Playground authenticates with.
Browse current model IDs, context windows, endpoints, capabilities, and billing notes.
# Usage Logs – Track API Requests, Tokens & Billing
Source: https://aisa.one/docs/guides/dashboard/usage-logs
**Usage & Logs** is the per-request record of everything that went through your AIsa keys in the last 30 days. Where the [Dashboard](/docs/guides/dashboard/overview) answers *how much*, this page answers *which request* — endpoint, model, latency, tokens, cache hits, cost, and status, one row at a time.
Open it at [**Console → Usage & Logs**](https://console.aisa.one/logs). Every figure on the page reflects the filters currently applied, not just the rows visible on screen.
## Summary Cards
**Requests** is the number of calls matching the current filters.
**Tokens** is input plus output tokens across those calls.
**Cache Tokens** is cache read plus cache write hits. On models that support prompt caching, a high read count against a low token count is what a working cache looks like.
**Usage Value** is what the matching traffic was worth at list rates, with the amount actually **charged** to your balance below it. The two differ when a discount, promotion, or refund applied.
## Usage Value Trend and Model Split
**Usage Value Trend** plots usage value in USD per day across the window. Hover — or focus the chart and use the arrow keys — to read any single point; the number in the top-right marks the peak.
**Model Split** ranks models by usage value, up to five entries. Note that it is computed from the rows on the **current page**, so it follows your filters and paging rather than summarizing all 30 days — for the full-window breakdown, use the model split on the [Dashboard](/docs/guides/dashboard/overview).
## Search and Filters
The search field matches against request ID, key, endpoint, and model — pasting a request ID from an error response or from the [Playground](/docs/guides/dashboard/playground) jumps straight to that call.
Three controls narrow the table further:
* **Rows** — 10, 20, or 50 entries per page
* **Stream** — All, Streaming, or Non-Streaming
* **Status** — All, Success, Failed, or Refunded
Changing any filter resets you to the first page.
## Log Table Columns
Each row is one API request.
| Column | What it shows |
| --------------- | ------------------------------------------------------------------------------------- |
| **Time** | When the request was received, with its request ID underneath |
| **Endpoint** | The API route that served it, for example `/v1/chat/completions` |
| **API Key** | Name of the key used, or its prefix if the key is unnamed |
| **Model** | The model that processed the request |
| **Stream** | `stream` or `sync` |
| **Latency** | Total request duration, with time to first token below it |
| **Tokens** | Total tokens, with the input / output split below |
| **Cache** | Total cache tokens, with the read / write split below |
| **Usage Value** | Value of the call at list rates; if the amount charged differs, it appears underneath |
| **Status** | `success`, `failed`, or `refunded` |
The footer reports which slice of the result set you are viewing, with previous and next controls.
If nothing matches, the table says so rather than showing an empty grid — widen the date-independent filters or clear the search box.
## Practical Uses
* **Debug a failed call** — filter by Failed, find the request ID, and match it against your application logs
* **Explain a cost spike** — sort out which model and key drove usage value on the peak day
* **Verify caching works** — compare cache read counts against total tokens for repeated prompts
* **Check streaming behavior** — filter to Streaming and compare time to first token against total latency
* **Audit key activity** — search a key name to see everything it has done in the window
## Related
High-level spend and usage metrics.
Per-token rates driving the costs shown in logs.
How request and token rates affect your traffic.
# Frequently Asked Questions - AIsa Unified API
Source: https://aisa.one/docs/guides/faq
This page answers common questions about the AIsa unified model gateway, compatibility, pricing, and infrastructure.
## How does AIsa compare to OpenRouter or LiteLLM?
While AIsa shares the core functionality of an LLM router (aggregating multiple models behind a single API), AIsa goes significantly further by integrating 100+ non-LLM data APIs (Twitter, Financial, Search), an MCP server, and native stablecoin micropayments for autonomous agents.
AIsa is specifically built as the infrastructure layer for the agentic economy, where agents not only need to think (LLMs) but also act (data APIs) and transact (Machine-to-Machine Payments).
## Do I need to change my existing OpenAI code?
No. AIsa is fully API-compatible with the OpenAI specification.
If you are using the official OpenAI Python or TypeScript SDKs, you only need to change your `base_url` to `https://api.aisa.one/v1` and authenticate using an [AIsa API Key](/docs/guides/dashboard/overview). All standard parameters like `temperature`, `top_p`, and streaming responses work exactly as expected.
## How is pricing calculated?
AIsa uses a unified usage-based billing system with no subscription fees.
* **LLM inference** is billed per-token based on the underlying provider's cost.
* **Data APIs** (like Search, Financial, or Twitter endpoints) are billed on a flat per-call basis.
All usage is deducted from your single, centralized account balance. See the [Pricing Overview](/docs/guides/pricing) for detailed token and per-call costs.
## How do AIsa's LLM prices compare to OpenRouter?
For many non-Anthropic models, AIsa prices LLM inference **up to \~30% below** the direct provider rates listed on OpenRouter. Anthropic models (Claude family) are priced at provider rates. See the full side-by-side breakdown in [AIsa vs. OpenRouter](/docs/guides/compare/openrouter).
## What models are available on AIsa?
AIsa provides a single gateway for the live model catalog — 108 models as of August 5, 2026. Current families include OpenAI GPT, Anthropic Claude, Google Gemini, xAI Grok, DeepSeek, Alibaba Qwen and Wan, Moonshot Kimi, MiniMax, Zhipu GLM, ByteDance Seed, Seedream and Dreamina, StepFun, and Xiaomi MiMo.
For a complete and up-to-date list of exact model IDs, context windows, endpoints, capabilities, and billing notes, visit the [supported model catalog](/docs/guides/models) and [AI Model Pricing](/docs/guides/pricing/ai-model-pricing-llm-inference) documentation.
## How do I get started?
Proceed to the [Getting Started Guide](/docs/guides/getting-started-with-aisa) to create an account, generate an API key, and make your first unified API call using your free \$2 signup credit.
# Getting Started with AIsa - Unified LLM API for AI Agents
Source: https://aisa.one/docs/guides/getting-started-with-aisa
This technical guide outlines the process of creating your first authenticated request using the AIsa Unified Model Gateway. Upon completion, you will be capable of calling AIsa's live model catalog through a single API endpoint using standard OpenAI-compatible tooling.
## Prerequisites
To complete this quickstart, you must possess the following:
1. An active AIsa account.
2. A valid API key generated from the AIsa dashboard.
3. A foundational understanding of OpenAI-style Chat Completions APIs.
All newly registered accounts automatically receive a **\$2.00 free credit balance**. These funds are immediately available for testing within the browser-based Model Playground or via direct REST API calls.
## Step 1: Account Creation and API Key Generation
The first step requires establishing an identity on the platform and generating a secure authentication token.
1. Navigate to the [AIsa registration portal](https://console.aisa.one/) and create an account. The platform supports standard email registration, which requires verifying your email address before setting a password, as well as Single Sign-On (SSO) via Google OAuth and GitHub OAuth. Either path lands you in the dashboard once the account is active.
2. Upon successful registration, you are directed to the API Keys page, where a key has already been generated for you. Copy and store this key securely, it authenticates all requests and is tied to your usage and billing profile.
3. To create additional API keys or set spending limits, return to the API Keys page at any time. When creating or editing a key, you can assign it a quota, the maximum amount that key is permitted to spend, or enable unlimited quota to remove the cap entirely.
> Note: A key's quota is a spending cap on that specific key, not your total funds. Your credit balance is the overall amount available in your account wallet; a key can only spend up to whichever is lower, its quota or your remaining balance. This is useful when sharing keys across projects or team members, as it prevents any single key from consuming your entire balance.
A practical pattern is one key per service or environment — for example a development key with a small quota, and a production key with a larger one — so that revoking or rotating a single key never interrupts your other integrations. See [Authentication](/docs/guides/authentication) for the full set of key-management practices.
Your API key authenticates all requests and is strictly tied to your usage metering and billing profile. It is critical to maintain the security of this key; never expose it in client-side code, public repositories, or unsecured environment variables.
## Step 2: Executing Your First API Call
AIsa exposes a single API endpoint (`https://api.aisa.one/v1`) that dynamically routes requests to multiple providers based on the specified model parameter.
Because the AIsa gateway is fully compliant with OpenAI's Chat Completions API specification, developers only need to modify three variables in their existing codebases:
* `base_url`: Must point to the AIsa endpoint.
* `api_key`: Must be your generated AIsa token.
* `model`: Must be a valid model identifier supported by AIsa.
### Example: REST API Request via cURL
The following example demonstrates a standard HTTP POST request to the completions endpoint.
```curl theme={null}
curl --request POST \
--url https://api.aisa.one/v1/chat/completions \
--header 'Authorization: Bearer ' \
--header 'Content-Type: application/json' \
--data '
{
"model": "gpt-5.4-mini",
"messages": [
{
"role": "user",
"content": "Explain the concept of an AI gateway in one concise sentence."
}
],
"stream": false
}'
```
The response format mirrors the standard OpenAI schema, returning a JSON object containing the `choices` array, the generated `message`, and detailed token usage metrics for billing transparency.
## Step 3: Integrating with Official SDKs
Due to its strict API compatibility, AIsa integrates natively with official OpenAI SDKs, eliminating the need for custom libraries.
### Python SDK Integration
To utilize AIsa via Python, install the `openai` package and instantiate the client with your AIsa credentials.
```python theme={null}
from openai import OpenAI
client = OpenAI(
api_key="",
base_url="https://api.aisa.one/v1"
)
response = client.chat.completions.create(
model="gpt-5.4-mini",
messages=[
{"role": "user", "content": "Explain the concept of an AI gateway in one concise sentence."}
],
stream=False
)
print(response.choices[0].message.content)
```
### TypeScript SDK Integration
Similarly, Node.js environments can leverage the official `openai` NPM package.
```typescript theme={null}
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.AISA_API_KEY,
baseURL: "https://api.aisa.one/v1",
});
async function main() {
const response = await client.chat.completions.create({
model: "gpt-5.4-mini",
messages: [
{ role: "user", content: "Explain the concept of an AI gateway in one concise sentence." }
],
stream: false,
});
console.log(response.choices[0].message.content);
}
main();
```
## Next Steps
With your authentication established and the basic integration pattern confirmed, you can proceed to explore more advanced platform features.
Developers are encouraged to utilize the [Model Playground](/docs/guides/dashboard/playground) to visually inspect request payloads, test multimodal inputs, and compare the outputs of different models prior to deploying code into production environments. For detailed cost calculations regarding token consumption, review the [AI Model Pricing](/docs/guides/pricing/ai-model-pricing-llm-inference) documentation.
# Pre-Built Skills vs Custom Skills — When to Use Each
Source: https://aisa.one/docs/guides/learn/agent-skills-vs-tools
Understand when to install a pre-built Agent Skill from the agent-skills registry versus creating your own SKILL.md from scratch with aisa skills init.
There are two ways to give your AI coding agent new capabilities with AIsa Agent Skills: install a pre-built skill from the [agent-skills](https://github.com/AIsa-skills) registry, or write your own `SKILL.md` from scratch. The right choice depends on whether your use case is already covered.
***
## The core difference
| | **Pre-built skill** (from registry) | **Custom skill** (your own SKILL.md) |
| ------------------ | ------------------------------------------------------------------- | ------------------------------------- |
| **Source** | [AIsa-team/agent-skills](https://github.com/AIsa-team/agent-skills) | You write it |
| **How to install** | `aisa skills install ` | `aisa skills init ` + edit |
| **Setup time** | 30 seconds | Minutes to hours |
| **Maintenance** | Managed by AIsa team | Yours to maintain |
| **API coverage** | AIsa's public catalogue | Any API you can reach |
| **Customisation** | Use as-is | Fully custom instructions and scripts |
***
## Use a pre-built skill when…
**The capability already exists in the registry.** If you need web search, financial data, Twitter/X access, image/video generation, or YouTube research — there's already a skill for it. Installing it takes one command and it comes with tested scripts and worked examples.
**You want the AIsa team to maintain it.** Pre-built skills are updated when the underlying APIs change. You don't have to track API deprecations or rewrite instructions when endpoints move.
**You're prototyping quickly.** `aisa skills install market` and a new Claude Code session is all you need to start querying live stock prices. Writing, testing, and maintaining an equivalent custom skill takes meaningfully longer.
### Example: install and use the market skill
```bash theme={null}
# Install
aisa skills install market
# Open a new agent session and ask:
# "Pull the last 30 days of NVDA price data and flag any days where
# the move exceeded 5%. Cross-reference with earnings dates."
```
The agent reads the `market` skill description, loads the `SKILL.md` instructions, runs the bundled Python client, and calls AIsa's finance API — without you writing any code.
***
## Write a custom skill when…
**You need to call your own internal APIs.** Pre-built skills cover AIsa's public API catalogue. They can't query your company's internal data warehouse, CRM, or proprietary service. For those, write a SKILL.md that describes your internal endpoints and authentication.
**The existing skill doesn't cover your exact use case.** If you need a very specific workflow — a multi-step process combining several APIs in a particular order — a custom skill lets you encode exactly that sequence in the instructions body.
**You want to share domain-specific knowledge with the agent.** SKILL.md files aren't just API wrappers. You can include domain context, decision rules, output formatting requirements, and caveats that your team has learned from production use.
**You want to publish a skill for others.** Custom skills can be submitted to the [agent-skills](https://github.com/AIsa-team/agent-skills) registry as a pull request. If you've built something useful on top of AIsa APIs, contributing it benefits the whole ecosystem.
### Example: scaffold and edit a custom skill
```bash theme={null}
# Start from the closest built-in template
aisa skills init internal-crm --template default
# Edit the generated SKILL.md
# - Set name, description, and metadata
# - Write instructions that explain your CRM's auth and endpoints
# - Add example curl/Python commands for common queries
```
The `description` field is the most important line you'll write. It's what your agent reads at startup to decide when to activate the skill. Be specific about the trigger condition:
```yaml theme={null}
# ❌ Too generic — the agent won't know when to use this
description: "Internal CRM access."
# ✅ Clear trigger — the agent knows exactly when this applies
description: "Look up customer account details, support history, and
renewal dates from the internal Salesforce CRM. Use when the user
asks about a specific customer or account."
```
***
## Quick decision guide
```
Is there a pre-built skill in the OpenClaw registry for this?
│
├── YES → Does it cover your use case without modification?
│ ├── YES → aisa skills install
│ └── NO → aisa skills init (customise or extend)
│
└── NO → Does it involve an AIsa public API not yet in the registry?
├── YES → aisa skills init --template
│ (and consider submitting a PR to agent-skills)
└── NO → aisa skills init --template default
(write instructions for your internal API)
```
***
## What's next
* [Agent Skills](/docs/agent-skills) — browse the full catalogue of pre-built skills
* [Quickstart](/docs/agent-skills/quickstart) — install your first skill in 5 minutes
* [Standards](/docs/agent-skills/standards) — how SKILL.md files work and how to author your own
* [Getting Started with AIsa](/docs/guides/getting-started-with-aisa) — if you're new to the AIsa API
# What is an LLM Gateway? A Guide to Unified AI APIs
Source: https://aisa.one/docs/guides/learn/what-is-an-llm-gateway
The artificial intelligence landscape is fragmenting at an unprecedented pace. Just a few years ago, integrating AI meant calling a single OpenAI endpoint. Today, developers must navigate a complex ecosystem of competing frontier models from Anthropic, Google, DeepSeek, Alibaba, and open-source providers.
This fragmentation introduces significant engineering overhead. Developers are forced to manage multiple API keys, handle differing API schemas, track usage across disparate billing dashboards, and implement complex fallback logic to ensure high availability.
Enter the **LLM Gateway** (also known as a unified AI API or model router).
## The Definition of an LLM Gateway
An LLM gateway is a middleware layer that sits between your application and the various AI model providers. It provides a single, unified API endpoint that routes requests to the appropriate underlying model.
Instead of integrating five different SDKs, you integrate one gateway SDK. The gateway handles the translation, authentication, and routing behind the scenes.
## Core Features of an LLM Gateway
A robust LLM gateway solves several critical infrastructure challenges:
### 1. Unified API Schema
The most immediate benefit is schema normalization. Most modern gateways adopt the OpenAI API specification as the standard. This means you can call `claude-opus-4-8`, `gemini-3.5-flash`, or `qwen3.7-max` using the same code structure you would use for `gpt-5.4-mini`. You simply change the `model` parameter in your request.
### 2. Intelligent Routing and Fallbacks
Provider APIs frequently experience rate limits or unexpected downtime. An LLM gateway implements automatic failover logic. If a request to an Anthropic endpoint fails, the gateway can automatically retry the request using an identical model hosted on a different cloud provider (like AWS Bedrock or Google Cloud), ensuring your application remains highly available.
### 3. Load Balancing
For high-volume applications, a single API key or provider account may not offer sufficient throughput. Gateways can load balance requests across multiple keys or deployments to maximize concurrency.
### 4. Centralized Observability and Billing
Rather than logging into five different dashboards to calculate your monthly AI spend, a gateway provides a single pane of glass. You receive one unified bill and can track token consumption, latency, and costs across all models in real-time.
## The Evolution: From Gateway to Agentic Infrastructure
While standard LLM gateways solve the problem of model fragmentation, the next generation of AI applications—autonomous agents—requires a more sophisticated infrastructure layer.
Agents do not just need to generate text; they need to act upon the world and pay for the services they consume. This is where **AIsa** differentiates itself from traditional routers.
AIsa extends the concept of an LLM gateway into a complete **Agentic Economy Infrastructure**:
1. **Beyond LLMs:** In addition to 100+ AI models, AIsa proxies 100+ non-LLM data APIs (Twitter, Polymarket, real-time search) through the same unified endpoint.
2. **Agentic Payments (MPP/x402):** AIsa integrates a native machine-to-machine payment layer. Agents can autonomously pay for API calls using stablecoin micropayments deducted from a single, centralized wallet.
3. **Agent Skills:** AIsa provides a marketplace for composable, modular capabilities that can be natively integrated into frameworks like OpenClaw.
By combining unified model access, data API routing, and machine-to-machine payments, AIsa provides the foundational layer necessary to build, deploy, and monetize autonomous AI agents at scale.
# Compare Models
Source: https://aisa.one/docs/guides/model-gateway/compare-models
Put 2-3 current AIsa models side-by-side to compare pricing, context windows, endpoints, capabilities, and cost estimates. Share the comparison as a link, image, or tweet.
Not sure whether `claude-opus-4-8`, `gpt-5.5`, `qwen3.7-max`, or `deepseek-v4-flash` is the right fit? The **Model Comparison** feature at [aisa.one/models](https://aisa.one/models) lets you stack up to three models side-by-side and share the result with a single click.
Pick models from the live catalog and compare them now.
Narrow the catalog to a shortlist before comparing.
## How to compare
From the result grid, click the **Compare** button on any model card. A floating dock appears at the bottom of the page showing the selected models as chips - `claude-opus-4-8`, `gpt-5.5`, `qwen3.7-max`, etc.
You can add up to **3 models** per comparison. Remove one by clicking the `×` on its chip.
Click the orange **Compare** button in the dock. A full-screen modal opens with every model's specs in aligned columns.
The modal compares each model across every attribute that matters when choosing one:
* **Provider** and **Model ID**
* **Billing Type** (pay-as-you-go vs. flat)
* **Input Price** and **Output Price** per 1M tokens
* **Flat Price** (for media models)
* **Context Window** (in tokens)
* **Endpoint** (e.g., `/v1/chat/completions`)
* **Capabilities** + sub-capabilities
* **Cost estimates** for three request sizes: 1K in + 1K out, 10K in + 2K out, 100K in + 10K out
Three share options appear at the top of the modal:
* **Share Link** - copies a URL (e.g., `aisa.one/models?compare=13,20,27`). Anyone who opens it lands on the same comparison.
* **Copy as Image** - renders the comparison as a PNG for dropping into Slack, decks, or docs.
* **Twitter** - posts the comparison card straight to X.
## Example comparison
Comparing **claude-opus-4-8**, **gpt-5.5**, and **qwen3.7-max**:
| Spec | claude-opus-4-8 | gpt-5.5 | qwen3.7-max |
| ------------------ | -------------------------------------- | ------------------------------------------------------- | ---------------------- |
| **Provider** | Anthropic | OpenAI | Alibaba |
| **Billing** | Pay as you go | Pay as you go | Pay as you go |
| **Input / 1M** | \$5.0000 | \$5.0000 | \$1.1550 |
| **Output / 1M** | \$25.0000 | \$40.0000 | \$3.4657 |
| **Context window** | 1,000,000 | 400,000 | 1,000,000 |
| **Endpoint** | `/v1/messages`, `/v1/chat/completions` | `/v1/messages`, `/v1/chat/completions`, `/v1/responses` | `/v1/chat/completions` |
| **Capabilities** | Coding, Text, Vision | Coding, Text, Vision | Coding, Text |
**Cost estimate (1K in + 1K out):**
`$0.0300` vs. `$0.0450` vs. `$0.0046` -> `qwen3.7-max` is about **6.5x cheaper** than `claude-opus-4-8` and **9.7x cheaper** than `gpt-5.5` for this request size.
## When to use the feature
Compare input/output rates + cost estimates to pick the most cost-effective model for your expected traffic.
Verify which models in your shortlist actually support vision, audio, or long-context reasoning.
Share a comparison link in Slack or your RFC doc so everyone evaluates the same spec table.
Post a comparison card to X to show off the savings AIsa passes through.
## Tips
The URL `?compare=ID1,ID2,ID3` is the canonical share format. You can build it directly if you know the model IDs, or let the UI assemble it for you.
**Copy as Image** produces a clean, branded comparison card. It's the fastest way to include a comparison in a presentation deck or blog post.
# Filter Models
Source: https://aisa.one/docs/guides/model-gateway/filter-models
Narrow down the live AIsa model catalog by provider, capability, quick presets, endpoint path, and keyword search to find the right model for your task.
The Model Gateway at [aisa.one/models](https://aisa.one/models) is the live catalog of every model AIsa routes to. It is backed by the current pricing and availability feed, so filters let you slice the catalog by provider, capability, endpoint, use case, and free-text search without relying on a stale static list.
Browse the live catalog with all filters available.
Put two or three models side-by-side and share the result.
## Filter types
Four filter sets combine (AND logic across sets, OR within a set) to narrow the result list.
Click any provider chip - **Alibaba**, **Anthropic**, **ByteDance**, **DeepSeek**, **Google Gemini**, **MiniMax**, **Moonshot**, **OpenAI**, **xAI**, or **Zhipu GLM**. Each chip shows the current count of models for that provider.
Toggle **Multi-select** (top-right of the provider row) to combine multiple providers.
Choose what the model must support: **Text**, **Audio**, **Coding**, **Image**, **Video**, **Vision**. Selecting a capability also reveals sub-capabilities below the main row, such as `reasoning`, `long context`, `document vision`, `visual coding`, `speech-to-speech`, `image editing`, or `agentic coding`.
Curated one-click filters for common use cases:
* **Best for Coding** - reasoning + coding models ranked for software tasks
* **Multimodal** - text + vision + audio/video understanding in one workflow
* **Deep Reasoning** - models tagged for stronger reasoning
* **Creative Writing** - models tuned for long-form generation
* **Translation** - dedicated translation or multilingual models
* **Image Generation** - Seedream, Wan, and GPT image models
* **Voice & Audio** - speech-to-speech or audio-capable models
* **Video** - video understanding or image-to-video capable models
* **Budget-Friendly** - low-cost token models across providers
Free-text search at the top of the result list matches model names, providers, and endpoint paths. Examples: `gpt-5`, `claude`, `anthropic`, `/v1/messages`.
## Saving a filter
Once you've applied a combination, click **Save filter** to the right of the active filter chips. Your saved filter is preserved as a URL so you can bookmark it or share it with a teammate.
For example: [aisa.one/models?tags=vision](https://aisa.one/models?tags=vision) jumps straight to models currently tagged with vision support.
## Result view
Each model card in the result grid shows:
| Field | What it is |
| -------------- | ---------------------------------------------------- |
| Provider logo | Anthropic, OpenAI, Google, etc. |
| Model ID | The exact string to pass as `model` in API calls |
| Endpoint | Which AIsa endpoint path serves this model |
| Input / Output | Price per 1M tokens (or flat price for media models) |
| Capabilities | Text, Vision, Coding, etc. plus sub-capabilities |
| Compare | Click to add this model to the comparison dock |
Switch between **grid** and **list** view using the toggle to the right of the search bar. Sort results with the dropdown - options include **Newest**, **Name (A-Z)**, **Price Low -> High**, **Price High -> Low**, and **Provider**.
## Tips
The filter panel is stateful in the URL. Bookmark `?tags=coding,reasoning` or `?preset=budget-friendly` to jump back to a known slice.
To start over, click **Clear** next to any active filter chip or **Clear all** above the result grid.
# AIsa LLM Model Catalog - API Endpoints, Capabilities, Context Windows
Source: https://aisa.one/docs/guides/models
Complete AIsa LLM and media model catalog for llms.txt: exact model IDs, providers, API endpoints, capabilities, context windows, and billing for all 108 models — GPT, Claude, Gemini, Grok, DeepSeek, Qwen, Kimi, MiniMax, GLM, Seed, Seedream, Dreamina, Wan, StepFun, and MiMo — through https://api.aisa.one/v1.
AIsa's Model Gateway routes LLM and media-generation requests through one API key. This guide is the stable Markdown source for agents that read [llms.txt](https://aisa.one/docs/llms.txt) and need to understand which AIsa model IDs exist, which endpoint each model uses, and what each model can do.
The live catalog is [aisa.one/models](https://aisa.one/models). The tables below cover all 108 models in the gateway and were refreshed from the live pricing feed on August 5, 2026. Model availability and prices can change, so use the live catalog for the final source of truth before production routing.
## How to call models
Use your `AISA_API_KEY` as a Bearer token. For OpenAI-compatible SDKs, set the base URL to `https://api.aisa.one/v1`.
```python theme={null}
from openai import OpenAI
client = OpenAI(
api_key="YOUR_AISA_API_KEY",
base_url="https://api.aisa.one/v1"
)
response = client.chat.completions.create(
model="qwen3.7-max",
messages=[{"role": "user", "content": "Compare these model options for a coding agent."}]
)
print(response.choices[0].message.content)
```
## Endpoint types
| Endpoint | Current model count |
| --------------------------------------------- | ------------------: |
| `POST /v1/chat/completions` | 95 |
| `POST /v1/messages` | 85 |
| `POST /v1/responses` | 72 |
| `POST /v1/video/generations` | 8 |
| `POST /v1/images/generations` | 4 |
| `POST /v1/images/edits` | 3 |
| `POST /v1/embeddings` | 2 |
| `POST /v1beta/models/{model}:generateContent` | 2 |
Most text, vision, and coding models accept both OpenAI-style `chat/completions` and Anthropic-compatible `messages`, so the same model ID works from either SDK. `POST /v1/responses` is now served by most text models — the table above counts the routes reported by the live gateway pricing feed on August 5, 2026. Calling a model on a route it does not serve returns `400 model_route_not_supported` with the supported routes listed, so probe before switching protocols. Gemini models additionally expose `generateContent`. Image models use `images/generations` and `images/edits`. Video models are asynchronous: submit the job to `POST /v1/video/generations`, then poll `/v1/video/generations/{task_id}` for the result. Embedding models use `/v1/embeddings`. Always pass the exact model string shown below.
## Capability vocabulary
| Capability | What it means in AIsa Model Gateway |
| ---------- | -------------------------------------------------------------------------------------------------- |
| Text | Natural-language generation, summarization, analysis, translation, and long-context reasoning. |
| Coding | Code reasoning, code completion, software-agent planning, and tool-use workflows. |
| Vision | Image/document understanding, visual coding, and spatial reasoning over visual inputs. |
| Audio | Audio understanding or speech-to-speech style interaction where supported by the upstream model. |
| Image | Image generation, image editing, image consistency, or rendering text in images. |
| Video | Video understanding, temporal reasoning, long-video work, image-to-video, or omni/video workflows. |
## Provider summary
| Provider | Models | Types | Example model IDs |
| ------------- | -----: | ------------------ | --------------------------------------------------------------------------------------------------------- |
| OpenAI | 27 | Image, Text | `gpt-4.1-mini`, `gpt-4o`, `gpt-4o-mini`, `gpt-5-chat-latest` ... |
| Anthropic | 12 | Text | `claude-fable-5`, `claude-haiku-4-5-20251001`, `claude-opus-4-1-20250805`, `claude-opus-4-5-20251101` ... |
| Google Gemini | 2 | Text | `gemini-3-pro-preview`, `gemini-3.5-flash` |
| xAI | 5 | Text | `grok-4.20-0309-non-reasoning`, `grok-4.20-0309-reasoning`, `grok-4.3`, `grok-4.5` ... |
| DeepSeek | 7 | Text | `deepseek-r1`, `deepseek-v3`, `deepseek-v3.1`, `deepseek-v3.2` ... |
| Alibaba | 24 | Image, Text, Video | `qwen-flash`, `qwen-mt-flash`, `qwen-mt-lite`, `qwen-plus-2025-12-01` ... |
| Moonshot | 5 | Text | `kimi-k2-thinking`, `kimi-k2.5`, `kimi-k2.6`, `kimi-k2.7-code` ... |
| MiniMax | 2 | Text | `MiniMax-M2.5`, `MiniMax-M3` |
| Zhipu GLM | 4 | Text | `glm-5`, `glm-5.1`, `glm-5.2` ... |
| ByteDance | 10 | Image, Text, Video | `seed-1-6-250915`, `seed-1-6-flash-250715`, `seed-1-8-251228`, `seed-2-0-lite-260228` ... |
| Xiaomi | 2 | Text | `mimo-v2.5`, `mimo-v2.5-pro` |
| StepFun | 3 | Text | `step-3.5-flash`, `step-3.5-flash-2603`, `step-3.7-flash` |
| HappyHorse | 3 | Video | `happyhorse-1.1-i2v`, `happyhorse-1.1-r2v`, `happyhorse-1.1-t2v` |
| Other | 2 | Embeddings | `text-embedding-3-large`, `text-embedding-3-small` |
## Complete model details
Context windows and capability tags come from the last Model Gateway metadata export. Models added since then show `—` for context and only their base type in Capabilities — check [aisa.one/models](https://aisa.one/models) for their current limits and capability tags.
### OpenAI
| Model ID | Context | Capabilities | Endpoint(s) | Billing |
| --------------------- | --------: | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| `gpt-4.1-mini` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.4211 in / \$1.6842 out per 1M tokens (cache read \$0.1053/M) |
| `gpt-4o` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$2.6316 in / \$10.5263 out per 1M tokens (cache read \$1.3158/M) |
| `gpt-4o-mini` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.1579 in / \$0.6316 out per 1M tokens (cache read \$0.0789/M) |
| `gpt-5-chat-latest` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$1.3158 in / \$10.5263 out per 1M tokens (cache read \$0.1316/M) |
| `gpt-5-nano` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.0526 in / \$0.4211 out per 1M tokens (cache read \$0.0053/M) |
| `gpt-5-pro` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$15.7895 in / \$126.3158 out per 1M tokens |
| `gpt-5-search-api` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$1.3158 in / \$10.5263 out per 1M tokens (cache read \$0.1316/M) |
| `gpt-5.1` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$1.3158 in / \$10.5263 out per 1M tokens (cache read \$0.1316/M) |
| `gpt-5.1-chat-latest` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$1.3158 in / \$10.5263 out per 1M tokens (cache read \$0.1316/M) |
| `gpt-5.1-codex` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$1.3158 in / \$10.5263 out per 1M tokens (cache read \$0.1316/M) |
| `gpt-5.1-codex-max` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$1.3158 in / \$10.5263 out per 1M tokens (cache read \$0.1316/M) |
| `gpt-5.2` | 400,000 | Coding, Text, Vision; reasoning, long context, translation, creative writing, spatial vision, document vision, code reasoning, code completion, agentic coding | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$1.8421 in / \$14.7368 out per 1M tokens (cache read \$0.1842/M) |
| `gpt-5.2-chat-latest` | 400,000 | Coding, Text, Vision; reasoning, long context, translation, creative writing, spatial vision, document vision, visual coding, code reasoning, code completion, agentic coding | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$1.8421 in / \$14.7368 out per 1M tokens (cache read \$0.1842/M) |
| `gpt-5.2-codex` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$1.8421 in / \$14.7368 out per 1M tokens (cache read \$0.1842/M) |
| `gpt-5.2-pro` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$22.1053 in / \$176.8421 out per 1M tokens |
| `gpt-5.3-chat-latest` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$1.8421 in / \$14.7368 out per 1M tokens (cache read \$0.1842/M) |
| `gpt-5.3-codex` | 1,000,000 | Coding, Text; reasoning, long context, code reasoning, code completion, agentic coding | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$1.8421 in / \$14.7368 out per 1M tokens (cache read \$0.1842/M) |
| `gpt-5.4` | 1,050,000 | Coding, Text, Vision; reasoning, long context, translation, creative writing, spatial vision, document vision, visual coding, code reasoning, code completion, agentic coding | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$2.6316 in / \$15.7895 out per 1M tokens (cache read \$0.2632/M) |
| `gpt-5.4-mini` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.7895 in / \$4.7368 out per 1M tokens (cache read \$0.0789/M) |
| `gpt-5.4-nano` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.2105 in / \$1.3158 out per 1M tokens (cache read \$0.0211/M) |
| `gpt-5.4-pro` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$31.5789 in / \$189.4737 out per 1M tokens |
| `gpt-5.5` | 400,000 | Coding, Text, Vision; code reasoning, long context, reasoning, vision | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$5.2632 in / \$40.0000 out per 1M tokens (cache read \$0.5263/M) |
| `gpt-5.5-pro` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$31.5789 in / \$189.4737 out per 1M tokens |
| `gpt-5.6-luna` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.2105 in / \$1.2632 out per 1M tokens (cache read \$0.0211/M; cache write \$0.2500/M) |
| `gpt-5.6-sol` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$5.2632 in / \$31.5789 out per 1M tokens (cache read \$0.5263/M; cache write \$6.2500/M) |
| `gpt-5.6-terra` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$2.1053 in / \$12.6316 out per 1M tokens (cache read \$0.2105/M; cache write \$2.5000/M) |
| `gpt-image-2` | N/A | Image, Vision; image editing, image generation, text in images, vision | `/v1/images/generations`, `/v1/images/edits` | \$8.4211 in / \$31.5789 out per 1M tokens (cache write \$2.0000/M); \$0.03 / request; \$0.05 / image (1024x1024) |
### Anthropic
| Model ID | Context | Capabilities | Endpoint(s) | Billing |
| ---------------------------- | --------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
| `claude-fable-5` | — | Text | `/v1/chat/completions`, `/v1/messages` | \$10.5263 in / \$52.6316 out per 1M tokens (cache read \$1.0526/M; cache write \$12.5000/M) |
| `claude-haiku-4-5-20251001` | 200,000 | Coding, Text, Vision; reasoning, long context, spatial vision, document vision, visual coding, code reasoning, agentic coding | `/v1/chat/completions`, `/v1/messages` | \$1.0526 in / \$5.2632 out per 1M tokens (cache read \$0.1053/M; cache write \$2.0000/M) |
| `claude-opus-4-1-20250805` | 200,000 | Coding, Text, Vision; reasoning, long context, document vision, visual coding, code reasoning, agentic coding | `/v1/chat/completions`, `/v1/messages` | \$15.7895 in / \$78.9474 out per 1M tokens (cache read \$1.5789/M; cache write \$30.0000/M) |
| `claude-opus-4-5-20251101` | 1,000,000 | Coding, Text, Vision; reasoning, long context, creative writing, document vision, visual coding, code reasoning, code completion, agentic coding | `/v1/chat/completions`, `/v1/messages` | \$5.2632 in / \$26.3158 out per 1M tokens (cache read \$0.5263/M; cache write \$10.0000/M) |
| `claude-opus-4-6` | 1,000,000 | Coding, Text, Vision; reasoning, long context, creative writing, document vision, visual coding, code reasoning, code completion, agentic coding | `/v1/chat/completions`, `/v1/messages` | \$5.2632 in / \$26.3158 out per 1M tokens (cache read \$0.5263/M; cache write \$10.0000/M) |
| `claude-opus-4-7` | 1,000,000 | Coding, Text, Vision; reasoning, long context, creative writing, spatial vision, document vision, visual coding, code reasoning, code completion, agentic coding | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$5.2632 in / \$26.3158 out per 1M tokens (cache read \$0.5263/M; cache write \$10.0000/M) |
| `claude-opus-4-8` | 1,000,000 | Coding, Text, Vision; reasoning, long context, creative writing, spatial vision, document vision, visual coding, code reasoning, code completion, agentic coding | `/v1/chat/completions`, `/v1/messages` | \$5.2632 in / \$26.3158 out per 1M tokens (cache read \$0.5263/M; cache write \$10.0000/M) |
| `claude-opus-5` | — | Text | `/v1/chat/completions`, `/v1/messages` | \$5.2632 in / \$26.3158 out per 1M tokens (cache read \$0.5263/M; cache write \$10.0000/M) |
| `claude-sonnet-4-5-20250929` | 200,000 | Coding, Text, Vision; reasoning, long context, creative writing, spatial vision, document vision, visual coding, code reasoning, code completion, agentic coding | `/v1/chat/completions`, `/v1/messages` | \$3.1579 in / \$15.7895 out per 1M tokens (cache read \$0.3158/M; cache write \$6.0000/M) |
| `claude-sonnet-4-6` | — | Text | `/v1/chat/completions`, `/v1/messages` | \$3.1579 in / \$15.7895 out per 1M tokens (cache read \$0.3158/M; cache write \$6.0000/M) |
| `claude-sonnet-4-6-thinking` | — | Text | `/v1/chat/completions`, `/v1/messages` | \$3.1579 in / \$15.7895 out per 1M tokens (cache read \$0.3158/M; cache write \$6.0000/M) |
| `claude-sonnet-5` | — | Text | `/v1/chat/completions`, `/v1/messages` | \$2.1053 in / \$10.5263 out per 1M tokens (cache read \$0.2105/M; cache write \$2.5000/M) |
### Google Gemini
| Model ID | Context | Capabilities | Endpoint(s) | Billing |
| ---------------------- | ------: | ------------------------------------ | ---------------------------------------------------------------- | ---------------------------------------------------------------- |
| `gemini-3-pro-preview` | N/A | Text; long context, creative writing | `/v1/chat/completions`, `/v1beta/models/{model}:generateContent` | \$2.1053 in / \$12.6316 out per 1M tokens |
| `gemini-3.5-flash` | N/A | Text; long context, creative writing | `/v1/chat/completions`, `/v1beta/models/{model}:generateContent` | \$1.5789 in / \$9.4737 out per 1M tokens (cache read \$0.1579/M) |
### xAI
| Model ID | Context | Capabilities | Endpoint(s) | Billing |
| ------------------------------ | --------: | ------------------------------------------------------------------------------------------------------------- | ---------------------- | ----------------------------------------------------------------- |
| `grok-4.20-0309-non-reasoning` | 1,000,000 | Text, Vision; long context, creative writing, spatial vision, document vision | `/v1/chat/completions` | \$1.3158 in / \$2.6316 out per 1M tokens |
| `grok-4.20-0309-reasoning` | 1,000,000 | Text, Vision; reasoning, long context, creative writing, spatial vision, document vision | `/v1/chat/completions` | \$1.3158 in / \$2.6316 out per 1M tokens |
| `grok-4.3` | 1,000,000 | Text, Vision; reasoning, long context, creative writing, spatial vision, document vision | `/v1/chat/completions` | \$1.3158 in / \$2.6316 out per 1M tokens |
| `grok-4.5` | — | Text | `/v1/chat/completions` | \$2.1053 in / \$6.3158 out per 1M tokens (cache write \$0.5000/M) |
| `grok-build-0.1` | 256,000 | Coding, Text, Vision; reasoning, long context, visual coding, code reasoning, code completion, agentic coding | `/v1/chat/completions` | \$1.0526 in / \$2.1053 out per 1M tokens |
### DeepSeek
| Model ID | Context | Capabilities | Endpoint(s) | Billing |
| ------------------------ | ------: | -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | ----------------------------------------------------------------- |
| `deepseek-r1` | 262,144 | Coding, Text; code reasoning, long context, reasoning | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.4229 in / \$1.6903 out per 1M tokens (cache read \$0.4229/M) |
| `deepseek-v3` | 262,144 | Coding, Text; code reasoning, long context, reasoning | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.2115 in / \$0.8452 out per 1M tokens (cache read \$0.2115/M) |
| `deepseek-v3.1` | 262,144 | Coding, Text; code reasoning, long context, reasoning | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.4229 in / \$1.2681 out per 1M tokens (cache read \$0.4229/M) |
| `deepseek-v3.2` | 128,000 | Coding, Text; reasoning, long context, creative writing, code reasoning, code completion, agentic coding | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.2115 in / \$0.3176 out per 1M tokens (cache read \$0.2115/M) |
| `deepseek-v4-flash` | 262,144 | Coding, Text; code reasoning, long context, reasoning | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.1032 in / \$0.2063 out per 1M tokens (cache read \$0.0021/M) |
| `deepseek-v4-flash-0731` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.1380 in / \$0.2750 out per 1M tokens (cache write \$0.0280/M) |
| `deepseek-v4-pro` | 262,144 | Coding, Text; code reasoning, long context, reasoning | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.3205 in / \$0.6411 out per 1M tokens (cache read \$0.0027/M) |
### Alibaba
| Model ID | Context | Capabilities | Endpoint(s) | Billing |
| -------------------------------- | --------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| `qwen-flash` | 1,000,000 | Audio, Coding, Text, Video, Vision; reasoning, long context, translation, creative writing, spatial vision, document vision, visual coding, speech-to-speech, omni/video understanding, long video, temporal video, code reasoning, code completion, agentic coding | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.0154 in / \$0.1512 out per 1M tokens (cache read \$0.0035/M) |
| `qwen-mt-flash` | 1,000,000 | Text; long context, translation | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.0720 in / \$0.2205 out per 1M tokens (cache read \$0.0720/M) |
| `qwen-mt-lite` | 1,000,000 | Text; translation | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.0840 in / \$0.2520 out per 1M tokens (cache read \$0.0840/M) |
| `qwen-plus-2025-12-01` | 1,000,000 | Audio, Coding, Text, Video, Vision; reasoning, long context, translation, creative writing, spatial vision, document vision, visual coding, speech-to-speech, omni/video understanding, long video, temporal video, code reasoning, code completion, agentic coding | `/v1/chat/completions` | \$0.2800 in / \$0.8400 out per 1M tokens (cache read \$0.2800/M) |
| `qwen3-coder-480b-a35b-instruct` | 262,144 | Coding, Text; reasoning, long context, code reasoning, agentic coding | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$1.0500 in / \$5.2500 out per 1M tokens (cache read \$1.0500/M) |
| `qwen3-coder-flash` | 1,000,000 | Coding, Text; reasoning, long context, code reasoning, code completion, agentic coding | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.2100 in / \$1.0500 out per 1M tokens (cache read \$0.2100/M) |
| `qwen3-coder-plus` | 1,000,000 | Coding, Text; reasoning, long context, code reasoning, code completion, agentic coding | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.7000 in / \$3.5000 out per 1M tokens (cache read \$0.7000/M) |
| `qwen3-max` | 262,144 | Audio, Coding, Text, Video, Vision; reasoning, long context, translation, creative writing, spatial vision, document vision, visual coding, speech-to-speech, omni/video understanding, long video, temporal video, code reasoning, code completion, agentic coding | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.7200 in / \$3.6000 out per 1M tokens (cache read \$0.7200/M) |
| `qwen3-vl-flash` | 131,072 | Coding, Text, Video, Vision; reasoning, long context, translation, creative writing, spatial vision, document vision, omni/video understanding, long video, temporal video, code reasoning, code completion, agentic coding | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.0350 in / \$0.2800 out per 1M tokens (cache read \$0.0350/M) |
| `qwen3-vl-flash-2025-10-15` | 131,072 | Coding, Text, Video, Vision; reasoning, long context, translation, spatial vision, document vision, omni/video understanding, long video, temporal video, code reasoning, code completion, agentic coding | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.0350 in / \$0.2800 out per 1M tokens (cache read \$0.0350/M) |
| `qwen3-vl-plus` | 131,072 | Coding, Text, Video, Vision; reasoning, long context, translation, creative writing, spatial vision, document vision, omni/video understanding, long video, temporal video, code reasoning, code completion, agentic coding | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.1400 in / \$1.1200 out per 1M tokens (cache read \$0.1400/M) |
| `qwen3.6-plus` | 1,000,000 | Coding, Text, Video, Vision; reasoning, long context, translation, creative writing, spatial vision, document vision, visual coding, omni/video understanding, long video, temporal video, code reasoning, agentic coding | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.2760 in / \$1.6510 out per 1M tokens (cache read \$0.2760/M) |
| `qwen3.6-plus-2026-04-02` | 262,144 | Coding, Text, Vision; code reasoning, long context, reasoning, vision | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.2760 in / \$1.6510 out per 1M tokens (cache read \$0.2760/M) |
| `qwen3.7-flash` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.1732 in / \$0.6930 out per 1M tokens (cache read \$0.0347/M; cache write \$0.2166/M) |
| `qwen3.7-flash-2026-07-15` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.1732 in / \$0.6930 out per 1M tokens (cache read \$0.0347/M; cache write \$0.2166/M) |
| `qwen3.7-max` | 1,000,000 | Coding, Text; reasoning, long context, translation, creative writing, code reasoning, agentic coding | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$1.1550 in / \$3.4657 out per 1M tokens (cache read \$0.1155/M; cache write \$1.4441/M) |
| `qwen3.7-max-2026-06-08` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$1.1550 in / \$3.4657 out per 1M tokens (cache read \$0.2310/M) |
| `qwen3.7-plus` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.1932 in / \$0.7707 out per 1M tokens (cache read \$0.0392/M) |
| `qwen3.8-max` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$1.7325 in / \$5.1986 out per 1M tokens (cache read \$0.2163/M; cache write \$2.1662/M) |
| `wan2.7-i2v` | — | Video | `/v1/video/generations` | \$0.060208 / output second (720p); \$0.100347 / output second (1080p) |
| `wan2.7-image` | N/A | Image, Text, Vision; reasoning, vision, image generation, image editing, text in images, image consistency | `/v1/images/generations`, `/v1/images/edits` | \$0.03 / request |
| `wan2.7-image-pro` | N/A | Image, Text, Video, Vision; reasoning, long context, vision, image generation, image editing, text in images, image consistency, image-to-video | `/v1/images/generations`, `/v1/images/edits` | \$0.075 / request |
| `wan2.7-r2v` | — | Video | `/v1/video/generations` | \$0.060208 / output second (720p); \$0.100347 / output second (1080p) |
| `wan2.7-t2v` | — | Video | `/v1/video/generations` | \$0.060208 / output second (720p); \$0.100347 / output second (1080p) |
### Moonshot
| Model ID | Context | Capabilities | Endpoint(s) | Billing |
| ------------------ | ------: | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | ----------------------------------------------------------------- |
| `kimi-k2-thinking` | 256,000 | Coding, Text; reasoning, long context, code reasoning, agentic coding | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.4229 in / \$1.6903 out per 1M tokens (cache read \$0.4229/M) |
| `kimi-k2.5` | 262,144 | Coding, Text, Video, Vision; reasoning, long context, spatial vision, document vision, visual coding, omni/video understanding, long video, code reasoning, agentic coding | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.4229 in / \$2.2186 out per 1M tokens (cache read \$0.0847/M) |
| `kimi-k2.6` | 128,000 | Text; long context, reasoning | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.6587 in / \$2.7360 out per 1M tokens (cache read \$0.6587/M) |
| `kimi-k2.7-code` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.6257 in / \$2.5992 out per 1M tokens (cache read \$0.1252/M) |
| `kimi-k3` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$3.1579 in / \$15.7895 out per 1M tokens (cache read \$0.3158/M) |
### MiniMax
| Model ID | Context | Capabilities | Endpoint(s) | Billing |
| -------------- | --------: | -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | ---------------------------------------------------------------- |
| `MiniMax-M2.5` | 262,144 | Coding, Text; reasoning, long context, creative writing, code reasoning, agentic coding | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.2211 in / \$0.8842 out per 1M tokens (cache read \$0.2211/M) |
| `MiniMax-M3` | 1,000,000 | Coding, Text, Video, Vision; reasoning, long context, code reasoning, agentic coding, vision, long video | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.2211 in / \$0.8842 out per 1M tokens (cache read \$0.0526/M) |
### Zhipu GLM
| Model ID | Context | Capabilities | Endpoint(s) | Billing |
| ------------------- | ------: | -------------------------------------------------------------------------------------- | ------------------------------------------------------- | ---------------------------------------------------------------- |
| `glm-5` | 128,000 | Coding, Text; reasoning, long context, code reasoning, code completion, agentic coding | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.4222 in / \$1.9011 out per 1M tokens (cache read \$0.4222/M) |
| `glm-5.1` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.5775 in / \$2.3107 out per 1M tokens (cache read \$0.1155/M) |
| `glm-5.2` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.7700 in / \$2.6957 out per 1M tokens (cache read \$0.1925/M) |
| `z-ai/glm-5v-turbo` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$1.2000 in / \$4.0000 out per 1M tokens (cache read \$0.2400/M) |
### ByteDance
| Model ID | Context | Capabilities | Endpoint(s) | Billing |
| ----------------------------------- | ------: | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | ---------------------------------------------------------------- |
| `seed-1-6-250915` | 262,144 | Text, Video, Vision; reasoning, long context, creative writing, vision, omni/video understanding | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.2368 in / \$0.9474 out per 1M tokens (cache read \$0.2368/M) |
| `seed-1-6-flash-250715` | 262,144 | Text, Video, Vision; reasoning, long context, spatial vision, omni/video understanding, temporal video | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.0711 in / \$0.2842 out per 1M tokens (cache read \$0.0711/M) |
| `seed-1-8-251228` | 262,144 | Coding, Text, Video, Vision; reasoning, long context, creative writing, spatial vision, document vision, visual coding, long video, temporal video, code reasoning, code completion, agentic coding | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.2368 in / \$1.8947 out per 1M tokens (cache read \$0.2368/M) |
| `seed-2-0-lite-260228` | 262,144 | Coding, Text, Video, Vision; reasoning, long context, creative writing, spatial vision, document vision, omni/video understanding, long video, temporal video, code reasoning, code completion, agentic coding | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.2632 in / \$2.1053 out per 1M tokens (cache read \$0.2632/M) |
| `seed-2-0-mini-260215` | 262,144 | Coding, Text, Video, Vision; reasoning, long context, spatial vision, document vision, omni/video understanding, temporal video, code reasoning, code completion, agentic coding | `/v1/chat/completions` | \$0.1053 in / \$0.4211 out per 1M tokens (cache read \$0.1053/M) |
| `seed-2-0-pro-260328` | 262,144 | Coding, Text, Video, Vision; reasoning, long context, creative writing, spatial vision, document vision, visual coding, omni/video understanding, long video, temporal video, code reasoning, code completion, agentic coding | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.5263 in / \$3.1579 out per 1M tokens (cache read \$0.5263/M) |
| `dreamina-seedance-2-0-260128` | — | Video | `/v1/video/generations` | \$4.3 / 1M tokens (480p, 720p, 4k); \$4.7 / 1M tokens (1080p) |
| `dreamina-seedance-2-0-fast-260128` | — | Video | `/v1/video/generations` | \$3.3 / 1M tokens (480p, 720p) |
| `seedream-4-5-251128` | N/A | Image, Vision; vision, image generation, image editing, text in images, image consistency | `/v1/chat/completions` | \$0.036 / request |
| `seedream-5-0-260128` | 262,144 | Image, Vision; image editing, image generation, text in images, vision | `/v1/images/generations` | \$0.035 / request |
### Xiaomi
| Model ID | Context | Capabilities | Endpoint(s) | Billing |
| --------------- | ------: | ------------ | ------------------------------------------------------- | ---------------------------------------------------------------- |
| `mimo-v2.5` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.1505 in / \$0.3011 out per 1M tokens (cache read \$0.0031/M) |
| `mimo-v2.5-pro` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.5158 in / \$0.9021 out per 1M tokens (cache read \$0.0038/M) |
### StepFun
| Model ID | Context | Capabilities | Endpoint(s) | Billing |
| --------------------- | ------: | ------------ | ------------------------------------------------------- | ---------------------------------------------------------------- |
| `step-3.5-flash` | — | Text | `/v1/chat/completions`, `/v1/messages` | \$0.1053 in / \$0.3158 out per 1M tokens (cache read \$0.0211/M) |
| `step-3.5-flash-2603` | — | Text | `/v1/chat/completions`, `/v1/messages` | \$0.1053 in / \$0.3158 out per 1M tokens (cache read \$0.0211/M) |
| `step-3.7-flash` | — | Text | `/v1/chat/completions`, `/v1/messages`, `/v1/responses` | \$0.2105 in / \$1.2105 out per 1M tokens (cache read \$0.0421/M) |
### HappyHorse
| Model ID | Context | Capabilities | Endpoint(s) | Billing |
| -------------------- | ------: | ------------ | ----------------------- | --------------------------------------------------------------------------------------------------------------- |
| `happyhorse-1.1-i2v` | — | Video | `/v1/video/generations` | \$0.098 / output second (720p); \$0.126 / output second (higher tier; the upstream feed labels both tiers 720p) |
| `happyhorse-1.1-r2v` | — | Video | `/v1/video/generations` | \$0.098 / output second (720p); \$0.126 / output second (1080p) |
| `happyhorse-1.1-t2v` | — | Video | `/v1/video/generations` | \$0.098 / output second (720p); \$0.126 / output second (1080p) |
### Other
| Model ID | Context | Capabilities | Endpoint(s) | Billing |
| ------------------------ | ------: | ------------ | ---------------- | ------------------------- |
| `text-embedding-3-small` | — | Embeddings | `/v1/embeddings` | \$0.0211 in per 1M tokens |
| `text-embedding-3-large` | — | Embeddings | `/v1/embeddings` | \$0.1368 in per 1M tokens |
## Choosing a model
| Need | Start with | Why |
| -------------------------------------- | -------------------------------------------------------------------- | ---------------------------------------------------------------------- |
| Frontier text + vision | `gpt-5.5`, `claude-opus-4-8`, `gpt-5.4` | Strong reasoning and broad multimodal/coding coverage. |
| Agentic coding | `gpt-5.3-codex`, `claude-opus-4-8`, `qwen3-coder-plus`, `MiniMax-M3` | Coding, long-context, and agentic sub-capabilities. |
| Low-cost high-volume text | `qwen-flash`, `deepseek-v4-flash`, `qwen-mt-flash` | Very low input/output pricing for routine tasks. |
| Long-context Chinese or bilingual work | `qwen3.6-plus`, `qwen3.7-max`, `MiniMax-M3` | 1M-token context options with Chinese-language strength. |
| Visual/document tasks | `qwen3-vl-plus`, `claude-opus-4-8`, `gpt-5.4` | Vision/document/spatial capability tags. |
| Image generation | `gpt-image-2`, `seedream-5-0-260128`, `wan2.7-image-pro` | Image-generation and image-editing model IDs with per-request billing. |
Models added after the last capability export — including `gpt-5.6-luna`, `gpt-5.6-sol`, `gpt-5.6-terra`, `claude-opus-5`, `claude-sonnet-5`, `kimi-k3`, `kimi-k2.7-code`, `glm-5.2`, and `grok-4.5` — are not reflected in this table yet. Check the live catalog before routing production traffic to them.
## Notes for agents
* Do not invent AIsa model IDs. Use the exact `model` strings in the tables.
* Do not assume a model supports every modality its upstream family supports. Use the capability tags listed here or check the live model page.
* If a model appears in [aisa.one/models](https://aisa.one/models) but not in a static table, the pricing API has likely enabled it at runtime; prefer the live catalog.
* Pricing tables are informational. The final billed amount appears in AIsa Usage Logs and may include workspace-level pricing rules.
* A `—` in the Context column means the current metadata export does not publish that model's context window. Do not assume a default; read the live catalog.
# AIsa Pricing – Usage-Based Billing for LLMs & Data APIs
Source: https://aisa.one/docs/guides/pricing
AIsa uses a usage-based billing system. Charges are applied based on the type of API you use.
There are two pricing categories:
1. **AI Model (LLM) Pricing:** billed per token
2. **Data API Pricing:** fixed per request for many APIs; some providers use a credit formula based on request dimensions or returned rows
This page provides a high-level overview of both models and links to their detailed pricing pages.
## 1. AI Model (LLM) Pricing
AI model APIs are billed based on token usage.
The [Models catalog](https://aisa.one/models) lists every available model with its input and output price side by side, so you can compare rates before you pick one.
Each request is charged separately for:
* **Input tokens** (prompt tokens)
* **Output tokens** (generated tokens)
Prices are defined per **1 million tokens (1M tokens)**, and input and output tokens are billed independently.
This pricing model applies to:
* Chat completions
* Text generation
* Vision-enabled models
* Tool-enabled models
* Streaming responses
For the full model pricing table and detailed billing explanation, see **AI Model Pricing**
## 2. Data API Pricing
Many non-LLM APIs use a fixed per-request billing model. Some data providers have a variable credit-based model instead.
For fixed-price APIs, each API page lists its endpoints with the price attached to each one — in the Twitter example above, `/apis/v1/twitter/user/last_tweets` is billed at \$0.0036 per call while `/apis/v1/twitter/user/followers` is billed at \$0.036 per call.
For those APIs, each successful request to an endpoint incurs a predefined charge, regardless of response size.
This pricing model applies to APIs such as:
* Search APIs
* Financial APIs
* YouTube APIs
* Scholar APIs
* Twitter APIs
* Other structured data and retrieval services
For endpoint-level pricing details and billing behavior, see [Per-Call API Pricing](/docs/guides/pricing/per-call-api-pricing).
Some paid data APIs, including SimilarWeb, use a credit formula rather than a fixed per-call price. Read the matching endpoint documentation and pricing declaration before a paid request; if a maximum is not documented, do not execute it under the approval-first contract.
## Choosing the Correct Pricing Model
If your API request:
* Uses a language model to generate text → **Token-based pricing applies**
* Retrieves structured data or performs a search → **Read that API's pricing model**; it may be fixed per call or formula-based.
The Models catalog shows per-token prices. Fixed-price API pages show per-call prices; formula-priced APIs publish their formula and cost controls with the endpoint documentation.
## Usage Tracking and Transparency
All API activity, whether token-based or per-call, is recorded in:
* **Usage Logs**
* Account billing summaries
You can review:
* Tokens consumed (for AI models)
* Number of requests (for per-call APIs)
* Final cost per request
* Applied pricing rules or group ratios
Charges are deducted from your account balance based on the applicable pricing model.
## Additional Notes
* Pricing is usage-based; no fixed monthly platform fees.
* Pricing may vary by model, provider, group, or endpoint.
* Always refer to the Models catalog and API pages for the most up-to-date rates.
* Detailed billing breakdowns are available in Usage Logs.
# AI Model Pricing - Current AIsa LLM and Media Model Rates
Source: https://aisa.one/docs/guides/pricing/ai-model-pricing-llm-inference
Current AIsa Model Gateway pricing for llms.txt: per-1M-token input, output, cache-read, cache-write, per-request image and per-second video prices for OpenAI, Anthropic Claude, Google Gemini, xAI Grok, DeepSeek, Qwen, Kimi, MiniMax, GLM, Seed, Seedream, Dreamina, Wan, StepFun, and Xiaomi MiMo models.
This page lists current public AIsa Model Gateway prices for all 108 models in the gateway, refreshed from the live pricing feed on August 5, 2026. For model capabilities, context windows, and endpoint mappings, see the [supported model catalog](/docs/guides/models).
All token prices are in USD per 1 million tokens. Per-request models are billed per generated asset or call. Workspace-level pricing rules can change the final amount shown in Usage Logs.
## Billing formula
`Total Cost = (input_tokens / 1,000,000 * input_price) + (output_tokens / 1,000,000 * output_price)`
Cache read and cache write prices apply only when the upstream route reports those billing buckets.
## OpenAI
| Model ID | Input / 1M | Output / 1M | Cache read / 1M | Cache write / 1M |
| --------------------- | ---------: | ----------: | --------------: | ---------------: |
| `gpt-4.1-mini` | \$0.4211 | \$1.6842 | \$0.1053 | - |
| `gpt-4o` | \$2.6316 | \$10.5263 | \$1.3158 | - |
| `gpt-4o-mini` | \$0.1579 | \$0.6316 | \$0.0789 | - |
| `gpt-5-chat-latest` | \$1.3158 | \$10.5263 | \$0.1316 | - |
| `gpt-5-nano` | \$0.0526 | \$0.4211 | \$0.0053 | - |
| `gpt-5-pro` | \$15.7895 | \$126.3158 | - | - |
| `gpt-5-search-api` | \$1.3158 | \$10.5263 | \$0.1316 | - |
| `gpt-5.1` | \$1.3158 | \$10.5263 | \$0.1316 | - |
| `gpt-5.1-chat-latest` | \$1.3158 | \$10.5263 | \$0.1316 | - |
| `gpt-5.1-codex` | \$1.3158 | \$10.5263 | \$0.1316 | - |
| `gpt-5.1-codex-max` | \$1.3158 | \$10.5263 | \$0.1316 | - |
| `gpt-5.2` | \$1.8421 | \$14.7368 | \$0.1842 | - |
| `gpt-5.2-chat-latest` | \$1.8421 | \$14.7368 | \$0.1842 | - |
| `gpt-5.2-codex` | \$1.8421 | \$14.7368 | \$0.1842 | - |
| `gpt-5.2-pro` | \$22.1053 | \$176.8421 | - | - |
| `gpt-5.3-chat-latest` | \$1.8421 | \$14.7368 | \$0.1842 | - |
| `gpt-5.3-codex` | \$1.8421 | \$14.7368 | \$0.1842 | - |
| `gpt-5.4` | \$2.6316 | \$15.7895 | \$0.2632 | - |
| `gpt-5.4-mini` | \$0.7895 | \$4.7368 | \$0.0789 | - |
| `gpt-5.4-nano` | \$0.2105 | \$1.3158 | \$0.0211 | - |
| `gpt-5.4-pro` | \$31.5789 | \$189.4737 | - | - |
| `gpt-5.5` | \$5.2632 | \$40.0000 | \$0.5263 | - |
| `gpt-5.5-pro` | \$31.5789 | \$189.4737 | - | - |
| `gpt-5.6-luna` | \$0.2105 | \$1.2632 | \$0.0211 | \$0.2500 |
| `gpt-5.6-sol` | \$5.2632 | \$31.5789 | \$0.5263 | \$6.2500 |
| `gpt-5.6-terra` | \$2.1053 | \$12.6316 | \$0.2105 | \$2.5000 |
| `gpt-image-2` | \$8.4211 | \$31.5789 | - | \$2.0000 |
| Model ID | Price | Endpoint(s) |
| ------------- | ---------------------------------------------------------------------------------------------------------------: | -------------------------------------------- |
| `gpt-image-2` | \$8.4211 in / \$31.5789 out per 1M tokens (cache write \$2.0000/M); \$0.03 / request; \$0.05 / image (1024x1024) | `/v1/images/generations`, `/v1/images/edits` |
## Anthropic
| Model ID | Input / 1M | Output / 1M | Cache read / 1M | Cache write / 1M |
| ---------------------------- | ---------: | ----------: | --------------: | ---------------: |
| `claude-fable-5` | \$10.5263 | \$52.6316 | \$1.0526 | \$12.5000 |
| `claude-haiku-4-5-20251001` | \$1.0526 | \$5.2632 | \$0.1053 | \$2.0000 |
| `claude-opus-4-1-20250805` | \$15.7895 | \$78.9474 | \$1.5789 | \$30.0000 |
| `claude-opus-4-5-20251101` | \$5.2632 | \$26.3158 | \$0.5263 | \$10.0000 |
| `claude-opus-4-6` | \$5.2632 | \$26.3158 | \$0.5263 | \$10.0000 |
| `claude-opus-4-7` | \$5.2632 | \$26.3158 | \$0.5263 | \$10.0000 |
| `claude-opus-4-8` | \$5.2632 | \$26.3158 | \$0.5263 | \$10.0000 |
| `claude-opus-5` | \$5.2632 | \$26.3158 | \$0.5263 | \$10.0000 |
| `claude-sonnet-4-5-20250929` | \$3.1579 | \$15.7895 | \$0.3158 | \$6.0000 |
| `claude-sonnet-4-6` | \$3.1579 | \$15.7895 | \$0.3158 | \$6.0000 |
| `claude-sonnet-4-6-thinking` | \$3.1579 | \$15.7895 | \$0.3158 | \$6.0000 |
| `claude-sonnet-5` | \$2.1053 | \$10.5263 | \$0.2105 | \$2.5000 |
## Google Gemini
| Model ID | Input / 1M | Output / 1M | Cache read / 1M | Cache write / 1M |
| ---------------------- | ---------: | ----------: | --------------: | ---------------: |
| `gemini-3-pro-preview` | \$2.1053 | \$12.6316 | - | - |
| `gemini-3.5-flash` | \$1.5789 | \$9.4737 | \$0.1579 | - |
## xAI
| Model ID | Input / 1M | Output / 1M | Cache read / 1M | Cache write / 1M |
| ------------------------------ | ---------: | ----------: | --------------: | ---------------: |
| `grok-4.20-0309-non-reasoning` | \$1.3158 | \$2.6316 | - | - |
| `grok-4.20-0309-reasoning` | \$1.3158 | \$2.6316 | - | - |
| `grok-4.3` | \$1.3158 | \$2.6316 | - | - |
| `grok-4.5` | \$2.1053 | \$6.3158 | - | \$0.5000 |
| `grok-build-0.1` | \$1.0526 | \$2.1053 | - | - |
## DeepSeek
| Model ID | Input / 1M | Output / 1M | Cache read / 1M | Cache write / 1M |
| ------------------------ | ---------: | ----------: | --------------: | ---------------: |
| `deepseek-r1` | \$0.4229 | \$1.6903 | \$0.4229 | - |
| `deepseek-v3` | \$0.2115 | \$0.8452 | \$0.2115 | - |
| `deepseek-v3.1` | \$0.4229 | \$1.2681 | \$0.4229 | - |
| `deepseek-v3.2` | \$0.2115 | \$0.3176 | \$0.2115 | - |
| `deepseek-v4-flash` | \$0.1032 | \$0.2063 | \$0.0021 | - |
| `deepseek-v4-flash-0731` | \$0.1380 | \$0.2750 | - | \$0.0280 |
| `deepseek-v4-pro` | \$0.3205 | \$0.6411 | \$0.0027 | - |
## Alibaba
| Model ID | Input / 1M | Output / 1M | Cache read / 1M | Cache write / 1M |
| -------------------------------- | ---------: | ----------: | --------------: | ---------------: |
| `qwen-flash` | \$0.0154 | \$0.1512 | \$0.0035 | - |
| `qwen-mt-flash` | \$0.0720 | \$0.2205 | \$0.0720 | - |
| `qwen-mt-lite` | \$0.0840 | \$0.2520 | \$0.0840 | - |
| `qwen-plus-2025-12-01` | \$0.2800 | \$0.8400 | \$0.2800 | - |
| `qwen3-coder-480b-a35b-instruct` | \$1.0500 | \$5.2500 | \$1.0500 | - |
| `qwen3-coder-flash` | \$0.2100 | \$1.0500 | \$0.2100 | - |
| `qwen3-coder-plus` | \$0.7000 | \$3.5000 | \$0.7000 | - |
| `qwen3-max` | \$0.7200 | \$3.6000 | \$0.7200 | - |
| `qwen3-vl-flash` | \$0.0350 | \$0.2800 | \$0.0350 | - |
| `qwen3-vl-flash-2025-10-15` | \$0.0350 | \$0.2800 | \$0.0350 | - |
| `qwen3-vl-plus` | \$0.1400 | \$1.1200 | \$0.1400 | - |
| `qwen3.6-plus` | \$0.2760 | \$1.6510 | \$0.2760 | - |
| `qwen3.6-plus-2026-04-02` | \$0.2760 | \$1.6510 | \$0.2760 | - |
| `qwen3.7-flash` | \$0.1732 | \$0.6930 | \$0.0347 | \$0.2166 |
| `qwen3.7-flash-2026-07-15` | \$0.1732 | \$0.6930 | \$0.0347 | \$0.2166 |
| `qwen3.7-max` | \$1.1550 | \$3.4657 | \$0.1155 | \$1.4441 |
| `qwen3.7-max-2026-06-08` | \$1.1550 | \$3.4657 | \$0.2310 | - |
| `qwen3.7-plus` | \$0.1932 | \$0.7707 | \$0.0392 | - |
| `qwen3.8-max` | \$1.7325 | \$5.1986 | \$0.2163 | \$2.1662 |
| Model ID | Price | Endpoint(s) |
| ------------------ | --------------------------------------------------------------------: | -------------------------------------------- |
| `wan2.7-i2v` | \$0.060208 / output second (720p); \$0.100347 / output second (1080p) | `/v1/video/generations` |
| `wan2.7-image` | \$0.03 / request | `/v1/images/generations`, `/v1/images/edits` |
| `wan2.7-image-pro` | \$0.075 / request | `/v1/images/generations`, `/v1/images/edits` |
| `wan2.7-r2v` | \$0.060208 / output second (720p); \$0.100347 / output second (1080p) | `/v1/video/generations` |
| `wan2.7-t2v` | \$0.060208 / output second (720p); \$0.100347 / output second (1080p) | `/v1/video/generations` |
## Moonshot
| Model ID | Input / 1M | Output / 1M | Cache read / 1M | Cache write / 1M |
| ------------------ | ---------: | ----------: | --------------: | ---------------: |
| `kimi-k2-thinking` | \$0.4229 | \$1.6903 | \$0.4229 | - |
| `kimi-k2.5` | \$0.4229 | \$2.2186 | \$0.0847 | - |
| `kimi-k2.6` | \$0.6587 | \$2.7360 | \$0.6587 | - |
| `kimi-k2.7-code` | \$0.6257 | \$2.5992 | \$0.1252 | - |
| `kimi-k3` | \$3.1579 | \$15.7895 | \$0.3158 | - |
## MiniMax
| Model ID | Input / 1M | Output / 1M | Cache read / 1M | Cache write / 1M |
| -------------- | ---------: | ----------: | --------------: | ---------------: |
| `MiniMax-M2.5` | \$0.2211 | \$0.8842 | \$0.2211 | - |
| `MiniMax-M3` | \$0.2211 | \$0.8842 | \$0.0526 | - |
## Zhipu GLM
| Model ID | Input / 1M | Output / 1M | Cache read / 1M | Cache write / 1M |
| ------------------- | ---------: | ----------: | --------------: | ---------------: |
| `glm-5` | \$0.4222 | \$1.9011 | \$0.4222 | - |
| `glm-5.1` | \$0.5775 | \$2.3107 | \$0.1155 | - |
| `glm-5.2` | \$0.7700 | \$2.6957 | \$0.1925 | - |
| `z-ai/glm-5v-turbo` | \$1.2000 | \$4.0000 | \$0.2400 | - |
## ByteDance
| Model ID | Input / 1M | Output / 1M | Cache read / 1M | Cache write / 1M |
| ----------------------- | ---------: | ----------: | --------------: | ---------------: |
| `seed-1-6-250915` | \$0.2368 | \$0.9474 | \$0.2368 | - |
| `seed-1-6-flash-250715` | \$0.0711 | \$0.2842 | \$0.0711 | - |
| `seed-1-8-251228` | \$0.2368 | \$1.8947 | \$0.2368 | - |
| `seed-2-0-lite-260228` | \$0.2632 | \$2.1053 | \$0.2632 | - |
| `seed-2-0-mini-260215` | \$0.1053 | \$0.4211 | \$0.1053 | - |
| `seed-2-0-pro-260328` | \$0.5263 | \$3.1579 | \$0.5263 | - |
| Model ID | Price | Endpoint(s) |
| ----------------------------------- | ------------------------------------------------------------: | --------------------------------------------------------------------------------- |
| `dreamina-seedance-2-0-260128` | \$4.3 / 1M tokens (480p, 720p, 4k); \$4.7 / 1M tokens (1080p) | `/v1/video/generations` |
| `dreamina-seedance-2-0-fast-260128` | \$3.3 / 1M tokens (480p, 720p) | `/v1/video/generations` |
| `seedream-4-5-251128` | \$0.036 / request | `/v1/chat/completions` |
| `seedream-5-0-260128` | \$0.035 / request | `/v1/chat/completions`, `/v1/messages`, `/v1/responses`, `/v1/images/generations` |
## Xiaomi
| Model ID | Input / 1M | Output / 1M | Cache read / 1M | Cache write / 1M |
| --------------- | ---------: | ----------: | --------------: | ---------------: |
| `mimo-v2.5` | \$0.1505 | \$0.3011 | \$0.0031 | - |
| `mimo-v2.5-pro` | \$0.5158 | \$0.9021 | \$0.0038 | - |
## StepFun
| Model ID | Input / 1M | Output / 1M | Cache read / 1M | Cache write / 1M |
| --------------------- | ---------: | ----------: | --------------: | ---------------: |
| `step-3.5-flash` | \$0.1053 | \$0.3158 | \$0.0211 | - |
| `step-3.5-flash-2603` | \$0.1053 | \$0.3158 | \$0.0211 | - |
| `step-3.7-flash` | \$0.2105 | \$1.2105 | \$0.0421 | - |
## HappyHorse
| Model ID | Price | Endpoint(s) |
| -------------------- | --------------------------------------------------------------------------------------------------------------: | ----------------------- |
| `happyhorse-1.1-i2v` | \$0.098 / output second (720p); \$0.126 / output second (higher tier; the upstream feed labels both tiers 720p) | `/v1/video/generations` |
| `happyhorse-1.1-r2v` | \$0.098 / output second (720p); \$0.126 / output second (1080p) | `/v1/video/generations` |
| `happyhorse-1.1-t2v` | \$0.098 / output second (720p); \$0.126 / output second (1080p) | `/v1/video/generations` |
## Other
| Model ID | Input / 1M | Output / 1M | Cache read / 1M | Cache write / 1M |
| ------------------------ | ---------: | ----------: | --------------: | ---------------: |
| `text-embedding-3-small` | \$0.0211 | - | - | - |
| `text-embedding-3-large` | \$0.1368 | - | - | - |
## Important notes
* Use [aisa.one/models](https://aisa.one/models) for the latest live availability and pricing before production changes.
* Token models are billed on input and output usage. Cache read and cache write prices apply only when the upstream route reports those billing buckets.
* Image models are billed per request or per generated image.
* Video models use two different meters: Wan and HappyHorse routes bill per second of output with a separate rate per resolution, while the Dreamina Seedance routes bill per 1M tokens with a separate rate per resolution.
* Embedding models are billed on input tokens only.
* `gpt-image-2` publishes both token prices and per-request / per-image tiers; the tier that applies depends on the route you call.
* The final billed amount for each call is visible in the AIsa Usage Logs page.
# Per-Call API Pricing – Fixed-Price Search, Financial, Twitter & Data APIs
Source: https://aisa.one/docs/guides/pricing/per-call-api-pricing
This page explains the fixed-price model for eligible non-LLM APIs available through AIsa.
**IMPORTANT:** This page does not make every data API fixed-price. Some paid data APIs, including SimilarWeb, are priced from request dimensions or returned rows. Read the matching endpoint documentation and published pricing declaration before a paid request, then obtain explicit approval when the cost can be material.
These eligible APIs use a **fixed per-request billing model**. Each successful request to an endpoint incurs a predefined charge, independent of response size, token count, or processing time. In the Tavily Search example above, crawl, extract, map, and search each cost \$0.0096 per call regardless of how much data comes back.
Per-call pricing applies to APIs such as:
* Search APIs
* Financial APIs
* YouTube APIs
* Scholar APIs
* Twitter APIs
* Other structured data and retrieval services
## Billing Model Overview
Per-call APIs are billed using a flat-rate structure:
`Total Cost = Number of successful API calls × Per-call price`
Each endpoint has its own fixed cost per request, listed in USD.
Unlike AI model inference:
* There is no input/output token billing
* Response length does not affect cost
* Streaming does not apply
## What Counts as a Billable Call
A billable event occurs when:
* A request is successfully processed by the endpoint
* A response is returned
If a request fails before processing (for example, due to authentication errors), it typically does not generate usage charges. Actual billed events can be verified in the **Usage Logs** page.
## Endpoint-Based Pricing
Each per-call API endpoint has its own defined cost.
On each fixed-price API page, every endpoint listing displays:
* HTTP method and endpoint name
* API path
* Price per call (USD)
* Health status and average latency
Example format:
`$0.0096/call`
Pricing varies by endpoint and may reflect:
* Data source cost
* Upstream provider fees
* Processing complexity
Always refer to the API page for the latest pricing.
## Retries and Duplicate Requests
Because billing is per request:
* Each successful call is billed independently
* Retried requests that are processed successfully will incur additional charges
It is recommended to implement idempotency and retry handling carefully within your application logic.
## Rate Limits and Billing
Rate limits (such as RPM restrictions) control traffic flow but do not alter pricing.
* If a request is accepted and processed, it is billed
* If a request is rejected due to rate limiting, it does not incur usage charges
## Group-Based Pricing
If your workspace uses multiple groups, per-call pricing may vary by group.
Group-level pricing rules or ratios (if configured) are applied automatically during billing. The final amount applied is shown on the **Usage Logs** page.
## Usage Visibility and Cost Transparency
All per-call API activity appears in **Usage Logs**, where you can review:
* Timestamp
* API key used
* Group
* Endpoint
* Final cost charged
This allows you to:
* Audit usage patterns
* Monitor endpoint-level spend
* Verify billing accuracy
## Important Notes
* All prices are listed in USD.
* Billing is triggered per successful API request.
* There is no token-based billing for these endpoints.
* Response size does not impact cost for the fixed-price APIs covered by this page.
* Pricing may change as endpoints evolve.
* Refer to the API pages for up-to-date pricing.
# Security & Data Privacy – AIsa Unified LLM API
Source: https://aisa.one/docs/guides/security
AIsa provides unified APIs across multiple AI and data providers, and is designed to minimize data persistence while enabling secure access to upstream services.
## Data Processing Model
AIsa processes API requests in real time to fulfill user requests.
* Requests are handled synchronously to route calls to the appropriate upstream provider
* Responses are returned directly to the client
* AIsa does not use user data for training or analytics
## Prompt and Output Retention
AIsa follows a **no-storage policy** for request content.
* **Prompts are not stored**
* **API responses and outputs are not stored**
* Request payloads are processed transiently and discarded after the request completes
This applies across all supported APIs, including AI models, embeddings, video, social platforms, web search, scholar, and finance integrations.
## Logging and Metadata
AIsa may retain **limited operational metadata** required to operate and protect the platform, such as:
* Request timestamps
* API key identifiers
* Rate-limiting counters
* Error and status information
This metadata:
* Does **not** include prompts, inputs, or generated outputs
* Is not used for model training or content analysis
## API Authentication
All AIsa APIs require authentication.
* Access is controlled using **API keys**
* Each request must include a valid API key
* Requests without valid authentication are rejected
Users are responsible for keeping API keys secure and rotating them as needed.
## Transport Security
AIsa APIs are accessed over secure network connections.
* API endpoints are served over HTTPS
* Secure transport is required for all requests and responses
Specific protocol versions and cryptographic configurations are managed at the infrastructure level and are not exposed publicly.
## Third-Party Providers
AIsa integrates with multiple upstream providers to deliver unified access through a single API.
* Requests are forwarded only as necessary to fulfill the API call
* AIsa does not persist the request content before or after forwarding
* Data handling by upstream providers is governed by their respective terms and policies
Users should review the policies of underlying providers when required by their use case.
# Use AIsa in Claude Code
Source: https://aisa.one/docs/guides/tutorials/use-aisa-in-claude-code
Point Claude Code at AIsa's Anthropic-compatible endpoint with two environment variables.
Claude Code speaks the Anthropic Messages API natively, and AIsa exposes an Anthropic-compatible endpoint — so the whole setup is one base URL and one API key.
AIsa endpoint for Anthropic clients (no `/v1` — Claude Code appends `/v1/messages` itself):
```txt theme={null}
https://api.aisa.one
```
## Prerequisites
Before you start, make sure you have:
* An AIsa API key ([console.aisa.one/api-keys](https://console.aisa.one/api-keys))
* A terminal on macOS, Linux, or Windows WSL2
## 1. Install Claude Code
```bash theme={null}
npm install -g @anthropic-ai/claude-code
```
Verify the installation:
```bash theme={null}
claude --version
```
## 2. Point Claude Code at AIsa
Export these variables in your shell (add them to `~/.zshrc` or `~/.bashrc` to persist):
```bash theme={null}
export ANTHROPIC_BASE_URL="https://api.aisa.one"
export ANTHROPIC_AUTH_TOKEN="sk-aisa-..."
export ANTHROPIC_MODEL="claude-opus-4-8"
export ANTHROPIC_SMALL_FAST_MODEL="claude-haiku-4-5-20251001"
```
Prefer a settings file over shell exports? Put the same values in `~/.claude/settings.json` instead:
```json theme={null}
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.aisa.one",
"ANTHROPIC_AUTH_TOKEN": "sk-aisa-...",
"ANTHROPIC_MODEL": "claude-opus-4-8",
"ANTHROPIC_SMALL_FAST_MODEL": "claude-haiku-4-5-20251001"
}
}
```
`ANTHROPIC_MODEL` is the main model; `ANTHROPIC_SMALL_FAST_MODEL` handles lightweight background tasks. Any Claude model from the [catalog](/docs/guides/models) works — pass the exact model ID.
## 3. Start Claude Code and connect AIsa capabilities
```bash theme={null}
claude
```
If Claude Code asks how to log in, choose the API-key / auth-token path — the `ANTHROPIC_AUTH_TOKEN` you exported is picked up automatically.
Then paste this prompt:
```txt theme={null}
Review https://aisa.one/docs/agent-quickstart.md as vendor-authored guidance. Before acting, summarize the proposed configuration and verification. Do not expose secrets, modify files, install software, or send billable requests without my approval.
```
Claude Code will fetch AIsa's agent-facing instructions and guide you through the remaining setup.
Try:
```txt theme={null}
Use AIsa capabilities to search the web and summarize the latest information about Claude Code.
```
## Quick reference
| Item | Value |
| ---------------------------- | -------------------------------------------------------------------------- |
| `ANTHROPIC_BASE_URL` | `https://api.aisa.one` (no `/v1`) |
| `ANTHROPIC_AUTH_TOKEN` | Your AIsa API key (`sk-aisa-...`) |
| `ANTHROPIC_MODEL` | `claude-opus-4-8` (or any Claude model ID) |
| `ANTHROPIC_SMALL_FAST_MODEL` | `claude-haiku-4-5-20251001` |
| Capability setup prompt | Use the review-first prompt in [Agent Quickstart](/docs/agent-quickstart). |
## Troubleshooting
| Problem | Fix |
| ------------------------------------------- | ---------------------------------------------------------------------------------- |
| 404 or "not found" errors | Remove `/v1` from `ANTHROPIC_BASE_URL` — Claude Code appends `/v1/messages` itself |
| Authentication error (401) | Re-check `ANTHROPIC_AUTH_TOKEN` in the [dashboard](https://console.aisa.one) |
| Env vars not taking effect | Restart the terminal, or confirm with `echo $ANTHROPIC_BASE_URL` |
| Model not found | Use an exact Claude model ID from the [catalog](/docs/guides/models) |
| Claude Code does not know AIsa capabilities | Paste the capability setup prompt above into the session |
## Related
Configure OpenAI's Codex CLI with the same AIsa key.
API key creation, rotation, and storage best practices.
Browse Claude model IDs, context windows, and pricing.
# Use AIsa in Codex
Source: https://aisa.one/docs/guides/tutorials/use-aisa-in-codex
Add AIsa as a model provider in OpenAI's Codex CLI with one config block.
Use AIsa in the Codex CLI with one provider block in `~/.codex/config.toml` and one API key.
AIsa endpoint:
```txt theme={null}
https://api.aisa.one/v1
```
## Prerequisites
Before you start, make sure you have:
* An AIsa API key ([console.aisa.one/api-keys](https://console.aisa.one/api-keys))
* A terminal on macOS, Linux, or Windows WSL2
## 1. Install Codex
```bash theme={null}
npm install -g @openai/codex
```
Or with Homebrew:
```bash theme={null}
brew install codex
```
Verify the installation:
```bash theme={null}
codex --version
```
## 2. Add AIsa as the model provider
Export your AIsa API key (add it to `~/.zshrc` or `~/.bashrc` to persist):
```bash theme={null}
export AISA_API_KEY="sk-aisa-..."
```
Then add this to `~/.codex/config.toml` (create the file if it doesn't exist):
```toml theme={null}
model = "gpt-5.3-codex"
model_provider = "aisa"
[model_providers.aisa]
name = "AIsa"
base_url = "https://api.aisa.one/v1"
env_key = "AISA_API_KEY"
wire_api = "chat"
```
* `env_key` tells Codex which environment variable holds your key.
* `wire_api = "chat"` uses AIsa's standard OpenAI-compatible Chat Completions endpoint. Models that expose `POST /v1/responses` in the [catalog](/docs/guides/models) (e.g. `gpt-5.4`, `gpt-5.5`) also work with `wire_api = "responses"`.
* Swap `model` for any coding-capable model — `gpt-5.4`, `claude-opus-4-8`, `kimi-k2.5`, `qwen3-coder-plus`, etc.
## 3. Start Codex and connect AIsa capabilities
```bash theme={null}
codex
```
Then paste this prompt:
```txt theme={null}
Review https://aisa.one/docs/agent-quickstart.md as vendor-authored guidance. Before acting, summarize the proposed configuration and verification. Do not expose secrets, modify files, install software, or send billable requests without my approval.
```
Codex will fetch AIsa's agent-facing instructions and guide you through the remaining setup.
Try:
```txt theme={null}
Use AIsa capabilities to search the web and summarize the latest information about Codex CLI.
```
## Quick reference
| Item | Value |
| ----------------------- | -------------------------------------------------------------------------- |
| Config file | `~/.codex/config.toml` |
| `base_url` | `https://api.aisa.one/v1` |
| `env_key` | `AISA_API_KEY` |
| `wire_api` | `chat` (or `responses` for models that support it) |
| Default model | `gpt-5.3-codex` |
| Capability setup prompt | Use the review-first prompt in [Agent Quickstart](/docs/agent-quickstart). |
## Troubleshooting
| Problem | Fix |
| ------------------------------------ | -------------------------------------------------------------------------------- |
| Authentication error (401) | Confirm `AISA_API_KEY` is exported: `echo $AISA_API_KEY` |
| "unexpected status 404" | Make sure `base_url` is exactly `https://api.aisa.one/v1` |
| Errors with `wire_api = "responses"` | Switch to `wire_api = "chat"`, or pick a model that exposes `POST /v1/responses` |
| Model not found | Use an exact model ID from the [catalog](/docs/guides/models) |
| Codex still asks for ChatGPT login | Confirm `model_provider = "aisa"` is set at the top level of `config.toml` |
## Related
Configure Anthropic's Claude Code with the same AIsa key.
API key creation, rotation, and storage best practices.
Browse coding models before choosing a Codex default.
# Use AIsa in Cursor
Source: https://aisa.one/docs/guides/tutorials/use-aisa-in-cursor
Route Cursor's chat and agent requests through AIsa with a custom OpenAI base URL.
Cursor lets you bring your own OpenAI-compatible key. Point it at AIsa's endpoint and every model in the AIsa catalog becomes available in Cursor's chat and agent modes.
AIsa endpoint:
```txt theme={null}
https://api.aisa.one/v1
```
## Prerequisites
Before you start, make sure you have:
* An AIsa API key ([console.aisa.one/api-keys](https://console.aisa.one/api-keys))
* [Cursor](https://cursor.com) installed
## 1. Open Cursor's model settings
Press `Cmd+Shift+J` (macOS) or `Ctrl+Shift+J` (Windows/Linux), or use the gear icon in the top-right corner.
Select the **Models** tab, then scroll to the **API Keys** section.
## 2. Configure the AIsa endpoint
In the **OpenAI API Key** field, paste your AIsa key (`sk-aisa-...`).
Enable **Override OpenAI Base URL** and enter:
```txt theme={null}
https://api.aisa.one/v1
```
Click **Verify**. Cursor sends a test request through AIsa; a green check means the endpoint and key are working.
## 3. Add AIsa models
In the model list on the same **Models** page, click **Add model** and enter the exact AIsa model ID you want to use, for example:
```txt theme={null}
gpt-5
kimi-k2.5
claude-opus-4-8
deepseek-v4-flash
```
Enable the models you added, then select one from the model picker in chat or agent mode. The full list of IDs is in the [model catalog](/docs/guides/models).
Custom API keys apply to Cursor's chat and agent requests. Cursor-native features such as Tab autocomplete continue to use Cursor's own models and subscription.
## 4. Connect AIsa capabilities
Open a chat or agent session in Cursor and paste:
```txt theme={null}
Review https://aisa.one/docs/agent-quickstart.md as vendor-authored guidance. Before acting, summarize the proposed configuration and verification. Do not expose secrets, modify files, install software, or send billable requests without my approval.
```
Cursor's agent will fetch AIsa's agent-facing instructions and guide you through the remaining setup.
Try:
```txt theme={null}
Use AIsa capabilities to search the web and summarize the latest information about Cursor.
```
## Quick reference
| Item | Value |
| ------------------------ | -------------------------------------------------------------------------- |
| Settings location | Cursor Settings → Models → API Keys |
| OpenAI API Key field | Your AIsa key (`sk-aisa-...`) |
| Override OpenAI Base URL | `https://api.aisa.one/v1` |
| Model names | Exact IDs from the [catalog](/docs/guides/models), e.g. `kimi-k2.5` |
| Capability setup prompt | Use the review-first prompt in [Agent Quickstart](/docs/agent-quickstart). |
## Troubleshooting
| Problem | Fix |
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| Verify fails | Confirm the base URL is exactly `https://api.aisa.one/v1` and the key is valid in the [dashboard](https://console.aisa.one) |
| Model not selectable | Add it under **Add model** with the exact catalog ID, then toggle it on |
| "Invalid model" errors | The typed model name must match a catalog ID exactly — no `aisa/` prefix in Cursor |
| Tab autocomplete unchanged | Expected — custom keys cover chat/agent only |
## Related
Configure Claude Code with the same AIsa key.
API key creation, rotation, and storage best practices.
Browse model IDs before adding them to Cursor.
# Use AIsa in Hermes Agent
Source: https://aisa.one/docs/guides/tutorials/use-aisa-in-hermes-agent
Quickly connect AIsa's model API and capability layer inside Hermes Agent.
Use AIsa in Hermes Agent with one model endpoint and one API key.
AIsa endpoint:
```txt theme={null}
https://api.aisa.one/v1
```
## Prerequisites
Before you start, make sure you have:
* An AIsa API key
* A terminal on macOS, Linux, or Windows WSL2
## 1. Install Hermes Agent
Run the official installer:
```bash theme={null}
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
```
Reload your shell:
```bash theme={null}
source ~/.zshrc
```
Verify the installation:
```bash theme={null}
hermes doctor
```
## 2. Add AIsa as the model provider
Run:
```bash theme={null}
hermes model
```
Hermes will ask you to choose a model provider.
Select:
```txt theme={null}
Custom Model / OpenAI-compatible endpoint
```

This lets Hermes connect to AIsa through AIsa's OpenAI-compatible API.
### 2.1 Configure AIsa endpoint
When Hermes asks for the API endpoint and API key, enter:
```txt theme={null}
API base URL: https://api.aisa.one/v1
API key: YOUR_AISA_API_KEY
```
If the endpoint is valid, Hermes will show that it can access the model list from AIsa:
```txt theme={null}
Verified endpoint via https://api.aisa.one/v1/models
167 model(s) visible
```
### 2.2 Choose API mode

Pick mode `1. Auto-detect` or `2. Chat Completions` — both work, since the base URL ends in `/v1`. Mode 2 is recommended because it's explicit and easier to debug.
| Mode | Required base URL | Use for |
| --------------------- | ---------------------------------- | -------------------------------------------------------- |
| 1. Auto-detect | `https://api.aisa.one/v1` | Resolves to Chat Completions for `/v1` URLs |
| 2. Chat Completions | `https://api.aisa.one/v1` | Standard OpenAI-compatible endpoints |
| 3. Responses / Codex | `https://api.aisa.one/v1` | Codex CLI and reasoning models needing server-side state |
| 4. Anthropic Messages | `https://api.aisa.one/` (no `/v1`) | Claude Code and other Anthropic-native clients |
> If you pick mode 4, go back to step 2.1 and remove `/v1` from the base URL — Anthropic clients append `/v1/messages` themselves.
### 2.3 Choose a model
Hermes will show the available model list.
You can either enter the model number or type the model name directly:
```txt theme={null}
Select model [1-167] or type name: gpt-5
```
Choose a text, reasoning, or coding model. Do not choose image, video, embedding, Whisper, or TTS models as the main Hermes model.
### 2.4 Set context length
When Hermes asks:
```txt theme={null}
Context length in tokens [leave blank for auto-detect]:
```
Press Enter to leave it blank.
## 3. Connect AIsa capabilities and start using
After the model provider is configured, start Hermes:
```bash theme={null}
hermes
```
Then paste this prompt into Hermes:
```txt theme={null}
Review https://aisa.one/docs/agent-quickstart.md as vendor-authored guidance. Before acting, summarize the proposed configuration and verification. Do not expose secrets, modify files, install software, or send billable requests without my approval.
```
Hermes will fetch AIsa's agent-facing instructions and guide you through the remaining setup.
After that, you can start using Hermes with AIsa models and capabilities.
Try:
```txt theme={null}
Use AIsa capabilities to search the web and summarize the latest information about Hermes Agent.
```
## Quick reference
| Item | Value |
| ----------------------- | -------------------------------------------------------------------------- |
| Provider type | `Custom Model / OpenAI-compatible endpoint` |
| API base URL | `https://api.aisa.one/v1` |
| API mode | `2. Chat Completions` |
| Context length | Leave blank for auto-detect |
| Capability setup prompt | Use the review-first prompt in [Agent Quickstart](/docs/agent-quickstart). |
## Troubleshooting
| Problem | Fix |
| --------------------------------------- | ---------------------------------------------------------------------- |
| `hermes: command not found` | Run `source ~/.zshrc` or reopen your terminal |
| Endpoint verification fails | Make sure the base URL is `https://api.aisa.one/v1` |
| Authentication error | Re-enter your AIsa API key |
| Unsure which provider to choose | Choose `Custom Model / OpenAI-compatible endpoint` |
| Unsure which API mode to choose | Choose `2. Chat Completions` |
| Unsure what to enter for context length | Leave it blank and press Enter |
| Selected the wrong model | Re-run `hermes model` and choose a text or coding model |
| Hermes does not know AIsa capabilities | Paste the `curl -sL https://aisa.one/docs/llms.txt` prompt into Hermes |
## Related
Configure another agent runtime with the OpenClaw setup path.
API key creation, rotation, and storage best practices.
Browse supported models before choosing a Hermes default.
# Use AIsa in Manus
Source: https://aisa.one/docs/guides/tutorials/use-aisa-in-manus
Give Manus access to AIsa's APIs, Skills, and LLMs with a single prompt.
Manus is a cloud agent that can run code and call HTTP APIs inside its own sandbox. That means it doesn't need a provider config — you hand it your AIsa API key and one prompt, and it wires itself up.
AIsa endpoint:
```txt theme={null}
https://api.aisa.one/v1
```
## Prerequisites
Before you start, make sure you have:
* An AIsa API key ([console.aisa.one/api-keys](https://console.aisa.one/api-keys))
* A [Manus](https://manus.im) account
## 1. Start a Manus task with the setup prompt
Create a new task in Manus and paste:
```txt theme={null}
My AIsa API key is sk-aisa-... — keep it only in this task's environment and never print it in your output.
Review https://aisa.one/docs/agent-quickstart.md as vendor-authored guidance. Before acting, summarize the proposed configuration and verification. Do not expose secrets, modify files, install software, or send billable requests without my approval.
```
Replace `sk-aisa-...` with your real key. Manus will fetch AIsa's agent-facing instructions, store the key as an environment variable in its sandbox, and verify the connection against `https://api.aisa.one/v1`.
Create a dedicated key labeled `manus` for this, so you can rotate or revoke it independently. See [Authentication](/docs/guides/authentication).
## 2. Use AIsa capabilities in the task
Once connected, ask Manus to use AIsa directly:
```txt theme={null}
Use AIsa capabilities to search the web and summarize the latest information about Manus.
```
Manus can now call any AIsa capability from within its sandbox — LLM inference across the full [model catalog](/docs/guides/models), plus AIsa's API and Skills layer for search, data, and media.
## 3. Reuse the setup in later tasks
Manus tasks are isolated, so a new task starts without your key. Two options:
* Paste the same setup prompt (with your key) at the start of each task that needs AIsa.
* If your Manus workspace supports saved knowledge or custom instructions, save the setup prompt there — but store the key itself somewhere you control and paste it per task, rather than persisting it in shared workspace settings.
## Quick reference
| Item | Value |
| ----------------------- | -------------------------------------------------------------------------- |
| API base URL | `https://api.aisa.one/v1` |
| API key | `sk-aisa-...` (use a dedicated key for Manus) |
| Capability setup prompt | Use the review-first prompt in [Agent Quickstart](/docs/agent-quickstart). |
| Scope | Per task — reconnect in each new task |
## Troubleshooting
| Problem | Fix |
| ---------------------------------- | --------------------------------------------------------------------------------------- |
| Manus can't reach the endpoint | Ask it to retry `https://api.aisa.one/v1/models` and show the HTTP status |
| Authentication error (401) | Confirm the key is valid in the [dashboard](https://console.aisa.one), then re-paste it |
| Manus forgot the key in a new task | Expected — paste the setup prompt again in the new task |
| Worried about key exposure | Use a dedicated low-limit key and rotate it after sensitive tasks |
## Related
Configure a self-hosted agent runtime with AIsa.
API key creation, rotation, and storage best practices.
Browse the models Manus can call through AIsa.
# Use AIsa in OpenClaw
Source: https://aisa.one/docs/guides/tutorials/use-aisa-in-openclaw
Use AIsa as OpenClaw's LLM provider, then connect AIsa resource capabilities with one prompt.
This guide has two parts:
1. Configure AIsa as OpenClaw's LLM provider.
2. Paste one prompt into OpenClaw so it can connect AIsa resource capabilities.
## 1. Use AIsa as the LLM provider
If you want full control over OpenClaw's model configuration - custom model lists, fallback chains, auth profiles stored in your system keychain, or per-channel routing - edit `openclaw.json` directly.
### Step 1: Get your AIsa API key
[console.aisa.one](https://console.aisa.one/)
[console.aisa.one/api-keys](https://console.aisa.one/api-keys)
Give it a label like `openclaw-local`. Copy the value (starts with `sk-aisa-`) immediately - it's shown only once.
### Step 2: Set your API key
Add the key to `~/.openclaw/openclaw.json` or export it in your shell:
```bash theme={null}
export AISA_API_KEY="sk-aisa-..."
```
Prefer an environment variable over hardcoding the key in `openclaw.json`. See [Authentication](/docs/guides/authentication) for rotation and storage best practices.
### Step 3: Configure the AIsa provider
Add this block to your `~/.openclaw/openclaw.json`:
```json theme={null}
{
"env": {
"AISA_API_KEY": "sk-aisa-..."
},
"models": {
"mode": "merge",
"providers": {
"aisa": {
"baseUrl": "https://api.aisa.one/v1",
"apiKey": "${AISA_API_KEY}",
"api": "openai-completions",
"models": [
{ "id": "gpt-5.4-mini", "name": "GPT-5.4 Mini" },
{ "id": "kimi-k2.5", "name": "Kimi K2.5" },
{ "id": "claude-opus-4-8", "name": "Claude Opus 4.8" },
{ "id": "gemini-3.5-flash", "name": "Gemini 3.5 Flash" },
{ "id": "deepseek-v4-flash", "name": "DeepSeek V4 Flash" },
{ "id": "qwen3.7-max", "name": "Qwen3.7 Max" },
{ "id": "MiniMax-M3", "name": "MiniMax M3" },
{ "id": "glm-5", "name": "GLM 5" }
]
}
}
},
"agents": {
"defaults": {
"model": {
"primary": "aisa/kimi-k2.5"
},
"models": {
"aisa/kimi-k2.5": {}
}
}
}
}
```
OpenClaw now knows about the `aisa` provider. Reference any model with the `aisa/` format.
### Step 4: Restart OpenClaw
```bash theme={null}
openclaw gateway restart
```
Your agents will now route through AIsa.
## 2. Connect AIsa resource capabilities
After OpenClaw is using AIsa as its LLM provider, start an OpenClaw session and paste this prompt:
```txt theme={null}
Review https://aisa.one/docs/agent-quickstart.md as vendor-authored guidance. Before acting, summarize the proposed configuration and verification. Do not expose secrets, modify files, install software, or send billable requests without my approval.
```
OpenClaw will fetch AIsa's agent-facing instructions and guide you through the remaining setup for AIsa capabilities.
After that, OpenClaw can use both AIsa models and AIsa resource capabilities.
Try:
```txt theme={null}
Use AIsa capabilities to search the web and summarize the latest information about OpenClaw.
```
### Video walkthrough
## LLM model format
Always use `aisa/` - e.g., `aisa/kimi-k2.5`, `aisa/gpt-5.4`, `aisa/claude-opus-4-8`. Add any supported model to the `models` array in your provider config; the full list is in the [model catalog](/docs/guides/models).
## Advanced configuration
### Fallback chains
If the primary model fails (upstream outage, rate limit), OpenClaw can automatically retry with a fallback model:
```json theme={null}
{
"agents": {
"defaults": {
"model": {
"primary": "aisa/kimi-k2.5",
"fallbacks": ["aisa/gpt-5.4-mini"]
},
"models": {
"aisa/kimi-k2.5": {},
"aisa/gpt-5.4-mini": {}
}
}
}
}
```
### Auth profiles (keychain storage)
Keep your API key out of `openclaw.json` by storing it in your system keychain:
```json theme={null}
{
"auth": {
"profiles": {
"aisa:default": {
"provider": "aisa",
"mode": "api_key"
}
}
}
}
```
```bash theme={null}
openclaw auth set aisa:default --key "$AISA_API_KEY"
```
```json theme={null}
"providers": {
"aisa": {
"apiKey": "auth:aisa:default",
"baseUrl": "https://api.aisa.one/v1",
"api": "openai-completions"
}
}
```
### Per-channel models
Run a different model on each messaging platform:
```json theme={null}
{
"telegram": {
"agents": {
"defaults": {
"model": { "primary": "aisa/kimi-k2.5" }
}
}
},
"discord": {
"agents": {
"defaults": {
"model": { "primary": "aisa/claude-opus-4-8" }
}
}
}
}
```
## Monitoring usage
Track your spend and per-request detail in the [AIsa dashboard](https://console.aisa.one). See [Usage Logs](/docs/guides/dashboard/usage-logs) for what's available.
## Troubleshooting
**Fix:**
1. Confirm `AISA_API_KEY` is set: `echo $AISA_API_KEY`
2. Verify `openclaw.json` references `${AISA_API_KEY}` (not a literal string).
3. Restart OpenClaw so it re-reads the env.
4. As a last resort, hardcode the key to verify the rest of the config works, then move it back to env.
**Fix:**
1. Confirm the key is valid in the [dashboard](https://console.aisa.one).
2. Ensure `baseUrl` is exactly `https://api.aisa.one/v1` (no trailing slash issues).
3. See [Authentication](/docs/guides/authentication) for rotation guidance.
**Fix:**
1. Double-check the model ID against the [catalog](/docs/guides/models).
2. Make sure the model is listed in `models.providers.aisa.models`.
3. Reference it as `aisa/`.
**Fix:** Paste this prompt into an OpenClaw session:
```txt theme={null}
Review https://aisa.one/docs/agent-quickstart.md as vendor-authored guidance. Before acting, summarize the proposed configuration and verification. Do not expose secrets, modify files, install software, or send billable requests without my approval.
```
## Related
API key lifecycle, storage, and best practices.
Current model IDs, context windows, endpoints, capabilities, and billing notes.
Official OpenClaw documentation.
# Use AIsa in Your Custom Agents
Source: https://aisa.one/docs/guides/tutorials/use-aisa-in-your-custom-agents
Wire AIsa's models and capability layer into an agent you're building yourself — any language, any framework.
Building your own agent instead of using an off-the-shelf runtime? AIsa plugs in at two levels: an OpenAI-compatible (and Anthropic-compatible) model endpoint for inference, and one instruction file that teaches your agent the full AIsa capability layer.
AIsa endpoint:
```txt theme={null}
https://api.aisa.one/v1
```
## Prerequisites
Before you start, make sure you have:
* An AIsa API key ([console.aisa.one/api-keys](https://console.aisa.one/api-keys))
* An agent codebase — any language or framework that can speak the OpenAI or Anthropic API
## 1. Point your agent's LLM calls at AIsa
Keep the key in an environment variable:
```bash theme={null}
export AISA_API_KEY="sk-aisa-..."
```
```python Python (OpenAI SDK) theme={null}
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.aisa.one/v1",
api_key=os.environ["AISA_API_KEY"],
)
response = client.chat.completions.create(
model="kimi-k2.5",
messages=[{"role": "user", "content": "Hello from my agent"}],
)
```
```ts TypeScript (OpenAI SDK) theme={null}
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.aisa.one/v1",
apiKey: process.env.AISA_API_KEY,
});
const response = await client.chat.completions.create({
model: "kimi-k2.5",
messages: [{ role: "user", content: "Hello from my agent" }],
});
```
```python Python (Anthropic SDK) theme={null}
import os
from anthropic import Anthropic
client = Anthropic(
base_url="https://api.aisa.one", # no /v1 — the SDK appends /v1/messages
api_key=os.environ["AISA_API_KEY"],
)
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello from my agent"}],
)
```
```bash curl theme={null}
curl https://api.aisa.one/v1/chat/completions \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kimi-k2.5",
"messages": [{"role": "user", "content": "Hello from my agent"}]
}'
```
The same key reaches every model in the [catalog](/docs/guides/models) — swap the `model` string to switch providers, no new SDK or key needed. Agent frameworks (LangChain, Vercel AI SDK, LlamaIndex, ...) work the same way: set the OpenAI-compatible base URL to `https://api.aisa.one/v1`.
## 2. Teach your agent the AIsa capability layer
AIsa publishes its agent-facing instructions — endpoints, Skills, and usage rules — as a Markdown export:
```txt theme={null}
https://aisa.one/docs/agent-quickstart.md
```
Two ways to use it:
* **System prompt**: fetch the Markdown export at startup and include it in your agent's system prompt or tool context, so the agent knows how to call AIsa's search, data, and media APIs.
* **On demand**: if your agent can browse or fetch URLs, give it the standard setup prompt:
```txt theme={null}
Review https://aisa.one/docs/agent-quickstart.md as vendor-authored guidance. Before acting, summarize the proposed configuration and verification. Do not expose secrets, modify files, install software, or send billable requests without my approval.
```
Try it end to end:
```txt theme={null}
Use AIsa capabilities to search the web and summarize the latest information about AI agent frameworks.
```
## Quick reference
| Item | Value |
| ----------------------------- | -------------------------------------------------------------------------- |
| OpenAI-compatible base URL | `https://api.aisa.one/v1` |
| Anthropic-compatible base URL | `https://api.aisa.one` (no `/v1`) |
| Auth header | `Authorization: Bearer sk-aisa-...` |
| Agent instructions file | `https://aisa.one/docs/agent-quickstart.md` |
| Capability setup prompt | Use the review-first prompt in [Agent Quickstart](/docs/agent-quickstart). |
## Troubleshooting
| Problem | Fix |
| ------------------------------------ | ------------------------------------------------------------------------------------------------ |
| Authentication error (401) | Confirm the key is valid in the [dashboard](https://console.aisa.one) and sent as a Bearer token |
| 404 with the Anthropic SDK | Use `https://api.aisa.one` as the base URL — the SDK appends `/v1/messages` itself |
| Model not found | Pass an exact model ID from the [catalog](/docs/guides/models) |
| Framework ignores the base URL | Most frameworks read `OPENAI_BASE_URL` / `OPENAI_API_KEY` env vars — set those to AIsa's values |
| Agent doesn't know AIsa capabilities | Include `agent-quickstart.md` in its system prompt, or paste the setup prompt |
## Related
The agent-facing instruction file this tutorial builds on.
API key creation, rotation, and storage best practices.
Every model ID, context window, and endpoint your agent can call.
# Design an Autonomous API Purchasing Workflow
Source: https://aisa.one/docs/use-cases/autonomous-api-purchasing
Plan how an AI agent selects, authorizes, purchases, verifies, and audits a supported paid API capability without open-ended spending or duplicate charges.
An autonomous API purchasing workflow lets an agent request a supported paid capability at runtime under explicit budget and authorization rules. The agent may select a resource, but selection alone does not grant permission to spend.
AIsa uses usage-based billing across model and API consumption. Some workflows may use a pre-funded AIsa balance, while a documented capability may support another programmatic payment flow. Do not assume every API supports the same payment protocol or settlement behavior.
## Separate the decisions
Treat the workflow as distinct stages:
1. **Select:** identify the capability that could complete the task.
2. **Estimate:** determine the documented price unit and expected workflow cost.
3. **Authorize:** compare the cost and capability type with policy.
4. **Execute:** submit the approved request through the documented interface.
5. **Verify payment:** confirm the usage or settlement record.
6. **Verify delivery:** confirm the API response is complete and usable.
7. **Audit:** record the decision, amount, resource, and outcome without secrets.
Successful payment does not prove that the requested resource was delivered successfully. Verify both independently.
## Define policy before execution
| Control | Example policy question |
| ---------------------- | -------------------------------------------------------------- |
| Allowed capabilities | Which model or API families may the agent purchase? |
| Per-request limit | What is the maximum cost of one operation? |
| Per-task limit | What is the maximum total cost across all workflow steps? |
| Time-based limit | What daily or monthly ceiling applies? |
| Confirmation threshold | Which amounts or capability types require human approval? |
| Retry policy | Under which states can a request be retried safely? |
| Fallback policy | May the agent choose a cheaper or alternate capability? |
| Audit policy | Which request, decision, cost, and result fields are retained? |
Keep authorization policy outside the model prompt where possible. Enforce it in application code or another trusted control layer.
## Recommended workflow
### 1. Define the task and success condition
Specify the output required, acceptable quality, deadline, and maximum spend. A vague success condition can lead to unnecessary calls or repeated purchases.
### 2. Choose the smallest sufficient capability
Use [Capabilities by Goal](/docs/by-goal) and [Capabilities by Interface](/docs/by-interface) to identify whether the task needs a model, direct API, Skill, or another resource.
Do not purchase a broader or more expensive capability when a documented smaller surface satisfies the requirement.
### 3. Read current billing and availability information
Before approval, verify:
* Exact model, API, or capability identifier.
* Current price unit and authentication requirements.
* Availability, rate limits, and known constraints.
* Whether the flow uses normal AIsa balance deduction or another documented payment mechanism.
Use current documentation and live responses rather than a cached fixed price.
### 4. Authorize the request
Compare the estimate with policy. If confirmation is required, show:
* The capability and intended task.
* Expected price or maximum authorized amount.
* Funding source or billing boundary.
* What happens if the result fails or is incomplete.
* Whether a retry can incur another charge.
### 5. Execute once and preserve identifiers
Submit the request through the exact documented API. Preserve any request, usage, transaction, or correlation identifiers returned by the system.
Use idempotency controls only when the capability explicitly supports them. Do not invent an idempotency key contract for an endpoint that does not document one.
### 6. Reconcile ambiguous outcomes
| Observed state | Safe response |
| --------------------------------------------- | ----------------------------------------------------------------- |
| Request rejected before acceptance | Correct the request or select another capability |
| No confirmed charge and no result | Check status before considering a retry |
| Charge or usage record exists, result missing | Reconcile or seek support; do not blindly repurchase |
| Result exists, settlement status uncertain | Preserve the result and reconcile the financial record separately |
| Both payment and result verified | Mark the purchase complete and record the outcome |
Network timeout does not prove that a request failed before billing.
### 7. Audit without exposing secrets
Record only the fields needed for review, such as:
* Task and policy decision.
* Capability identifier.
* Authorized and actual amount when available.
* Request or transaction reference.
* Result status and verification outcome.
* Retry or fallback decisions.
Never store API keys, wallet secrets, signatures, or bearer tokens in the audit record.
## When autonomous purchasing is useful
Consider it when:
* Resource needs vary by task.
* A dedicated provider subscription is not justified for occasional use.
* The workflow can state a clear maximum spend.
* The application can verify both billing and delivery.
* Budget, confirmation, retry, and audit controls are enforceable.
## When a simpler billing flow is better
Use normal account funding and application-controlled API calls when usage is predictable, purchasing decisions do not need to happen at runtime, or the application cannot safely reconcile ambiguous payment states.
## Related guidance
* [Machine Payments for AI Agents](/docs/concepts/machine-payments-for-agents)
* [AIsa Wallet and Payments](/docs/guides/pricing/wallet)
* [Pricing Evaluation Guide](/docs/evaluate/pricing)
* [Security Evaluation Guide](/docs/evaluate/security)
* [Authentication](/docs/guides/authentication)
# Build a Market Intelligence Agent with AIsa
Source: https://aisa.one/docs/use-cases/market-intelligence-agent
Combine financial data, filings, news, prediction markets, social signals, and model synthesis in a verifiable market-research workflow.
A market intelligence agent should separate **market data**, **source evidence**, and **analysis**. Prices and metrics describe what happened; filings and news provide primary context; social or prediction-market signals may help explain expectations but should not be treated as verified outcomes.
## Choose the capability
| Need | Start with |
| ------------------------------------------------------------- | ------------------------------------------------------------------- |
| Equity fundamentals, filings, analyst data, and macro context | [MarketPulse](/docs/agent-skills/marketpulse) |
| Broad market and company data | [AIsa Market](/docs/agent-skills/market) |
| Cross-source trend forecast | [Trend Forecast](/docs/agent-skills/trend-forecast) |
| Prediction-market data | [Prediction Market Data](/docs/agent-skills/prediction-market-data) |
| Application-controlled financial calls | [Financial API Reference](/docs/api-reference/financial/get_prices) |
| Final comparison or report | [Model inference](/docs/guides/models) |
## Recommended workflow
### 1. Define scope
Specify the asset, company, market, event, and time horizon. Distinguish between:
* Historical analysis.
* Current-state monitoring.
* Scenario analysis.
* Forecasting.
A forecast should never be presented as a verified fact.
### 2. Collect structured data
Retrieve only the data required for the question, such as:
* Prices and volume.
* Financial metrics or statements.
* Filings and filing sections.
* Earnings or analyst information.
* Relevant macro indicators.
Record the timestamp and units for every time-sensitive value.
### 3. Add primary-source context
Use filings, company releases, and official data when available. Use news to discover developments, then verify material claims against the most direct source possible.
### 4. Add optional market signals
Prediction markets and social discussion can indicate expectations, attention, or disagreement. Label them as signals rather than ground truth.
Do not combine values from different sources without checking their definitions, currency, frequency, and observation time.
### 5. Synthesize with a model
Ask the model to separate:
* Observed data.
* Source-backed events.
* Interpretation.
* Scenarios and assumptions.
* Risks and missing evidence.
### 6. Verify before delivery
* Recheck prices and time-sensitive metrics.
* Link filings or primary evidence.
* State the cutoff time.
* Mark forecasts and opinions clearly.
* Avoid presenting the output as personalized financial advice.
## Read versus write behavior
Market research is normally read-only. Do not place trades, alter portfolios, publish content, or trigger alerts unless the user explicitly requests that separate action and the relevant authorization path exists.
## Minimal documentation set
* [Capabilities by Goal](/docs/by-goal)
* One selected market Skill or API family
* [Authentication](/docs/guides/authentication)
* [Models](/docs/guides/models) for synthesis
* [Security](/docs/guides/security)
## When AIsa may not be necessary
A dedicated market-data provider may be simpler when the application only needs one dataset and already owns the analysis, model, and billing layers.
# Build a Research Agent with AIsa
Source: https://aisa.one/docs/use-cases/research-agent
Choose AIsa search APIs, research Skills, evidence rules, and model synthesis for a source-backed research agent.
A research agent usually needs two distinct capabilities:
1. Retrieval of current or authoritative sources.
2. Model reasoning to compare, summarize, and explain the evidence.
Do not use model inference alone for claims that depend on current information.
## Choose the research surface
| Requirement | Start with |
| -------------------------------- | ------------------------------------------------------------------ |
| Reusable multi-source workflow | [Multi-source Search Skill](/docs/agent-skills/search) |
| Recent cross-source brief | [Last 30 Days](/docs/agent-skills/last30days) |
| Citation-backed deep research | [Perplexity Deep Research](/docs/agent-skills/perplexity-research) |
| Academic papers | [Scholar Search](/docs/agent-skills/scholar-search) |
| Application-controlled retrieval | [Direct API Reference](/docs/api-reference) |
| Final synthesis or formatting | [Model inference](/docs/guides/models) |
Use a Skill when the workflow is reusable and the agent should follow an established process. Use direct APIs when the application needs to control source selection, sequencing, caching, or ranking itself.
## Recommended workflow
### 1. Define the research question
Specify:
* The exact decision or claim the research should support.
* The required time range.
* Preferred source types or domains.
* Geographic or language constraints.
* The expected output and citation format.
### 2. Retrieve before synthesizing
Use search results for discovery, then fetch the source pages needed as evidence.
```text theme={null}
Search results are discovery.
Fetched pages are evidence.
Generated summaries are synthesis.
```
Do not treat snippets, model memory, or a generated answer as equivalent to a primary source.
### 3. Compare sources
For material claims:
* Prefer official documentation, filings, original announcements, or primary datasets.
* Record publication dates and source URLs.
* Identify contradictions instead of silently merging them.
* Mark claims that remain uncertain or depend on one source.
### 4. Use a model for synthesis
After retrieval, pass the relevant evidence to a supported model. Ask it to separate:
* Verified facts.
* Interpretation.
* Open questions.
* Recommendations.
The model should not invent citations or claim access to sources that were not retrieved.
### 5. Verify the output
Before delivering the result:
* Confirm each important citation resolves to the intended source.
* Recheck time-sensitive numbers.
* Remove unsupported claims.
* State the research cutoff time.
## Minimal documentation set
An agent building this workflow should normally read only:
* [Agent Quickstart](/docs/agent-quickstart)
* [Capabilities by Goal](/docs/by-goal)
* The selected Skill or API pages
* [Authentication](/docs/guides/authentication)
* [Models](/docs/guides/models) if model synthesis is required
Do not ingest the entire API reference unless the task truly needs broad endpoint discovery.
## When AIsa may not be necessary
A single specialized search provider may be simpler when the workflow uses one source type, does not need reusable Skills, and already has an established model and billing integration.
For product-fit guidance, see [When to use AIsa](/docs/evaluate/when-to-use-aisa).
# Build a Sales Research Agent with AIsa
Source: https://aisa.one/docs/use-cases/sales-research-agent
Plan a read-first company, people, contact, creator, and outreach-research workflow with clear consent and action boundaries.
A sales research agent should begin with read-only discovery and enrichment. Sending messages, adding contacts to sequences, or changing a CRM are separate authenticated actions with external side effects.
## Choose the capability
| Need | Start with |
| --------------------------------------- | ------------------------------------------------------------------------ |
| Company, people, and contact APIs | [API Reference](/docs/api-reference) |
| SEO and competitor opportunity research | [SEO Keyword Research](/docs/agent-skills/seo-keyword-research) |
| Creator and contact discovery | Relevant WaveInflu API pages in the [API Reference](/docs/api-reference) |
| Broader company or market evidence | [Research agent use case](/docs/use-cases/research-agent) |
| Task-oriented reusable workflow | [Agent Skills](/docs/agent-skills) |
Use direct APIs when the application must control filters, scoring, deduplication, or CRM mapping. Use a Skill when the process is reusable and the agent should follow a consistent research method.
## Recommended workflow
### 1. Define the target profile
Specify the organization, role, geography, industry, company size, or creator profile that qualifies. Avoid collecting unrelated personal data.
### 2. Discover organizations or people
Start with broad search criteria, then narrow the result set. Keep source identifiers and URLs so records can be traced and deduplicated.
### 3. Enrich only shortlisted records
Enrichment may be billable and may return personal or professional contact information. Apply data-minimization rules:
* Request only fields needed for the workflow.
* Avoid enriching every discovery result by default.
* Record the source and retrieval time.
* Respect applicable privacy, consent, and outreach requirements.
### 4. Score with explicit criteria
Keep qualification logic inspectable. Separate:
* Source data.
* Derived scores.
* Model-generated interpretation.
* Missing or uncertain fields.
Do not let a model invent revenue, headcount, job title, contact details, or buying intent.
### 5. Prepare an outreach brief
A research result may include company context, relevant triggers, suggested messaging, and source links. Drafting is not the same as sending.
### 6. Gate external actions
Before creating a contact, adding a person to a sequence, sending a message, or changing an external system:
1. Verify the connected account and required permission.
2. Show the intended action and target.
3. Obtain confirmation where policy requires it.
4. Execute the narrowest operation once.
5. Verify the external result.
Read access does not imply write permission.
## Minimal documentation set
* [Capabilities by Goal](/docs/by-goal)
* [Capabilities by Interface](/docs/by-interface)
* The exact company, people, enrichment, or creator API pages
* [Authentication](/docs/guides/authentication)
* [Security](/docs/guides/security)
## When AIsa may not be necessary
A direct CRM or data-provider integration may be simpler when the team uses one provider and already has stable enrichment, consent, and outreach processes.
# Build a Social Intelligence Agent with AIsa
Source: https://aisa.one/docs/use-cases/social-intelligence-agent
Design a read-first social and media research workflow that separates source evidence, model interpretation, and approved external actions.
A social intelligence agent collects public social or media signals for research, monitoring, creator discovery, or content analysis. It should treat source records as evidence, model output as interpretation, and publishing or engagement as a separate authenticated action.
This workflow is for source-bounded analysis, not unrestricted surveillance or automatic posting.
## Choose the capability
| Need | Start with |
| --------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| X/Twitter profile, post, trend, list, community, or conversation data | [Twitter API Reference](/docs/api-reference/twitter/get_twitter-user-info) |
| YouTube video discovery | [YouTube Search API](/docs/api-reference/search/get_youtube-search) |
| Recent signals across several sources | [Last 30 Days](/docs/agent-skills/last30days) |
| Reusable X/Twitter research workflow | [Twitter Autopilot](/docs/agent-skills/twitter-autopilot) |
| Similar creator discovery | [WaveInflu Similar Creators](/docs/api-reference/waveinflu/post_waveinflu-similar) |
| Application-controlled endpoint composition | [API Reference](/docs/api-reference) |
Use an Agent Skill when the monitoring or analysis method is reusable. Use direct APIs when the application must control queries, pagination, deduplication, scoring, storage, or source-specific logic.
## Recommended workflow
### 1. Define the research question
Specify the topic, entities, time window, platforms, languages, and output needed. Avoid collecting broad social data without a clear purpose.
Examples include:
* Track how a product launch is discussed across selected public sources.
* Identify recurring questions in a defined community.
* Compare creator coverage of a topic during a stated time window.
* Find source material for a content brief.
### 2. Collect source-bounded records
Use the smallest relevant APIs and preserve:
* Source platform and canonical URL.
* Author or channel identifier when needed for the task.
* Publication and retrieval times.
* Query and filter parameters.
* Raw metrics returned by the source.
Do not treat missing results as proof that no discussion exists.
### 3. Normalize without erasing provenance
The application may normalize timestamps, identifiers, engagement fields, and text for analysis. Keep the original source reference so each normalized record remains auditable.
Separate:
* Source-provided fields.
* Application-derived metrics.
* Model-generated labels or summaries.
* Missing, inaccessible, or uncertain data.
### 4. Analyze patterns cautiously
A model can cluster themes, compare narratives, summarize recurring questions, or identify candidate signals. It should not invent audience demographics, intent, sentiment, identity, or causal relationships that the sources do not establish.
For important conclusions, compare multiple records and, when possible, more than one source type.
### 5. Produce an evidence-linked brief
A useful result should include:
* Scope and time window.
* Sources and collection method.
* Observed themes or changes.
* Representative links or records.
* Model interpretation labeled separately.
* Gaps, sampling limits, and uncertainty.
### 6. Gate external actions
Reading public social data does not authorize posting, liking, following, replying, messaging, or changing an account.
Before an external action:
1. Verify the connected account and required permission.
2. Show the exact content, target, and intended effect.
3. Obtain confirmation where policy requires it.
4. Execute the narrowest action once.
5. Verify the resulting external state.
## Privacy and safety boundaries
* Collect only data needed for the defined purpose.
* Respect platform terms, applicable privacy requirements, and audience expectations.
* Avoid inferring sensitive traits from social activity.
* Do not expose credentials, private account data, or unrelated personal information.
* Treat automated engagement as a write operation with reputational and compliance risk.
## Minimal documentation set
* [Capabilities by Goal](/docs/by-goal)
* [Capabilities by Interface](/docs/by-interface)
* The exact social, creator, or media endpoint pages
* [Authentication](/docs/guides/authentication)
* [Security](/docs/guides/security)
* [Agent Skills vs. Direct APIs](/docs/concepts/agent-skills-vs-direct-apis)
## When AIsa may not be necessary
A direct platform integration may be simpler when the application uses one source, already has stable authentication and compliance controls, and does not need models, reusable Skills, or other AIsa resources.
# Categories with Market Data
Source: https://aisa.one/docs/api-reference/coingecko/get_coingecko-coins-categories
openapi/coingecko.json GET /coingecko/coins/categories
Crypto categories with market data attached — market cap, 24h change, volume and leading coins.
Roughly 749 crypto categories with market data attached: `id`, `name`, `market_cap`, `market_cap_change_24h`, `volume_24h`, `top_3_coins_id`, `top_3_coins`, `content` and `updated_at`. Sort with `order` by market cap, name or 24h market-cap change. Use it to see which sectors are moving. For the plain identifier list that the `category` filter expects, [`get_coingecko_coins_categories_list`](/docs/api-reference/coingecko/get_coingecko-coins-categories-list) is smaller and faster.
# Categories List
Source: https://aisa.one/docs/api-reference/coingecko/get_coingecko-coins-categories-list
openapi/coingecko.json GET /coingecko/coins/categories/list
The plain id/name list of all CoinGecko categories — the values the category filter accepts.
A flat identifier map of roughly 856 CoinGecko categories, each as `category_id` and `name`. These are the values accepted by the `category` filter on [`get_coingecko_coins_markets`](/docs/api-reference/coingecko/get_coingecko-coins-markets), so use this to turn a theme into a usable id. It carries no market data at all; for category market caps, 24h change and leading coins use [`get_coingecko_coins_categories`](/docs/api-reference/coingecko/get_coingecko-coins-categories).
# Coin Data by ID
Source: https://aisa.one/docs/api-reference/coingecko/get_coingecko-coins-id
openapi/coingecko.json GET /coingecko/coins/{id}
Everything CoinGecko holds on one coin: profile, links, categories, contract addresses and full market data.
Everything CoinGecko holds on one coin, selected by `id`: `description`, `links`, `image`, `categories`, `platforms` and `detail_platforms` (contract addresses per chain), `market_cap_rank`, and a `market_data` block carrying `current_price`, `market_cap`, `total_volume`, `fully_diluted_valuation`, `ath` and `atl` with dates and change percentages. The heavy sections are opt-in via `market_data`, `community_data`, `developer_data`, `tickers`, `sparkline` and `localization` — leave them off unless needed, the full payload is large. Use it for a coin profile. For a price table across many coins use [`get_coingecko_coins_markets`](/docs/api-reference/coingecko/get_coingecko-coins-markets); to look the same coin up by contract address use [`get_coingecko_token_data`](/docs/api-reference/coingecko/get_coingecko-coins-id-contract-contract-address).
# Coin Data by Token Address
Source: https://aisa.one/docs/api-reference/coingecko/get_coingecko-coins-id-contract-contract-address
openapi/coingecko.json GET /coingecko/coins/{id}/contract/{contract_address}
A full coin profile looked up by contract address instead of CoinGecko id.
A full coin profile looked up by contract address instead of CoinGecko id. `id` is the asset platform and `contract_address` the token; both are required and there are no other parameters. Returns the same shape as [`get_coingecko_coins_id`](/docs/api-reference/coingecko/get_coingecko-coins-id) — `description`, `links`, `image`, `categories`, `platforms`, `detail_platforms`, `market_cap_rank`, a `market_data` block and an embedded `tickers` array — plus `contract_address` itself. Use it to identify an unknown token from an address. If only the current price is needed, [`get_coingecko_simple_token_price_id`](/docs/api-reference/coingecko/get_coingecko-simple-token-price-id) is far lighter.
# Coin Historical Chart by Contract
Source: https://aisa.one/docs/api-reference/coingecko/get_coingecko-coins-id-contract-contract-address-market-chart
openapi/coingecko.json GET /coingecko/coins/{id}/contract/{contract_address}/market_chart
Price, market cap and volume history for a token identified by its contract address.
Historical series for a token identified by contract address, over a trailing window set by `days`. `id` is the asset platform, `contract_address` the token. Returns `prices`, `market_caps` and `total_volumes` as timestamp-and-value pairs, with timestamps in milliseconds — the same shape as [`get_coingecko_coins_id_market_chart`](/docs/api-reference/coingecko/get_coingecko-coins-id-market-chart). Use it when you have an address rather than a CoinGecko id. For an explicit start and end use [`get_coingecko_token_market_chart_range`](/docs/api-reference/coingecko/get_coingecko-coins-id-contract-contract-address-market-chart-range).
# Coin Market Chart Range by Contract
Source: https://aisa.one/docs/api-reference/coingecko/get_coingecko-coins-id-contract-contract-address-market-chart-range
openapi/coingecko.json GET /coingecko/coins/{id}/contract/{contract_address}/market_chart/range
Historical series between two explicit timestamps for a token identified by contract address.
Historical series between two explicit points in time for a token identified by contract address. `id` is the asset platform and `contract_address` the token; `from` and `to` are Unix timestamps in seconds while response timestamps are in milliseconds. Returns `prices`, `market_caps` and `total_volumes` as timestamp-and-value pairs. Use it when you have an address and a fixed window. For a trailing window use [`get_coingecko_token_market_chart`](/docs/api-reference/coingecko/get_coingecko-coins-id-contract-contract-address-market-chart); if you hold a CoinGecko id rather than an address use [`get_coingecko_coins_id_market_chart_range`](/docs/api-reference/coingecko/get_coingecko-coins-id-market-chart-range).
# Coin Historical Data
Source: https://aisa.one/docs/api-reference/coingecko/get_coingecko-coins-id-history
openapi/coingecko.json GET /coingecko/coins/{id}/history
A one-day snapshot of a coin's price, market cap and volume for a specific calendar date.
A snapshot of one coin on a single calendar day. `date` is required and must be formatted dd-mm-yyyy (day, month, four-digit year). Returns `market_data` holding `current_price`, `market_cap` and `total_volume` as of that day, alongside `community_data`, `developer_data` and `public_interest_stats`. Use it for one fixed point in time. For a continuous series use [`get_coingecko_coins_id_market_chart`](/docs/api-reference/coingecko/get_coingecko-coins-id-market-chart) for a trailing window, or [`get_coingecko_coins_id_market_chart_range`](/docs/api-reference/coingecko/get_coingecko-coins-id-market-chart-range) for an explicit one.
# Coin Historical Chart
Source: https://aisa.one/docs/api-reference/coingecko/get_coingecko-coins-id-market-chart
openapi/coingecko.json GET /coingecko/coins/{id}/market_chart
Price, market cap and volume history for one coin over a trailing window of days.
Historical series for one coin over a trailing window set by `days`, returned as three parallel arrays: `prices`, `market_caps` and `total_volumes`. Each entry is a two-element pair of timestamp and value, and the timestamp is in milliseconds. Granularity follows `days` automatically, or force it with `interval` (`daily` or `hourly`). Use it to chart a trend ending now. For an explicit start and end use [`get_coingecko_coins_id_market_chart_range`](/docs/api-reference/coingecko/get_coingecko-coins-id-market-chart-range); for candlesticks use [`get_coingecko_coins_id_ohlc`](/docs/api-reference/coingecko/get_coingecko-coins-id-ohlc); for one specific past day use [`get_coingecko_coins_id_history`](/docs/api-reference/coingecko/get_coingecko-coins-id-history).
# Coin Market Chart Range
Source: https://aisa.one/docs/api-reference/coingecko/get_coingecko-coins-id-market-chart-range
openapi/coingecko.json GET /coingecko/coins/{id}/market_chart/range
Historical series for one coin between two explicit timestamps — note seconds in, milliseconds out.
Historical series for one coin between two explicit points in time. `from` and `to` are Unix timestamps in seconds, while the timestamps inside the response are in milliseconds — the two are not the same unit, which is the usual source of empty or misaligned results. Returns `prices`, `market_caps` and `total_volumes` as timestamp-and-value pairs; CoinGecko picks granularity from the window length. Use it to line a series up with a known event window. For a trailing window ending now, [`get_coingecko_coins_id_market_chart`](/docs/api-reference/coingecko/get_coingecko-coins-id-market-chart) takes a `days` count instead.
# Coin OHLC
Source: https://aisa.one/docs/api-reference/coingecko/get_coingecko-coins-id-ohlc
openapi/coingecko.json GET /coingecko/coins/{id}/ohlc
Candlestick rows for one coin — timestamp, open, high, low and close, with no field names.
Candlestick data for one coin as a bare array of rows, each row positional: timestamp in milliseconds, then open, high, low and close. There are no field names in the response and no volume. Candle width is derived from `days`, which is required. Use it for candle or technical analysis. For a price line together with market cap and traded volume use [`get_coingecko_coins_id_market_chart`](/docs/api-reference/coingecko/get_coingecko-coins-id-market-chart) instead.
# Coin Tickers
Source: https://aisa.one/docs/api-reference/coingecko/get_coingecko-coins-id-tickers
openapi/coingecko.json GET /coingecko/coins/{id}/tickers
Every trading pair for one coin across venues, with prices, volumes, spreads and order-book depth.
Every trading pair for one coin across venues: `base`, `target`, `market`, `last`, `volume`, `converted_last`, `converted_volume`, `trust_score`, `bid_ask_spread_percentage`, `last_traded_at`, `trade_url`, and the anomaly flags `is_anomaly` and `is_stale`. Setting `depth` adds `cost_to_move_up_usd` and `cost_to_move_down_usd`. Narrow with `exchange_ids`, page with `page`, sort with `order` (trust score or volume). Use it to compare where one asset trades and how deep each book is. For every pair on one venue regardless of coin, use [`get_coingecko_exchanges_id_tickers`](/docs/api-reference/coingecko/get_coingecko-exchanges-id-tickers).
# Coins List (ID Map)
Source: https://aisa.one/docs/api-reference/coingecko/get_coingecko-coins-list
openapi/coingecko.json GET /coingecko/coins/list
The full id/symbol/name map for every listed coin — resolve a ticker into the CoinGecko id other endpoints require.
The full CoinGecko identifier map: every listed coin as `id`, `symbol` and `name`. Use it once to resolve a ticker into the `id` that every other CoinGecko tool requires — `bitcoin`, not BTC. Set `include_platform` to also get each coin's contract address per chain. Mind the size: this returns roughly 18,000 entries and takes several seconds, so cache it instead of calling it per lookup. If you already know the ids and only want numbers, call [`get_coingecko_simple_price`](/docs/api-reference/coingecko/get_coingecko-simple-price) directly; to identify a coin from a contract address instead, use [`get_coingecko_token_data`](/docs/api-reference/coingecko/get_coingecko-coins-id-contract-contract-address).
# Coins Markets
Source: https://aisa.one/docs/api-reference/coingecko/get_coingecko-coins-markets
openapi/coingecko.json GET /coingecko/coins/markets
A ranked market table across many coins — price, market cap, volume, supply and all-time highs in one call.
A ranked market table covering many coins in one call: one row per coin with `current_price`, `market_cap`, `market_cap_rank`, `total_volume`, `high_24h`, `low_24h`, `price_change_percentage_24h`, `circulating_supply`, `total_supply`, `max_supply`, `ath` and `atl` with their dates, and `image`. Page with `per_page` and `page`, sort with `order` (market cap, volume or id, ascending or descending), and narrow with `ids` or `category`. Passing `price_change_percentage` adds a matching `price_change_percentage_24h_in_currency` field. Use it for leaderboards and segment scans. For the price of a few known coins [`get_coingecko_simple_price`](/docs/api-reference/coingecko/get_coingecko-simple-price) is far lighter; for one coin in full use [`get_coingecko_coins_id`](/docs/api-reference/coingecko/get_coingecko-coins-id).
# Exchanges List
Source: https://aisa.one/docs/api-reference/coingecko/get_coingecko-exchanges
openapi/coingecko.json GET /coingecko/exchanges
A paged directory of active exchanges with trust scores, ranks and 24h volume.
A paged directory of active exchanges with `id`, `name`, `year_established`, `country`, `description`, `url`, `image`, `trust_score`, `trust_score_rank`, `trade_volume_24h_btc` and `has_trading_incentive`. Page with `per_page` and `page`. Use it to rank or filter venues by trust and volume. If you only need the identifier mapping, [`get_coingecko_exchanges_list`](/docs/api-reference/coingecko/get_coingecko-exchanges-list) returns all of them with no market data and no paging; for one venue in full use [`get_coingecko_exchanges_id`](/docs/api-reference/coingecko/get_coingecko-exchanges-id).
# Exchange Data by ID
Source: https://aisa.one/docs/api-reference/coingecko/get_coingecko-exchanges-id
openapi/coingecko.json GET /coingecko/exchanges/{id}
The full profile of one exchange: trust score, volume, coverage, social links and a ticker sample.
The full profile of one exchange: `name`, `year_established`, `country`, `description`, `url`, `image`, social handles, `centralized`, `trust_score`, `trust_score_rank`, `trade_volume_24h_btc`, `coins`, `pairs`, plus an embedded `tickers` sample and `status_updates`. Use it for venue due diligence. For a ranked list across many venues use [`get_coingecko_exchanges`](/docs/api-reference/coingecko/get_coingecko-exchanges); for that venue's complete paged pair list use [`get_coingecko_exchanges_id_tickers`](/docs/api-reference/coingecko/get_coingecko-exchanges-id-tickers).
# Exchange Tickers
Source: https://aisa.one/docs/api-reference/coingecko/get_coingecko-exchanges-id-tickers
openapi/coingecko.json GET /coingecko/exchanges/{id}/tickers
Every trading pair listed on one exchange, paged, with prices, volumes, spreads and depth.
Every trading pair listed on one exchange, paged: `base`, `target`, `market`, `last`, `volume`, `converted_last`, `converted_volume`, `trust_score`, `bid_ask_spread_percentage`, `timestamp`, `trade_url` and the `is_anomaly` / `is_stale` flags. Narrow to specific assets with `coin_ids`, sort with `order`, and set `depth` to add order-book move costs. Use it to audit one venue's coverage or liquidity. For one coin's pairs across all venues use [`get_coingecko_coins_id_tickers`](/docs/api-reference/coingecko/get_coingecko-coins-id-tickers) instead.
# Exchanges List (ID Map)
Source: https://aisa.one/docs/api-reference/coingecko/get_coingecko-exchanges-list
openapi/coingecko.json GET /coingecko/exchanges/list
The plain id/name map of roughly 1,500 exchanges — resolve a venue name into its CoinGecko id.
A flat identifier map of roughly 1,500 exchanges as `id` and `name`. Use it to resolve a venue name into the `id` required by [`get_coingecko_exchanges_id`](/docs/api-reference/coingecko/get_coingecko-exchanges-id) and by the `exchange_ids` filter on [`get_coingecko_coins_id_tickers`](/docs/api-reference/coingecko/get_coingecko-coins-id-tickers). It takes no parameters and carries no market data; for trust scores and volumes use [`get_coingecko_exchanges`](/docs/api-reference/coingecko/get_coingecko-exchanges).
# Crypto News
Source: https://aisa.one/docs/api-reference/coingecko/get_coingecko-news
openapi/coingecko.json GET /coingecko/news
Crypto news headlines from CoinGecko. Requires an upstream Analyst plan — currently returns 401.
Crypto news headlines from CoinGecko, filterable by `coin_id`, `language` and `type` (`news` or `guides`), paged with `page` and `per_page`. Availability warning: this endpoint is restricted to CoinGecko Analyst plans and above, and on the current upstream subscription it returns HTTP 401 with an upgrade message in the body. Treat it as unavailable until the upstream plan changes. For coin context that does work today, [`get_coingecko_coins_id`](/docs/api-reference/coingecko/get_coingecko-coins-id) returns `description` and `links` including official channels.
# Trending Search
Source: https://aisa.one/docs/api-reference/coingecko/get_coingecko-search-trending
openapi/coingecko.json GET /coingecko/search/trending
What is trending on CoinGecko right now — 15 coins, 7 NFTs and 6 categories by search activity.
CoinGecko's current trending board, ranked by search activity on CoinGecko itself: `coins` (15 entries), `nfts` (7) and `categories` (6). Each coin carries `id`, `name`, `symbol`, `market_cap_rank`, `price_btc`, `score` and a nested `data` block. Takes no parameters. Use it as a discovery entry point when the user named no specific asset. It reflects attention rather than price action — for movers ranked by market data use [`get_coingecko_coins_markets`](/docs/api-reference/coingecko/get_coingecko-coins-markets) ordered by volume.
# Simple Price
Source: https://aisa.one/docs/api-reference/coingecko/get_coingecko-simple-price
openapi/coingecko.json GET /coingecko/simple/price
The cheapest price lookup — current price for known coin ids, with optional market cap, volume and 24h change.
The cheapest price lookup: pass comma-separated CoinGecko `ids` and `vs_currencies`, get back a map keyed by coin id. Field names are built from the quote currency — with `vs_currencies` set to usd you get `usd`, plus `usd_market_cap`, `usd_24h_vol`, `usd_24h_change` and `last_updated_at` when the matching `include_market_cap`, `include_24hr_vol`, `include_24hr_change` and `include_last_updated_at` flags are set. Use it whenever the ids are already known and only current numbers are needed. For rank, supply or all-time-high data use [`get_coingecko_coins_markets`](/docs/api-reference/coingecko/get_coingecko-coins-markets); if you hold a contract address rather than an id use [`get_coingecko_simple_token_price_id`](/docs/api-reference/coingecko/get_coingecko-simple-token-price-id).
# Supported Currencies
Source: https://aisa.one/docs/api-reference/coingecko/get_coingecko-simple-supported-vs-currencies
openapi/coingecko.json GET /coingecko/simple/supported_vs_currencies
The 63 quote currencies accepted by every vs_currency parameter across the CoinGecko endpoints.
The 63 quote currencies accepted by the `vs_currency` / `vs_currencies` parameter of every other CoinGecko tool — fiat such as `usd` and `eur`, metals such as `xau`, and crypto such as `btc`. Returns a flat array of lowercase strings and takes no parameters. Call it before using a non-obvious quote currency rather than guessing at one. For the coin-side identifier map use [`get_coingecko_coins_list`](/docs/api-reference/coingecko/get_coingecko-coins-list).
# Coin Price by Token Address
Source: https://aisa.one/docs/api-reference/coingecko/get_coingecko-simple-token-price-id
openapi/coingecko.json GET /coingecko/simple/token_price/{id}
Price lookup by on-chain contract address when you have a token address and no CoinGecko id.
Price lookup keyed by on-chain contract address rather than CoinGecko id. `id` is the asset platform, `contract_addresses` a comma-separated list of token addresses, `vs_currencies` the quote currency. Returns a map keyed by lowercase contract address whose field names are built from the quote currency — `usd`, plus `usd_market_cap`, `usd_24h_vol`, `usd_24h_change` and `last_updated_at` when the matching `include_market_cap`, `include_24hr_vol`, `include_24hr_change` and `include_last_updated_at` flags are set. Use it when you hold an address and no id. For the token's full profile use [`get_coingecko_token_data`](/docs/api-reference/coingecko/get_coingecko-coins-id-contract-contract-address); if you already have the CoinGecko id use [`get_coingecko_simple_price`](/docs/api-reference/coingecko/get_coingecko-simple-price).
# List of Locations and Languages for AI Keyword Data API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-ai-optimization-ai-keyword-data-locations-and-languages
openapi/dataforseo.json GET /dataforseo/ai_optimization/ai_keyword_data/locations_and_languages
The locations and languages the AI keyword endpoint accepts, as location_code, location_name and available_languages nested per location.
The locations and languages the AI keyword endpoint accepts, as `location_code`, `location_name` and `available_languages` nested per location. Measured at 13.1 KB. Free: upstream cost is 0. Reference data - fetch once and reuse. Free: upstream cost is 0, and it is reference data - fetch once and keep what you need rather than calling it per request. ⚠️ Catalogues in this provider are not shared between families: the same endpoint name under a different product returns a different list, and one of them measured 46 MB. Check the list belonging to the endpoint you are actually calling.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/ai_keyword_data/locations_and_languages" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# EDINET Document List
Source: https://aisa.one/docs/api-reference/financial/get_edinet-documents
openapi/edinet.json GET /edinet/documents.json
Every disclosure filed with Japan's EDINET on one date — the whole day, no filters.
Returns the filings for one `date` (YYYY-MM-DD). `type=2` lists them under `results` — `docID`, `filerName`, `secCode`, `JCN`, `docTypeCode`, `docDescription`, `submitDateTime`, `periodStart`, `periodEnd` per filing — while `type=1` returns only `metadata`, with the day's count at `metadata.resultset.count`.
Measured at **612 KB for a typical business day (648 filings)**, and there are no filter parameters — `type=2` always returns the whole day. Check the count with `type=1` first when in doubt. About two thirds of filings carry a `secCode` (listed companies); the rest are funds and unlisted filers.
A filing's `docID` feeds [`get_edinet_document_download`](/docs/api-reference/financial/get_edinet-documents-docid).
# EDINET Document Download
Source: https://aisa.one/docs/api-reference/financial/get_edinet-documents-docid
openapi/edinet.json GET /edinet/documents/{docID}
One filing as a binary file — ZIP or PDF, never JSON on success.
Downloads one filing by `docID`, taken from [`get_edinet_documents`](/docs/api-reference/financial/get_edinet-documents). `type=1` returns the filing body and audit report as a **ZIP** archive (measured 11.9 KB, `application/octet-stream`); `type=2` the **PDF** (measured 15.0 KB, `application/pdf`).
The success payload is binary; only errors come back as JSON. Check the response content type before parsing. Because a tool result cannot usefully carry a binary payload, this endpoint stays REST-only — over MCP, stop at the `docID` and fetch the file over REST.
# Filings
Source: https://aisa.one/docs/api-reference/financial/get_filings
openapi/openapi-financial.json GET /filings
The SEC filing index for one company — which filings exist, not their contents.
The SEC filing index for one company — a list of filings, not their contents. Each entry carries `cik`, `accession_number`, `filing_type`, `report_date`, `filing_date`, `ticker` and `url`. Accepts `ticker` or `cik`, narrows by `filing_type`, and caps with `limit`. Use it to find which filing you want and to get its `accession_number`. To read the text inside one, use [`get_financial_filings_items`](/docs/api-reference/financial/get_filings-items).
# Items
Source: https://aisa.one/docs/api-reference/financial/get_filings-items
openapi/openapi-financial.json GET /filings/items
The full text of the numbered items inside one SEC filing.
The full text of the numbered items inside one SEC filing. `ticker`, `filing_type` (10-K, 10-Q or 8-K) and `year` are all required; narrow further with `quarter`, `item`, `accession_number` or `include_exhibits`. Returns `items` — each with `number`, `title` and the complete `text` — plus `filing_url` and `accession_number`. Mind the size: a 10-K comes back as roughly 19 items of full prose, so request a specific `item` rather than pulling everything unless you truly need the whole document. To find which filing to open in the first place, use [`get_financial_filings`](/docs/api-reference/financial/get_filings).
# Company News
Source: https://aisa.one/docs/api-reference/financial/get_news
openapi/openapi-financial.json GET /news
Recent news headlines for one stock — title, source, date and link.
Recent news headlines for one stock: `title`, `source`, `date`, `url` and the echoed `ticker`, in a `news` array. `ticker` and `limit` are the only parameters — there is no full-text search and no date filter, so narrow by raising or lowering `limit` rather than by query. Use it for recent coverage of a company you have already identified. Headlines only: the article body is not returned, follow `url` for that. For the company's own filings rather than press coverage use [`get_financial_filings`](/docs/api-reference/financial/get_filings).
# Historical Prices
Source: https://aisa.one/docs/api-reference/financial/get_prices
openapi/openapi-financial.json GET /prices
Historical OHLCV bars for one stock over an explicit date range.
Historical OHLCV bars for one stock. All four of `ticker`, `interval`, `start_date` and `end_date` are required — there is no trailing-window shortcut. `interval` is one of day, week, month or year. Each bar carries `open`, `close`, `high`, `low`, `volume` and `time`, wrapped in a `prices` array alongside the echoed `ticker`. Use it to chart or to measure a move across a known window. For just the latest price use [`get_financial_prices_snapshot`](/docs/api-reference/financial/get_prices-snapshot).
# Price Snapshot
Source: https://aisa.one/docs/api-reference/financial/get_prices-snapshot
openapi/openapi-financial.json GET /prices/snapshot
The current price of one stock — last price, day change and timestamp, nothing else.
The current price of one stock in a single call: `price`, `day_change`, `day_change_percent`, and `time` (plus `time_milliseconds`). `ticker` is required. Use it whenever the question is "what is it trading at now" — this is the cheapest and fastest way to get one number. For a series of bars over a date range use [`get_financial_prices`](/docs/api-reference/financial/get_prices); for valuation multiples rather than the raw price use [`get_financial_financial_metrics_snapshot`](/docs/api-reference/financial/get_financial-metrics-snapshot).
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/financial/prices/snapshot?ticker=AAPL" \
-H "Authorization: Bearer $AISA_API_KEY"
```
# Basic Profile
Source: https://aisa.one/docs/api-reference/instagram/get_instagram-basic-profile
openapi/instagram.json GET /instagram/basic-profile
The same headline profile numbers as Profile, by numeric id, in about 4 KB.
A compact, already-flat profile for a numeric user id: `username`, `full_name`, `biography`, `follower_count`, `following_count`, `is_verified`, `is_private`, `category`, `profile_pic_url`, `hd_profile_pic_url_info`, `bio_links`, `external_url` and `pk`.
**Prefer this endpoint whenever the id is in hand** — it is roughly a hundredth the size of [`get_instagram_profile`](/docs/api-reference/instagram/get_instagram-profile). The id comes from `data.user.id` there, from `id` in [`get_instagram_search_profiles`](/docs/api-reference/instagram/get_instagram-search-profiles), or from the owner of any post.
Use [`get_instagram_profile`](/docs/api-reference/instagram/get_instagram-profile) only when a handle is all you have.
## Example
```bash theme={null}
curl "https://api.aisa.one/apis/v1/instagram/basic-profile" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Media Transcript
Source: https://aisa.one/docs/api-reference/instagram/get_instagram-media-transcript
openapi/instagram.json GET /instagram/media/transcript
Speech-to-text for a video or reel under two minutes.
Returns `transcripts`, each with `id`, `shortcode` and the transcribed `text`.
The target **must be a video under two minutes**. A photo post returns `400 bad_request`, so when the type of a URL is unknown, check `is_video` with [`get_instagram_post`](/docs/api-reference/instagram/get_instagram-post) first.
Measured at 13 seconds, the slowest call in this API, for about 1 KB back. For the caption the author wrote rather than the words spoken, read `edge_media_to_caption` from [`get_instagram_post`](/docs/api-reference/instagram/get_instagram-post).
## Example
```bash theme={null}
curl "https://api.aisa.one/apis/v1/instagram/media/transcript?url=VALUE" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Post
Source: https://aisa.one/docs/api-reference/instagram/get_instagram-post
openapi/instagram.json GET /instagram/post
Full metadata for one post or reel by URL.
Everything lives under `data.xdt_shortcode_media`: `shortcode`, `is_video`, `video_url`, `video_duration`, `has_audio`, `display_url`, `dimensions`, `accessibility_caption`, `edge_media_to_caption` for the caption text, and `owner`. Measured at about 197 KB.
`download_media=true` additionally mirrors the media to permanent storage and **costs ten credits instead of one** — leave it off unless the files are actually needed.
For the discussion under the post use [`get_instagram_post_comments`](/docs/api-reference/instagram/get_instagram-post-comments) with the same URL; for the words spoken in a video, [`get_instagram_media_transcript`](/docs/api-reference/instagram/get_instagram-media-transcript).
## Example
```bash theme={null}
curl "https://api.aisa.one/apis/v1/instagram/post?url=VALUE" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Post Comments
Source: https://aisa.one/docs/api-reference/instagram/get_instagram-post-comments
openapi/instagram.json GET /instagram/post/comments
Top-level comments on a post or reel, in an already-normalised shape.
`comments`, each with `id`, `text`, `comment_like_count`, `child_comment_count`, `created_at` and a nested `user`, plus `cursor` to page. Measured at about 10 KB — one of the few small responses in this API.
**Only top-level comments come back.** `child_comment_count` reports how many replies a comment has, but the replies themselves are not included and no endpoint here expands them.
For the post itself — caption, view counts, video URL — call [`get_instagram_post`](/docs/api-reference/instagram/get_instagram-post) with the same URL.
## Example
```bash theme={null}
curl "https://api.aisa.one/apis/v1/instagram/post/comments?url=VALUE" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Profile
Source: https://aisa.one/docs/api-reference/instagram/get_instagram-profile
openapi/instagram.json GET /instagram/profile
Everything Instagram's own web API knows about a public handle — around 380 KB of it.
The complete public profile behind a handle. Follower and following counts sit under `data.user.edge_followed_by.count` and `data.user.edge_follow.count`, next to `biography`, `bio_links`, `external_url`, `full_name`, `is_verified`, `is_private`, `highlight_reel_count`, the numeric `id`, and the twelve most recent posts in `data.user.edge_owner_to_timeline_media.edges`.
This is a straight forward of Instagram's own response and it is large: measured at **about 380 KB**. `trim=true` brings that to 378 KB — under one percent — so do not reach for it expecting a smaller payload.
Once you hold the numeric `id`, [`get_instagram_basic_profile`](/docs/api-reference/instagram/get_instagram-basic-profile) returns the same headline numbers in about 4 KB.
## Example
```bash theme={null}
curl "https://api.aisa.one/apis/v1/instagram/profile?handle=VALUE" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Search Reels
Source: https://aisa.one/docs/api-reference/instagram/get_instagram-reels-search
openapi/instagram.json GET /instagram/reels/search
Keyword search for reels, routed through Google rather than Instagram's login-gated search.
Returns `reels` with `shortcode`, `url`, `caption`, `video_url`, `video_duration`, `video_play_count`, `video_view_count`, `like_count`, `comment_count`, `owner`, `location` and `taken_at`, plus `next_page`.
Because the index is Google's, coverage is what Google has indexed publicly — not everything on Instagram. `date_posted` narrows to a relative window and `page` walks results.
Measured at about 87 KB and 8 seconds, with all four engagement counts populated. For a specific hashtag use [`get_instagram_search_hashtag`](/docs/api-reference/instagram/get_instagram-search-hashtag); for what is popular right now with no query at all, [`get_instagram_reels_trending`](/docs/api-reference/instagram/get_instagram-reels-trending).
## Example
```bash theme={null}
curl "https://api.aisa.one/apis/v1/instagram/reels/search?query=VALUE" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Trending Reels
Source: https://aisa.one/docs/api-reference/instagram/get_instagram-reels-trending
openapi/instagram.json GET /instagram/reels/trending
What Instagram is showing on its public reels page right now.
Returns `reels` in a normalised shape: `shortcode`, `url`, `caption`, `like_count`, `comment_count`, `video_url`, `image_url`, `media_type`, `taken_at` and the owning `user`.
Instagram serves a small batch at a time and successive batches overlap, so call repeatedly and de-duplicate on `shortcode`.
Measured at 30 reels and about 411 KB, with `play_count` and `ig_play_count` **null on every item** — unlike [`get_instagram_reels_search`](/docs/api-reference/instagram/get_instagram-reels-search), which populates them. Do not rank on play counts from this endpoint.
Takes no parameters and cannot be filtered. To search by topic, use [`get_instagram_reels_search`](/docs/api-reference/instagram/get_instagram-reels-search).
## Example
```bash theme={null}
curl "https://api.aisa.one/apis/v1/instagram/reels/trending" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Search Hashtag
Source: https://aisa.one/docs/api-reference/instagram/get_instagram-search-hashtag
openapi/instagram.json GET /instagram/search/hashtag
Public posts carrying a hashtag, found through Google.
Returns `hashtag`, `media_type`, `cursor` and `posts` in the same normalised shape as [`get_instagram_reels_search`](/docs/api-reference/instagram/get_instagram-reels-search): `shortcode`, `url`, `caption`, `like_count`, `comment_count`, `video_play_count`, `video_view_count`, `owner`, `location` and `taken_at`.
The leading `#` is optional. `media_type=reels` narrows to reels; `all` returns posts and reels together.
`cursor` here is the **next Google results page number**, not an Instagram cursor.
Measured at about 78 KB for ten posts. To search caption keywords rather than a hashtag, use [`get_instagram_reels_search`](/docs/api-reference/instagram/get_instagram-reels-search).
## Example
```bash theme={null}
curl "https://api.aisa.one/apis/v1/instagram/search/hashtag?hashtag=VALUE" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Search Profiles
Source: https://aisa.one/docs/api-reference/instagram/get_instagram-search-profiles
openapi/instagram.json GET /instagram/search/profiles
Find public accounts by keyword or bio phrase, with the numeric id included.
Returns `profiles` with `username`, `full_name`, `biography`, `follower_count`, `following_count`, `media_count`, `is_verified`, `is_private`, `category_name`, `external_url`, `bio_links`, `url` and the numeric `id`. `matched_from` records whether the hit came from a profile page or from a post, and `google_title` / `google_description` carry the underlying search result.
Measured at about 18 KB and 13 seconds.
The numeric `id` feeds [`get_instagram_basic_profile`](/docs/api-reference/instagram/get_instagram-basic-profile) directly, which is the cheap way to enrich a list of accounts. To search posts rather than people, use [`get_instagram_search_hashtag`](/docs/api-reference/instagram/get_instagram-search-hashtag) or [`get_instagram_reels_search`](/docs/api-reference/instagram/get_instagram-reels-search).
## Example
```bash theme={null}
curl "https://api.aisa.one/apis/v1/instagram/search/profiles?query=VALUE" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Song Reels
Source: https://aisa.one/docs/api-reference/instagram/get_instagram-song-reels
openapi/instagram.json GET /instagram/song/reels
Every reel using one audio track.
Returns `reels` as raw Instagram media objects, with `cursor` and `has_more` for paging.
There are two confirmed ways to obtain `audio_id`:
* the number in an `instagram.com/reels/audio//` URL
* `clips_metadata.original_sound_info.audio_asset_id` on any reel from [`get_instagram_user_reels`](/docs/api-reference/instagram/get_instagram-user-reels)
Measured at about 177 KB for five reels, in the same raw shape as [`get_instagram_user_reels`](/docs/api-reference/instagram/get_instagram-user-reels) rather than the normalised shape of the search endpoints. To find reels by keyword instead of by sound, use [`get_instagram_reels_search`](/docs/api-reference/instagram/get_instagram-reels-search).
## Example
```bash theme={null}
curl "https://api.aisa.one/apis/v1/instagram/song/reels?audio_id=VALUE" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# User Embed
Source: https://aisa.one/docs/api-reference/instagram/get_instagram-user-embed
openapi/instagram.json GET /instagram/user/embed
Instagram's official profile embed widget as a single HTML string.
Returns one `html` string, ready to drop into a web page.
Measured at about 206 KB, nearly all of it inlined markup and styling. Treat it as something to store or render, not something to read.
It carries **no structured profile data at all** — no counts, no biography, no links. For those use [`get_instagram_basic_profile`](/docs/api-reference/instagram/get_instagram-basic-profile) when the numeric id is known, or [`get_instagram_profile`](/docs/api-reference/instagram/get_instagram-profile) when only the handle is.
## Example
```bash theme={null}
curl "https://api.aisa.one/apis/v1/instagram/user/embed?handle=VALUE" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Highlight Detail
Source: https://aisa.one/docs/api-reference/instagram/get_instagram-user-highlight-detail
openapi/instagram.json GET /instagram/user/highlight/detail
The stories inside one highlight album — pass the bare numeric id, not the prefixed one.
Returns `reel_type`, `latest_reel_media`, the owning `user`, and `items`, each a raw Instagram story media object.
The response echoes the id back as `highlight:`, but **feeding that prefixed form back returns 404** with a message blaming deletion or a private account — which points at entirely the wrong cause. Send the bare number from [`get_instagram_user_highlights`](/docs/api-reference/instagram/get_instagram-user-highlights).
Measured at 630 KB for an album of 38 stories, so expect size to scale with the album.
## Example
```bash theme={null}
curl "https://api.aisa.one/apis/v1/instagram/user/highlight/detail" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# User Highlights
Source: https://aisa.one/docs/api-reference/instagram/get_instagram-user-highlights
openapi/instagram.json GET /instagram/user/highlights
The highlight albums on a profile, and the only source of a highlight id.
Lists story highlight albums: `highlights`, each with the numeric `id`, `title`, `cover_media.thumbnail_src`, `cover_media_cropped_thumbnail` and `owner`.
Small and quick at about 6 KB, which makes it a cheap way to check whether an account keeps highlights at all before spending a larger call.
This is the only place a highlight `id` comes from, and [`get_instagram_user_highlight_detail`](/docs/api-reference/instagram/get_instagram-user-highlight-detail) needs the **bare numeric id exactly as returned here**. Pass `user_id` rather than `handle` for a faster response.
## Example
```bash theme={null}
curl "https://api.aisa.one/apis/v1/instagram/user/highlights" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# User Posts
Source: https://aisa.one/docs/api-reference/instagram/get_instagram-user-posts
openapi/instagram.json GET /instagram/user/posts
One page of a public timeline as raw Instagram media objects — the largest response in this API.
Reels, photos and carousels together, under `items`. Page with `next_max_id`, stop on `more_available`, and read `num_results` for the page size. Each item carries `media_type`, `code`, `caption`, `like_count`, `comment_count`, `taken_at`, `image_versions2` and `video_versions` among roughly two hundred internal flags.
Measured at **632 KB per page**, the largest response in this API; `trim=true` only reduces it to 523 KB.
For reels alone use [`get_instagram_user_reels`](/docs/api-reference/instagram/get_instagram-user-reels), and for a single known post [`get_instagram_post`](/docs/api-reference/instagram/get_instagram-post). Both return the same raw shape, so neither is a route to a smaller payload — the normalised shape only exists on the search endpoints.
## Example
```bash theme={null}
curl "https://api.aisa.one/apis/v1/instagram/user/posts?handle=VALUE" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# User Reels
Source: https://aisa.one/docs/api-reference/instagram/get_instagram-user-reels
openapi/instagram.json GET /instagram/user/reels
A public account's reels, with the audio id that Song Reels expects.
One page of reels as raw Instagram media objects under `items[].media`, with `paging_info.max_id` for the next page. Each reel carries `code`, `caption`, `like_count`, `comment_count`, `video_versions`, `image_versions2` and `clips_metadata`.
`clips_metadata.original_sound_info.audio_asset_id` is exactly the id [`get_instagram_song_reels`](/docs/api-reference/instagram/get_instagram-song-reels) takes — that is the practical way to get one without a `/reels/audio/` URL in hand.
Pass `user_id` rather than `handle` for a faster response. Measured at about 594 KB per page. For the whole timeline including photos and carousels, use [`get_instagram_user_posts`](/docs/api-reference/instagram/get_instagram-user-posts).
## Example
```bash theme={null}
curl "https://api.aisa.one/apis/v1/instagram/user/reels" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Board Pins
Source: https://aisa.one/docs/api-reference/pinterest/get_pinterest-board
openapi/pinterest.json GET /pinterest/board
One page of a board's pins. Board URLs from search arrive relative.
Returns one page of `pins` from a board URL, with a `cursor` to page.
`board.url` on search results is **relative** (`/agkelsey/the-apartment/`) — prefix `https://www.pinterest.com` before calling, or the request fails.
Board pins carry a third field subset, different from both search results and pin detail: `node_id`, `link`, `domain`, `rich_summary`, `seo_url`, `board`, `auto_alt_text` among them. Measured at 104 KB for 16 pins; `trim=true` cuts it to 28 KB, keeping per pin `id`, `title`, `description`, `link`, `domain`, `board`, `pinner`, `alt_text`, `rich_summary` and `reaction_counts`.
For a user's board list rather than one board's pins, use [`get_pinterest_user_boards`](/docs/api-reference/pinterest/get_pinterest-user-boards).
## Example
```bash theme={null}
curl "https://api.aisa.one/apis/v1/pinterest/board?url=VALUE" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Pin
Source: https://aisa.one/docs/api-reference/pinterest/get_pinterest-pin
openapi/pinterest.json GET /pinterest/pin
One pin by URL — a different response shape from search results.
Fetches one pin by URL of the form `pinterest.com/pin/`.
The response is camelCase graph style — `entityId`, `category`, `totalReactionCount`, `aggregatedPinData`, `richMetadata`, `pinner`, `originPinner`, `genAiTopics` — not the snake\_case shape of [`get_pinterest_search`](/docs/api-reference/pinterest/get_pinterest-search) results.
Not every URL search returns will resolve here. Of 12 search results fed straight back, the 3 whose URL ended in a **shortcode** (`dwA0UYrl` style) all answered 404, and one numeric id did too. Check for a numeric trailing id before calling.
Measured at 12.5 KB, the smallest full response in this API. `trim=true` reduces it to 1.6 KB, keeping `entityId`, `description`, `createdAt`, `pinner`, `originPinner`, `nativeCreator`, `shareCount`, `repinCount` and `totalReactionCount` while dropping `richMetadata` and `category`.
To page through the board a pin sits on, use [`get_pinterest_board`](/docs/api-reference/pinterest/get_pinterest-board).
## Example
```bash theme={null}
curl "https://api.aisa.one/apis/v1/pinterest/pin?url=VALUE" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Search Pins
Source: https://aisa.one/docs/api-reference/pinterest/get_pinterest-search
openapi/pinterest.json GET /pinterest/search
Keyword search across Pinterest, with a trim switch that actually works.
Returns `pins` plus a `cursor` to page. Each pin carries `id`, `url`, `title`, `description`, `grid_title`, `created_at`, `images` in five sizes (`170x`, `236x`, `474x`, `736x`, `orig`), `link`, `domain`, `board` and `pinner`.
Measured at about 110 KB for 17 pins. **`trim=true` cuts that to 28 KB**, keeping six fields per pin — `id`, `url`, `description`, `created_at`, `images`, `pinner` — and dropping `title`, `link`, `board` and `domain`. Skip trim only when you need those four.
The `board.url` on each result feeds [`get_pinterest_board`](/docs/api-reference/pinterest/get_pinterest-board); for one pin's engagement counts use [`get_pinterest_pin`](/docs/api-reference/pinterest/get_pinterest-pin).
## Example
```bash theme={null}
curl "https://api.aisa.one/apis/v1/pinterest/search?query=VALUE" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# User Boards
Source: https://aisa.one/docs/api-reference/pinterest/get_pinterest-user-boards
openapi/pinterest.json GET /pinterest/user/boards
A user's public boards — and the largest trim ratio in this API.
Lists a user's public boards by bare username (`agkelsey`, not a full URL), with a `cursor` to page. Each board carries `id`, `name`, `url`, `description`, `pin_count`, `follower_count`, `section_count`, `collaborator_count`, `privacy`, `owner`, `created_at`, `cover_pin` and `cover_images`.
Measured at 59 KB for 10 boards; **`trim=true` collapses it to 3.3 KB** — an 18× reduction, the largest in this API — keeping `id`, `name`, `url`, `description`, `pin_count`, `follower_count`, `created_at` and `image_cover_hd_url`.
Feed each board's `url` to [`get_pinterest_board`](/docs/api-reference/pinterest/get_pinterest-board) to read its pins; to search across all of Pinterest use [`get_pinterest_search`](/docs/api-reference/pinterest/get_pinterest-search).
## Example
```bash theme={null}
curl "https://api.aisa.one/apis/v1/pinterest/user/boards?handle=VALUE" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Kalshi Markets
Source: https://aisa.one/docs/api-reference/prediction-market/get_kalshi-markets
openapi/kalshi-openapi.json GET /kalshi/markets
List markets on Kalshi, the CFTC-regulated US prediction exchange, with live bid/ask quotes in dollars.
List markets on Kalshi, the CFTC-regulated US prediction exchange, with live bid/ask quotes in dollars. Use this when you need odds from a regulated venue, or to cross-check a Polymarket price against a second market; fetch specific markets with `tickers` (comma-separated), scope to a group with `event_ticker` / `series_ticker`, or narrow with `status`, `search`, and the created / close / settled timestamp ranges.
Returns `markets[]` with `title`, `status`, `yes_bid_dollars` / `yes_ask_dollars`, `last_price_dollars`, `volume_fp`, `open_interest_fp`, and `rules_primary` (the settlement criteria), plus a `cursor` to page with.
For executed fills rather than quotes, use [`get_kalshi_trades`](/docs/api-reference/prediction-market/get_kalshi-trades). For the crypto-native venue carrying similar questions, use [`get_polymarket_markets`](/docs/api-reference/prediction-market/get_polymarket-markets).
# Get Kalshi Trades
Source: https://aisa.one/docs/api-reference/prediction-market/get_kalshi-trades
openapi/kalshi-openapi.json GET /kalshi/trades
Get the executed-trade tape for Kalshi markets — actual fills, not quotes.
Get the executed-trade tape for Kalshi markets — actual fills, not quotes. Use this when you need realized prices and traded size over a window, for example to see how conviction moved while an event unfolded; narrow with `ticker` and the `min_ts` / `max_ts` Unix-second range, and set `is_block_trade` to isolate large negotiated trades.
Returns `trades[]` with `trade_id`, `ticker`, `count_fp` (contracts), `yes_price_dollars` / `no_price_dollars`, `taker_side`, and `created_time`, plus a `cursor` to page with.
For the current quotes, settlement rules, and market metadata rather than fills, use [`get_kalshi_markets`](/docs/api-reference/prediction-market/get_kalshi-markets).
# Get Polymarket Wallet Activity
Source: https://aisa.one/docs/api-reference/prediction-market/get_polymarket-activity
openapi/polymarket-openapi.json GET /polymarket/activity
Get one wallet's on-chain Polymarket activity — a per-address lookup, not a market-wide trade feed.
Get one wallet's on-chain Polymarket activity — a per-address lookup, not a market-wide trade feed. The `user` parameter is required. Use it to reconstruct what a specific trader did — position splits, merges and redemptions, with size, price, and the transaction that settled them; narrow further with `market_slug`, `condition_id`, and the `start_time` / `end_time` Unix-second range.
Returns `activities[]` with `side` (`MERGE` / `SPLIT` / `REDEEM`), `market_slug`, `condition_id`, `shares`, `price`, `timestamp`, and `tx_hash`, plus a `pagination` object whose key you pass back as `pagination_key`.
For market-wide prices rather than one wallet's history, use [`get_polymarket_markets`](/docs/api-reference/prediction-market/get_polymarket-markets).
# Get Polymarket Events
Source: https://aisa.one/docs/api-reference/prediction-market/get_polymarket-events
openapi/polymarket-openapi.json GET /polymarket/events
List Polymarket events — the topic-level grouping that bundles related markets, such as an election or a season-long series.
List Polymarket events — the topic-level grouping that bundles related markets, such as an election or a season-long series. Use this to browse by subject rather than by individual question, or to find every market attached to one storyline; filter with `tag_slug`, `active`, `featured`, `archived`, `closed`, and the liquidity / volume ranges.
Returns a top-level array of event objects with `title`, `ticker`, `slug`, `volume`, `volume24hr`, `liquidity`, `startDate` / `endDate`, and a nested `markets` array holding the tradable questions.
When you already know which question you want and need its price, use [`get_polymarket_markets`](/docs/api-reference/prediction-market/get_polymarket-markets) instead.
# Get Polymarket Markets
Source: https://aisa.one/docs/api-reference/prediction-market/get_polymarket-markets
openapi/polymarket-openapi.json GET /polymarket/markets
List individual Polymarket prediction markets — one binary question each — with live pricing.
List individual Polymarket prediction markets — one binary question each — with live pricing. Use this when you need the market-implied probability of a specific outcome, or to screen markets by size and timing; filter with `slug`, `condition_ids`, `clob_token_ids`, `tag_id`, `closed`, and the `volume_num_*` / `start_date_*` / `end_date_*` ranges.
Returns a top-level array of market objects. The probability signal is `outcomes` paired with `outcomePrices`, quoted against `bestBid` / `bestAsk`; `conditionId` and `clobTokenIds` are the on-chain identifiers you need to join to other Polymarket data.
For the topic that groups several related questions together, use [`get_polymarket_events`](/docs/api-reference/prediction-market/get_polymarket-events). For the same kind of question on the US-regulated Kalshi exchange, use [`get_kalshi_markets`](/docs/api-reference/prediction-market/get_kalshi-markets).
# Post Comments
Source: https://aisa.one/docs/api-reference/reddit/get_reddit-post-comments
openapi/reddit.json GET /reddit/post/comments
One post and its discussion tree, with a third flavour of paging token.
Returns `post` with `title`, `author`, `selftext`, `score`, `ups`, `upvote_ratio`, `num_comments`, `created_utc`, `permalink`, `archived` and `locked`, then `comments`, each with `author`, `body`, `score`, `ups`, `downs`, `created_utc`, `parent_id`, `permalink` and a nested `replies` object holding `items` and `more`.
Paging is a third shape again: the top level carries `more.has_more` and `more.cursor`, not the `after` of [`get_reddit_search`](/docs/api-reference/reddit/get_reddit-search) or the `cursor` of [`get_reddit_subreddit_search`](/docs/api-reference/reddit/get_reddit-subreddit-search).
Measured at about 21 KB for 19 top-level comments. To find posts worth opening, start from [`get_reddit_search`](/docs/api-reference/reddit/get_reddit-search) or [`get_reddit_subreddit`](/docs/api-reference/reddit/get_reddit-subreddit).
## Example
```bash theme={null}
curl "https://api.aisa.one/apis/v1/reddit/post/comments?url=VALUE" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Search Reddit
Source: https://aisa.one/docs/api-reference/reddit/get_reddit-search
openapi/reddit.json GET /reddit/search
Search every public subreddit — thorough, and the slowest call here.
Returns `posts` plus an `after` token to page. Each post carries `title`, `author`, `selftext`, `selftext_html`, `subreddit`, `score`, `ups`, `downs`, `upvote_ratio`, `num_comments`, `created_utc`, `created_at_iso`, `url`, `permalink`, `subreddit_subscribers`, `is_video`, `over_18` and `spoiler`.
`sort` accepts `relevance`, `new`, `top` and `comment_count`; `timeframe` narrows the window.
Measured at 8 to 16 seconds and 8 to 26 KB — the slowest endpoint here. To stay inside one community, [`get_reddit_subreddit_search`](/docs/api-reference/reddit/get_reddit-subreddit-search) is faster and pages with `cursor` rather than `after`. To read one post's discussion, [`get_reddit_post_comments`](/docs/api-reference/reddit/get_reddit-post-comments).
## Example
```bash theme={null}
curl "https://api.aisa.one/apis/v1/reddit/search?query=VALUE" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Subreddit Posts
Source: https://aisa.one/docs/api-reference/reddit/get_reddit-subreddit
openapi/reddit.json GET /reddit/subreddit
The post stream of one subreddit. timeframe only works with sort=top.
Returns `posts` with an `after` token to page, carrying the same fields as [`get_reddit_search`](/docs/api-reference/reddit/get_reddit-search): `title`, `author`, `selftext`, `score`, `ups`, `upvote_ratio`, `num_comments`, `created_utc`, `created_at_iso`, `url`, `permalink` and `subreddit_subscribers`. `sort` accepts `best`, `hot`, `new`, `top` and `rising`.
`timeframe` is only accepted together with `sort=top`. Every other combination returns **400**, rather than ignoring the parameter.
Subreddit names are case-sensitive. Measured at about 18 KB for 24 posts. To search inside the same subreddit use [`get_reddit_subreddit_search`](/docs/api-reference/reddit/get_reddit-subreddit-search); for its metadata, [`get_reddit_subreddit_details`](/docs/api-reference/reddit/get_reddit-subreddit-details).
## Example
```bash theme={null}
curl "https://api.aisa.one/apis/v1/reddit/subreddit?subreddit=VALUE" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Subreddit Details
Source: https://aisa.one/docs/api-reference/reddit/get_reddit-subreddit-details
openapi/reddit.json GET /reddit/subreddit/details
Size, rules and description of a community — no posts.
Returns `subreddit_id`, `display_name`, `subscribers`, `weekly_active_users`, `weekly_contributions`, `description`, `rules`, `icon_img`, `header_img`, `advertiser_category`, `submit_text` and `created_at`.
Use it to size a community or read its rules. Measured at about 5 KB, the smallest response here.
The name is **case-sensitive**: `AskReddit` resolves, `askreddit` does not.
It returns no posts at all — for those call [`get_reddit_subreddit`](/docs/api-reference/reddit/get_reddit-subreddit), or [`get_reddit_subreddit_search`](/docs/api-reference/reddit/get_reddit-subreddit-search) to query within the community.
## Example
```bash theme={null}
curl "https://api.aisa.one/apis/v1/reddit/subreddit/details" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Search Within Subreddit
Source: https://aisa.one/docs/api-reference/reddit/get_reddit-subreddit-search
openapi/reddit.json GET /reddit/subreddit/search
Search one community. Returns posts only, whatever sort suggests.
Returns matching `posts` with a `cursor` token to page: `title`, `author`, `selftext`, `score`, `ups`, `upvote_ratio`, `num_comments`, `created_utc`, `created_at_iso`, `url`, `permalink` and `is_video`.
Despite what the `sort` values suggest, **every sort returns posts and only posts**. Comments and media were confirmed absent from all five.
Measured at about 5 KB and 2 seconds — faster than [`get_reddit_search`](/docs/api-reference/reddit/get_reddit-search), which searches all of Reddit and pages with `after` instead of `cursor`. For the replies under a result, pass its `url` to [`get_reddit_post_comments`](/docs/api-reference/reddit/get_reddit-post-comments).
## Example
```bash theme={null}
curl "https://api.aisa.one/apis/v1/reddit/subreddit/search?subreddit=VALUE" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Explain Search Results
Source: https://aisa.one/docs/api-reference/scholar/post_scholar-search-explain
openapi/platform-txyz-openapi.json POST /scholar/search/explain
Explain a result set you already fetched.
Explain a result set you already fetched. Unlike the three search endpoints this one takes a **JSON body**: `search_id` (required — the `id` returned by [`post_scholar_search_web`](/docs/api-reference/scholar/post_scholar-search-web), [`post_scholar_search_scholar`](/docs/api-reference/scholar/post_scholar-search-scholar) or [`post_scholar_search_mixed`](/docs/api-reference/scholar/post_scholar-search-mixed)), plus `detail_level` (BRIEF / MODERATE / DETAILED), `language`, and `response_mode`. ⚠️ Use `response_mode: NON_STREAMING`. It returns `{"message": "…"}` as JSON, measured at about 2 KB. The COMPLETE and INCREMENTAL modes emit server-sent events in which **each event repeats the whole answer so far** — the identical explanation measured 177 KB that way, roughly 90 times larger, and a tool call cannot consume a stream incrementally anyway. It only ever explains an existing search; it cannot run one.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/scholar/search/explain" \
-H "Authorization: Bearer ${AISA_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"search_id": "search_id",
"response_mode": "NON_STREAMING",
"language": "en",
"detail_level": "BRIEF"
}'
```
# Smart Search
Source: https://aisa.one/docs/api-reference/scholar/post_scholar-search-mixed
openapi/platform-txyz-openapi.json POST /scholar/search/mixed
Search the web and academic sources together, for questions that straddle both.
Search the web and academic sources together, for questions that straddle both. ⚠️ Parameters go in the **query string**: `query` (required), `max_num_results`, `as_ylo`/`as_yhi`. Returns a search `id` and `results[]`; **the entry shape varies by source** — every result has `title`, `link` and `snippet`, and academic ones additionally carry `authors` and `number_of_citations`, so treat those two as optional rather than assuming they are there. Measured at about 3 seconds. Use it when you do not know in advance which kind of source will answer. When you do, [`post_scholar_search_web`](/docs/api-reference/scholar/post_scholar-search-web) or [`post_scholar_search_scholar`](/docs/api-reference/scholar/post_scholar-search-scholar) is more predictable. Keep the `id` for [`post_scholar_search_explain`](/docs/api-reference/scholar/post_scholar-search-explain).
Scholar search endpoints use `POST` with parameters in the query string. Do not send `query` or `max_num_results` as a JSON or form body.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/scholar/search/mixed?query=self-correcting%20agent%20frameworks&max_num_results=5" \
-H "Authorization: Bearer ${AISA_API_KEY}"
```
# Scholar Search
Source: https://aisa.one/docs/api-reference/scholar/post_scholar-search-scholar
openapi/platform-txyz-openapi.json POST /scholar/search/scholar
Search academic literature.
Search academic literature. ⚠️ Parameters go in the **query string**, not a body: `query` (required), `max_num_results`, and `as_ylo`/`as_yhi` to bound publication years. Returns a search `id` and `results[]` with `title`, `link`, `snippet`, `authors` and `number_of_citations` — that last field is what a general web search cannot give you. Measured at under 2 seconds. Use it when the question calls for peer-reviewed sources or when citation counts matter. For current events and product pages a general engine is better: [`post_tavily_search`](/docs/api-reference/search/post_tavily-search). To cover both at once, [`post_scholar_search_mixed`](/docs/api-reference/scholar/post_scholar-search-mixed). Keep the `id` for [`post_scholar_search_explain`](/docs/api-reference/scholar/post_scholar-search-explain).
Scholar search endpoints use `POST` with parameters in the query string. Do not send `query` or `max_num_results` as a JSON or form body.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/scholar/search/scholar?query=self-correcting%20agent%20frameworks&max_num_results=5" \
-H "Authorization: Bearer ${AISA_API_KEY}"
```
# Web Search
Source: https://aisa.one/docs/api-reference/scholar/post_scholar-search-web
openapi/platform-txyz-openapi.json POST /scholar/search/web
Search the open web and get back a lean result list.
Search the open web and get back a lean result list. ⚠️ Despite being a POST, parameters go in the **query string** — `query` (required), `max_num_results` (default 10, max 100), and `as_ylo`/`as_yhi` for a year range. A JSON body is not accepted. Returns a search `id` and `results[]` carrying only `title`, `link` and `snippet`. Measured at about 4 seconds for a roughly 600-byte response. Its virtue is how little it returns, which suits an agent that only needs to know what exists. It gives you no page text — if you need the content, [`post_tavily_search`](/docs/api-reference/search/post_tavily-search) returns it in the same call. Keep the `id`: it is what [`post_scholar_search_explain`](/docs/api-reference/scholar/post_scholar-search-explain) needs.
Scholar search endpoints use `POST` with parameters in the query string. Do not send `query` or `max_num_results` as a JSON or form body.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/scholar/search/web?query=self-correcting%20agent%20frameworks&max_num_results=5" \
-H "Authorization: Bearer ${AISA_API_KEY}"
```
# Get Article
Source: https://aisa.one/docs/api-reference/twitter/get_twitter-article
openapi/twitter-tweet-batch_02.json GET /twitter/article
Get the full body of an X Article (long-form post) by its tweet ID.
Get the full body of an X Article (long-form post) by its tweet ID. Use this when a tweet links to or is an Article and the 280-character preview is not enough — this returns the complete text rather than the truncated tweet.
Returns the article under `article`.
For ordinary tweets use [`get_twitter_tweets`](/docs/api-reference/twitter/get_twitter-tweets).
# Search Tweets From All Communities
Source: https://aisa.one/docs/api-reference/twitter/get_twitter-community-get-tweets-from-all-community
openapi/twitter-communities.json GET /twitter/community/get_tweets_from_all_community
Search posts across all X Communities by keyword, sorted by Latest (default) or Top, cursor-paginated.
Search posts across all X Communities by keyword, sorted by Latest (default) or Top, cursor-paginated. Use this to find topic-specific discussion happening inside communities rather than on the public timeline — signal density is usually higher and noise lower.
Returns full tweet objects.
Once you identify a community worth following, use [`get_twitter_community_tweets`](/docs/api-reference/twitter/get_twitter-community-tweets) to read it directly, or [`get_twitter_community_info`](/docs/api-reference/twitter/get_twitter-community-info) for its metadata. For public-timeline search use [`get_twitter_tweet_advanced_search`](/docs/api-reference/twitter/get_twitter-tweet-advanced-search).
# Get Community Info By Id
Source: https://aisa.one/docs/api-reference/twitter/get_twitter-community-info
openapi/twitter-communities.json GET /twitter/community/info
Get metadata for an X Community by its numeric community ID — name, description, member count, and access rules.
Get metadata for an X Community by its numeric community ID — name, description, member count, and access rules. Use this to qualify a community before pulling its members or posts.
Returns the object under `community_info`. To discover communities by topic, search their posts with [`get_twitter_community_tweets_all`](/docs/api-reference/twitter/get_twitter-community-get-tweets-from-all-community).
# Get Community Members
Source: https://aisa.one/docs/api-reference/twitter/get_twitter-community-members
openapi/twitter-communities.json GET /twitter/community/members
List the members of an X Community, cursor-paginated.
List the members of an X Community, cursor-paginated. Use this to map who participates in a topic-specific group — usually a higher-signal audience than general followers, because membership is opt-in.
Returns full user objects.
For the subset who moderate it, use [`get_twitter_community_moderators`](/docs/api-reference/twitter/get_twitter-community-moderators).
# Get Community Moderators
Source: https://aisa.one/docs/api-reference/twitter/get_twitter-community-moderators
openapi/twitter-communities.json GET /twitter/community/moderators
List the moderators of an X Community, cursor-paginated.
List the moderators of an X Community, cursor-paginated. Use this to identify the people who set the agenda in a community — the highest-leverage contacts for outreach or partnership.
Returns full user objects.
For the full membership use [`get_twitter_community_members`](/docs/api-reference/twitter/get_twitter-community-members).
# Get Community Tweets
Source: https://aisa.one/docs/api-reference/twitter/get_twitter-community-tweets
openapi/twitter-communities.json GET /twitter/community/tweets
Get posts published inside one specific X Community, cursor-paginated.
Get posts published inside one specific X Community, cursor-paginated. Use this to read what a known community is actually discussing.
Returns full tweet objects with engagement counts.
If you do not know which community to look at, search across all of them with [`get_twitter_community_tweets_all`](/docs/api-reference/twitter/get_twitter-community-get-tweets-from-all-community).
# Get List Followers
Source: https://aisa.one/docs/api-reference/twitter/get_twitter-list-followers
openapi/twitter-list.json GET /twitter/list/followers
List the accounts that subscribe to an X List, 20 per page, cursor-paginated.
List the accounts that subscribe to an X List, 20 per page, cursor-paginated. Use this to gauge how much attention a curated list attracts and who cares about that topic.
Returns full user objects under `followers`.
For the accounts included in the List (not its subscribers) use [`get_twitter_list_members`](/docs/api-reference/twitter/get_twitter-list-members).
# Get List Members
Source: https://aisa.one/docs/api-reference/twitter/get_twitter-list-members
openapi/twitter-list.json GET /twitter/list/members
List the accounts included in an X List, 20 per page, cursor-paginated.
List the accounts included in an X List, 20 per page, cursor-paginated. Use this to extract a ready-made, human-curated cohort — someone else has already done the filtering.
Returns full user objects under `members`.
To read what those accounts are posting as one feed, use [`get_twitter_list_tweets_timeline`](/docs/api-reference/twitter/get_twitter-list-tweets-timeline). For the List's subscribers use [`get_twitter_list_followers`](/docs/api-reference/twitter/get_twitter-list-followers).
# Get List Tweet Timeline
Source: https://aisa.one/docs/api-reference/twitter/get_twitter-list-tweets-timeline
openapi/twitter-list.json GET /twitter/list/tweets_timeline
Get the tweet timeline of an X List by listId, up to 20 per page, cursor-paginated.
Get the tweet timeline of an X List by `listId`, up to 20 per page, cursor-paginated. Use this to monitor a hand-curated set of accounts as a single feed — Lists are the cheapest way to track a fixed cohort (competitors, analysts, a beat) without polling each account.
Returns tweets with `has_next_page` and `next_cursor`. To see who is in the List use [`get_twitter_list_members`](/docs/api-reference/twitter/get_twitter-list-members).
# Get Space Detail
Source: https://aisa.one/docs/api-reference/twitter/get_twitter-spaces-detail
openapi/twitter-trend.json GET /twitter/spaces/detail
Get details of an X Space (live audio room) by its space ID — title, state, host, participants, and scheduling.
Get details of an X Space (live audio room) by its space ID — title, state, host, participants, and scheduling. Use this to check whether a Space is scheduled, live, or ended, and who is hosting, before deciding to reference or attend it.
Returns the object under `data`.
# Get Trends
Source: https://aisa.one/docs/api-reference/twitter/get_twitter-trends
openapi/twitter-trend.json GET /twitter/trends
Get the trending topics for a location, identified by its Yahoo WOEID (Where On Earth ID), with an optional count (default 30).
Get the trending topics for a location, identified by its Yahoo WOEID (Where On Earth ID), with an optional `count` (default 30). Use this for a real-time read on what a specific market is talking about right now — useful for timing content or spotting emerging stories.
Returns trend names and volumes under `trends`.
Once you pick a trend, search its posts with [`get_twitter_tweet_advanced_search`](/docs/api-reference/twitter/get_twitter-tweet-advanced-search).
# Advanced Search
Source: https://aisa.one/docs/api-reference/twitter/get_twitter-tweet-advanced-search
openapi/twitter-tweet-batch_02.json GET /twitter/tweet/advanced_search
Search X posts by keyword or query with X's advanced search operators, sorted by Latest (default) or Top.
Search X posts by keyword or query with X's advanced search operators, sorted by Latest (default) or Top. This is the primary entry point for X content research when you do not yet have tweet IDs or handles. Supports operators in the query string such as `from:`, `to:`, `since:`, `until:`, `min_faves:`, and `-filter:replies`. Cursor-paginated; returns tweets with `has_next_page` and `next_cursor`.
To search accounts rather than posts use [`get_twitter_user_search`](/docs/api-reference/twitter/get_twitter-user-search).
To read one account's own posts use [`get_twitter_user_tweet_timeline`](/docs/api-reference/twitter/get_twitter-user-tweet-timeline).
# Get Tweet Quotations
Source: https://aisa.one/docs/api-reference/twitter/get_twitter-tweet-quotes
openapi/twitter-tweet-batch_01.json GET /twitter/tweet/quotes
Get quote tweets of a given tweet — posts that embedded it with added commentary — cursor-paginated.
Get quote tweets of a given tweet — posts that embedded it with added commentary — cursor-paginated. Use this to see how a post is being reframed or argued about, which is often more revealing than plain replies.
Returns full tweet objects with engagement counts.
For direct replies use [`get_twitter_tweet_replies_v2`](/docs/api-reference/twitter/get_twitter-tweet-replies-v2); for accounts that amplified it without comment use [`get_twitter_tweet_retweeters`](/docs/api-reference/twitter/get_twitter-tweet-retweeters).
# Get Tweet Replies
Source: https://aisa.one/docs/api-reference/twitter/get_twitter-tweet-replies
openapi/twitter-tweet-batch_01.json GET /twitter/tweet/replies
Get the direct replies to a tweet, cursor-paginated.
Get the direct replies to a tweet, cursor-paginated. Use this to read the discussion under a post — sentiment, corrections, or follow-up questions.
Returns full tweet objects with engagement counts.
Prefer [`get_twitter_tweet_replies_v2`](/docs/api-reference/twitter/get_twitter-tweet-replies-v2) when you want to control ordering (Relevance, Latest, or Likes); this v1 endpoint returns the default order only. To follow a conversation upward to its root instead of downward, use [`get_twitter_tweet_thread_context`](/docs/api-reference/twitter/get_twitter-tweet-thread-context).
# Get Tweet Replies V2
Source: https://aisa.one/docs/api-reference/twitter/get_twitter-tweet-replies-v2
openapi/twitter-tweet-replies-v2.json GET /twitter/tweet/replies/v2
Get replies to a tweet with control over sort order — Relevance (default), Latest, or Likes — 20 per page, cursor-paginated.
Get replies to a tweet with control over sort order — Relevance (default), Latest, or Likes — 20 per page, cursor-paginated. Use this instead of [`get_twitter_tweet_replies`](/docs/api-reference/twitter/get_twitter-tweet-replies) whenever ordering matters: Likes surfaces the community's top responses, Latest gives a live view of an unfolding thread.
Returns full tweet objects with engagement counts.
# Get Tweet Retweeters
Source: https://aisa.one/docs/api-reference/twitter/get_twitter-tweet-retweeters
openapi/twitter-tweet-batch_01.json GET /twitter/tweet/retweeters
List the accounts that retweeted a given tweet, cursor-paginated.
List the accounts that retweeted a given tweet, cursor-paginated. Use this to map who amplified a message and how influential they are.
Returns user objects (handle, name, bio, follower count, verification) — not tweets.
For retweets that added commentary use [`get_twitter_tweet_quotes`](/docs/api-reference/twitter/get_twitter-tweet-quotes).
# Get Tweet Thread Context
Source: https://aisa.one/docs/api-reference/twitter/get_twitter-tweet-thread-context
openapi/twitter-tweet-batch_02.json GET /twitter/tweet/thread_context
Reconstruct the conversation around a tweet.
Reconstruct the conversation around a tweet. Accepts either a reply or an original tweet and returns the surrounding thread, cursor-paginated. Use this when a tweet lacks context on its own and you need the parent chain to interpret it correctly.
Returns tweets under `tweets` with `has_next_page` and `next_cursor`.
For only the replies below a post use [`get_twitter_tweet_replies_v2`](/docs/api-reference/twitter/get_twitter-tweet-replies-v2).
# Get Tweets by IDs
Source: https://aisa.one/docs/api-reference/twitter/get_twitter-tweets
openapi/twitter-tweet-batch_01.json GET /twitter/tweets
Fetch the full content of specific tweets when you already know their numeric tweet IDs (accepts multiple IDs in one call).
Fetch the full content of specific tweets when you already know their numeric tweet IDs (accepts multiple IDs in one call). Use this to expand IDs surfaced by search, timelines, or replies into complete objects.
Returns text, author, source client, language, creation time, and engagement counts (likes, retweets, replies, quotes, bookmarks, views).
If you do not have IDs yet, start with [`get_twitter_tweet_advanced_search`](/docs/api-reference/twitter/get_twitter-tweet-advanced-search).
# Get User Profile About
Source: https://aisa.one/docs/api-reference/twitter/get_twitter-user-about
openapi/twitter-user-batch_01.json GET /twitter/user_about
Get the extended 'About this account' panel for an X user by @handle.
Get the extended 'About this account' panel for an X user by @handle. Use this for provenance and trust checks — it surfaces signals the standard profile does not, such as the account's country, verification details, and username-change history.
Returns a single profile object under `data`.
For the standard profile (bio, follower counts, avatar), use [`get_twitter_user_info`](/docs/api-reference/twitter/get_twitter-user-info) instead.
# Batch Get User Info By UserIds
Source: https://aisa.one/docs/api-reference/twitter/get_twitter-user-batch-info-by-ids
openapi/twitter-user-batch_01.json GET /twitter/user/batch_info_by_ids
Resolve many X users at once from their numeric user IDs, passed as a comma-separated userIds string.
Resolve many X users at once from their numeric user IDs, passed as a comma-separated `userIds` string. Use this when a previous call (timeline, retweeters, followers) gave you IDs and you need to turn them into full profiles in one request instead of looping.
Returns an array of user objects under `users`.
Note this endpoint takes numeric IDs, not @handles — to look up by handle use [`get_twitter_user_info`](/docs/api-reference/twitter/get_twitter-user-info).
# Check Follow Relationship
Source: https://aisa.one/docs/api-reference/twitter/get_twitter-user-check-follow-relationship
openapi/twitter-user-batch_02.json GET /twitter/user/check_follow_relationship
Check whether one X user follows another, in both directions, by @handle.
Check whether one X user follows another, in both directions, by @handle. Use this for a single targeted lookup instead of paging through [`get_twitter_user_followers`](/docs/api-reference/twitter/get_twitter-user-followers) or [`get_twitter_user_followings`](/docs/api-reference/twitter/get_twitter-user-followings) — it answers 'does A follow B, and does B follow A' in one request.
Returns the relationship flags under `data`.
# Get User Followers
Source: https://aisa.one/docs/api-reference/twitter/get_twitter-user-followers
openapi/twitter-user-batch_01.json GET /twitter/user/followers
List the accounts that follow a given X user, identified by @handle, newest follower first.
List the accounts that follow a given X user, identified by @handle, newest follower first.
Returns up to 200 per page by default with `has_next_page` and `next_cursor`; each entry is a full user object (handle, name, bio, follower count, verification). Use this for audience analysis, mapping a competitor's follower base, or finding influential followers.
For the reverse direction (who this user follows) use [`get_twitter_user_followings`](/docs/api-reference/twitter/get_twitter-user-followings). For only the verified subset use [`get_twitter_user_verified_followers`](/docs/api-reference/twitter/get_twitter-user-verifiedfollowers) — note that one takes a numeric `user_id`, not a handle.
# Get User Followings
Source: https://aisa.one/docs/api-reference/twitter/get_twitter-user-followings
openapi/twitter-user-batch_02.json GET /twitter/user/followings
List the accounts a given X user follows, identified by @handle.
List the accounts a given X user follows, identified by @handle.
Returns 200 entries per page with `has_next_page` and `next_cursor`. Use this to infer a user's interests, information sources, or professional network — who someone follows is usually a stronger signal of intent than who follows them.
For the opposite direction use [`get_twitter_user_followers`](/docs/api-reference/twitter/get_twitter-user-followers). To test a single specific pair without paging through thousands of records, use [`get_twitter_user_check_follow_relationship`](/docs/api-reference/twitter/get_twitter-user-check-follow-relationship).
# Get User Info
Source: https://aisa.one/docs/api-reference/twitter/get_twitter-user-info
openapi/twitter-user-batch_01.json GET /twitter/user/info
Look up one X (Twitter) user's public profile by @handle (screen name).
Look up one X (Twitter) user's public profile by @handle (screen name). Use this when you need to know who an account is — identity, reach, or credibility — before deciding whether to trust or analyze their content.
Returns display name, bio, follower/following counts, verification status, account creation date, location, and profile images.
If you only have a numeric user ID, use [`get_twitter_user_batch_info_by_ids`](/docs/api-reference/twitter/get_twitter-user-batch-info-by-ids) instead. If you need extended profile metadata such as country or username-change history, use [`get_twitter_user_about`](/docs/api-reference/twitter/get_twitter-user-about). If you want their posts rather than their profile, use [`get_twitter_user_tweet_timeline`](/docs/api-reference/twitter/get_twitter-user-tweet-timeline).
# Get User Last Tweets
Source: https://aisa.one/docs/api-reference/twitter/get_twitter-user-last-tweets
openapi/twitter-user-batch_01.json GET /twitter/user/last_tweets
Get a user's most recent tweets, accepting either a @handle or a numeric user ID.
Get a user's most recent tweets, accepting either `userName` (@handle) or `userId` — useful when you have not resolved the handle to an ID yet. Optionally include replies. Cursor-paginated.
Returns tweets under `data` with `has_next_page` and `next_cursor`. Use [`get_twitter_user_tweet_timeline`](/docs/api-reference/twitter/get_twitter-user-tweet-timeline) instead when you already have the numeric ID and want the full profile-order timeline with parent-tweet expansion.
# Get User Mentions
Source: https://aisa.one/docs/api-reference/twitter/get_twitter-user-mentions
openapi/twitter-user-batch_02.json GET /twitter/user/mentions
Get tweets that mention a given @handle, 20 per page.
Get tweets that mention a given @handle, 20 per page. This is the only user-scoped X endpoint that supports a time window: pass `sinceTime` and/or `untilTime` as Unix timestamps in seconds to bound the range. Use this for monitoring — brand mentions, inbound replies, reputation tracking, or 'what happened to this account in the last 24 hours'.
Returns tweets with `has_next_page` and `next_cursor`.
For the account's own posts rather than mentions of it, use [`get_twitter_user_tweet_timeline`](/docs/api-reference/twitter/get_twitter-user-tweet-timeline).
# Search User by Keyword
Source: https://aisa.one/docs/api-reference/twitter/get_twitter-user-search
openapi/twitter-user-batch_02.json GET /twitter/user/search
Search X user accounts by keyword and get back matching profiles.
Search X user accounts by keyword and get back matching profiles. Use this when you know roughly who you are looking for — a company name, a topic, a partial handle — but not the exact @handle. Cursor-paginated; returns full user objects under `users`.
This searches accounts, not posts; to search tweet content use [`get_twitter_tweet_advanced_search`](/docs/api-reference/twitter/get_twitter-tweet-advanced-search).
# Get User Tweet Timeline
Source: https://aisa.one/docs/api-reference/twitter/get_twitter-user-tweet-timeline
openapi/twitter-user-batch_01.json GET /twitter/user/tweet_timeline
Retrieve a user's own tweets by numeric userId, newest first, matching the order shown on their profile in the X app.
Retrieve a user's own tweets by numeric `userId`, newest first, matching the order shown on their profile in the X app. Up to 20 tweets per page; pass the returned cursor for more. Optionally include replies and the parent tweet of each reply. Use this to read what an account publishes over time. Time-range filtering is NOT supported here — if you need tweets within a specific time window, use [`get_twitter_user_mentions`](/docs/api-reference/twitter/get_twitter-user-mentions) (which accepts `sinceTime`/`untilTime`) or [`get_twitter_tweet_advanced_search`](/docs/api-reference/twitter/get_twitter-tweet-advanced-search) with date operators in the query.
If you only have a @handle, [`get_twitter_user_last_tweets`](/docs/api-reference/twitter/get_twitter-user-last-tweets) accepts either handle or ID.
# Get User Verified Followers
Source: https://aisa.one/docs/api-reference/twitter/get_twitter-user-verifiedfollowers
openapi/twitter-user-batch_02.json GET /twitter/user/verifiedFollowers
List only the verified accounts following a given X user, in reverse chronological order.
List only the verified accounts following a given X user, in reverse chronological order. Use this to gauge the quality rather than the size of an audience — verified followers are a better credibility signal than raw follower count. Cursor-paginated. Takes a numeric `user_id`, not a @handle; resolve the handle first with [`get_twitter_user_info`](/docs/api-reference/twitter/get_twitter-user-info).
For the complete follower list use [`get_twitter_user_followers`](/docs/api-reference/twitter/get_twitter-user-followers).
# Link an X Account
Source: https://aisa.one/docs/api-reference/twitter/post_twitter-auth-twitter
openapi/twitter-actions.json POST /twitter/auth_twitter
Start the OAuth flow that links an X/Twitter account to your AIsa API key. Call once per source user before using any Twitter write endpoint (follow, like, post, DM).
`POST /apis/v1/twitter/auth_twitter` is the first step for any X/Twitter **write** action routed through AIsa. It returns a short-lived X OAuth authorization URL — the source user opens it in a browser, approves the requested scopes, and X redirects back to AIsa's fixed callback. AIsa stores the resulting session against your API key, and every subsequent write call (e.g., [`POST /twitter/follow_twitter`](/docs/api-reference/twitter/post_twitter-follow-twitter)) uses that session automatically.
## When to call it
* **Once per source user**, the first time you link their X account.
* **Again** if the stored session is revoked, expired, or you need a different scope set.
You do not call it before every write request. The OAuth session persists against your AIsa API key.
## Flow
Send `POST /apis/v1/twitter/auth_twitter` with your AIsa API key. The key must be sent **both** as the `Authorization: Bearer` header **and** as a required `aisa_api_key` field in the JSON body — the OAuth session is bound to that key. Optionally include a `scopes` array in the body to request a narrower set than the default.
```bash theme={null}
curl -X POST https://api.aisa.one/apis/v1/twitter/auth_twitter \
-H "Authorization: Bearer sk-aisa-..." \
-H "Content-Type: application/json" \
-d '{"aisa_api_key": "sk-aisa-...", "scopes": ["follows.write", "tweet.read", "users.read"]}'
```
Use the exact path `/apis/v1/twitter/auth_twitter` — lowercase, **underscores** (not `auth-twitter`), version **v1**, method **POST**. A hyphenated path, a `v2` path, or a `GET` request returns `404`/`405`. Omitting the `aisa_api_key` body field returns `422`.
The response returns an `auth_url` and a `state` token. Open `auth_url` in the source user's browser. X shows its standard "Authorize AIsa to access your account" screen.
After the user clicks Authorize, X redirects to AIsa's fixed callback (`https://api.aisa.one/apis/v1/twitter/oauth_callback`). AIsa validates the `state` token, exchanges the authorization code for tokens, and stores the session against your API key.
From this point on, any call to a Twitter write endpoint using your AIsa API key acts on behalf of the linked source user. You never pass OAuth tokens in the body of those calls.
## Default scopes
If you omit the `scopes` field, AIsa requests the full set needed for every Twitter write endpoint we expose:
* `follows.write` — [follow](/docs/api-reference/twitter/post_twitter-follow-twitter) / unfollow
* `tweet.read` — read tweets (required by most write actions)
* `users.read` — resolve users, read profile info
* `tweet.write` — post, reply, quote
* `like.write` — like / unlike
* `dm.read` — read DM threads
* `dm.write` — send DMs
Pass a narrower array (e.g., `["follows.write", "tweet.read", "users.read"]`) if you only need a subset. Write calls that require a missing scope return `403`.
## Expiry
The `auth_url` returned by this endpoint is **short-lived** (typically 10 minutes). If the user doesn't complete the flow before `expires_at`, call `POST /apis/v1/twitter/auth_twitter` again to generate a fresh URL.
The stored OAuth **session** itself lives longer (subject to X's token rotation rules) and is refreshed automatically as long as the user doesn't revoke access from X's app settings.
## Related
First write endpoint that uses the session stored by this flow.
Agent skill that wraps the full read + write surface.
AIsa API key lifecycle and storage best practices.
# Follow a User
Source: https://aisa.one/docs/api-reference/twitter/post_twitter-follow-twitter
openapi/twitter-actions.json POST /twitter/follow_twitter
Make the authenticated source user follow a target user on X/Twitter. Proxies the official X v2 follow-user endpoint through the AIsa gateway.
Follow a user on X/Twitter on behalf of the authenticated source user. This is a direct proxy for the official [X v2 `POST /2/users/{id}/following` endpoint](https://docs.x.com/x-api/users/follow-user), routed through the AIsa gateway at `https://api.aisa.one/apis/v1/twitter/follow_twitter`.
## Prerequisites
* An **AIsa API key** (Bearer token for every request).
* A one-time **OAuth authorization** for the source user account. Link your X account by calling [`POST /apis/v1/twitter/auth_twitter`](/docs/api-reference/twitter/post_twitter-auth-twitter) — that endpoint kicks off the OAuth flow and stores the resulting session against your AIsa key, so you do not pass OAuth tokens in the request body here.
* The X session must hold the following scopes: `follows.write`, `tweet.read`, `users.read`.
Looking to follow by `@username` instead of numeric ID? Resolve the user first with [`GET /twitter/user/info`](/docs/api-reference/twitter/get_twitter-user-info), then pass the returned `id` as `target_user_id`.
## Response fields
| Field | Type | Meaning |
| --------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `data.following` | boolean | `true` once the source user follows the target. For public accounts this is the success signal. |
| `data.pending_follow` | boolean | `true` when the target is a **protected** account — the follow request has been sent and is awaiting the target user's approval. |
For the full set of error responses and retry guidance, see [Error Codes](/docs/api-reference/errors). Write endpoints count toward your standard key RPM/TPM — see [Rate Limits](/docs/api-reference/rate-limits).
# Like a Tweet
Source: https://aisa.one/docs/api-reference/twitter/post_twitter-like-twitter
openapi/twitter-actions.json POST /twitter/like_twitter
Like a tweet on behalf of the authenticated source user. Proxies the official X v2 like-post endpoint through the AIsa gateway.
Like a tweet on behalf of the authenticated source user. Proxies the official [X v2 `POST /2/users/{id}/likes` endpoint](https://docs.x.com/x-api/users/like-post), routed through the AIsa gateway at `https://api.aisa.one/apis/v1/twitter/like_twitter`.
## Prerequisites
* An **AIsa API key** (Bearer token for every request).
* A one-time **OAuth authorization** for the source user account. Link your X account by calling [`POST /apis/v1/twitter/auth_twitter`](/docs/api-reference/twitter/post_twitter-auth-twitter) — AIsa stores the session against your API key and uses it automatically on every write call.
* The X session must hold `like.write`, `tweet.read`, `users.read`.
## Response fields
| Field | Type | Meaning |
| ------------ | ------- | ------------------------------------------------------- |
| `data.liked` | boolean | `true` once the source user has liked the target tweet. |
## Idempotency
Liking a tweet the source user has already liked is a no-op. The endpoint still returns `200` with `{ "data": { "liked": true } }`. Safe to retry.
## Common 4xx causes
* `400 invalid-request` — missing or non-numeric `tweet_id`
* `403 client-forbidden` — OAuth session missing the `like.write` scope. Re-link via `auth_twitter`.
* `404 resource-not-found` — tweet doesn't exist or isn't visible to the source user (e.g., a protected account the source user doesn't follow).
See [Error Codes](/docs/api-reference/errors) and [Rate Limits](/docs/api-reference/rate-limits) for more.
## Related
Start the OAuth flow this endpoint requires.
Create tweets you (or your agents) can like.
Another write endpoint using the same OAuth session.
# Post a Tweet
Source: https://aisa.one/docs/api-reference/twitter/post_twitter-post-twitter
openapi/twitter-actions.json POST /twitter/post_twitter
Publish a tweet — plain text, reply, quote, poll, or with media — on behalf of the authenticated source user. Also supports editing an existing tweet within X's edit window.
Publish a tweet on behalf of the authenticated source user. Proxies the official [X v2 `POST /2/tweets` endpoint](https://docs.x.com/x-api/posts/create-post), routed through the AIsa gateway at `https://api.aisa.one/apis/v1/twitter/post_twitter`.
One endpoint covers every variant:
`{ "text": "Hello, World!" }`
Set `reply.in_reply_to_tweet_id`.
Set `quote_tweet_id`.
Set `poll.options` + `poll.duration_minutes`.
Set `media.media_ids` (1–4 IDs).
Set `edit_options.previous_post_id` (within X's edit window).
## Prerequisites
* An **AIsa API key** (Bearer token for every request).
* A one-time **OAuth authorization** for the source user account. Link your X account by calling [`POST /apis/v1/twitter/auth_twitter`](/docs/api-reference/twitter/post_twitter-auth-twitter) — AIsa stores the session against your API key and uses it automatically on every write call.
* The X session must hold `tweet.read`, `tweet.write`, `users.read`.
## Mutually exclusive fields
At most **one** of these may appear in a single request:
* `media`
* `poll`
* `quote_tweet_id`
* `card_uri`
X will reject the request (`400 invalid-request`) if more than one is set.
## Response
On success the endpoint returns `201 Created`:
```json theme={null}
{
"data": {
"id": "1346889436626259968",
"text": "Hello, World!"
}
}
```
The returned `text` reflects what X actually stored (e.g., shortened URLs). Use `data.id` to reference this tweet in subsequent calls (reply, quote, like, edit, delete).
## Editing tweets
Pass `edit_options.previous_post_id` to edit an existing tweet instead of creating a new one. Edits are subject to X's edit window and edit count limits; the endpoint returns `409 conflict` if the window has passed or the edit quota is exhausted.
## Reply settings
Restrict who can reply with `reply_settings`:
| Value | Who can reply |
| ---------------- | --------------------------------------- |
| `following` | People you follow |
| `mentionedUsers` | Users explicitly mentioned in the tweet |
| `subscribers` | Your X Premium subscribers |
| `verified` | Verified accounts |
Omit the field for the default (everyone).
## Common 4xx causes
* `400 invalid-request` — set two mutually-exclusive fields, text too long, invalid poll duration, etc.
* `403 client-forbidden` — OAuth session missing the `tweet.write` scope. Re-link via `auth_twitter`.
* `404 resource-not-found` — referenced `in_reply_to_tweet_id`, `quote_tweet_id`, or `previous_post_id` doesn't exist or isn't visible to the source user.
* `409 conflict` — duplicate content, or edit outside the allowed window.
See the full list on [Error Codes](/docs/api-reference/errors) and [Rate Limits](/docs/api-reference/rate-limits) for tier caps.
## Related
Start the OAuth flow this endpoint requires.
Another write endpoint using the same OAuth session.
Agent skill that wraps the full Twitter surface.
# Unfollow a User
Source: https://aisa.one/docs/api-reference/twitter/post_twitter-unfollow-twitter
openapi/twitter-actions.json POST /twitter/unfollow_twitter
Make the authenticated source user unfollow a target user on X/Twitter. Proxies the official X v2 unfollow-user endpoint through the AIsa gateway.
Unfollow a user on X/Twitter on behalf of the authenticated source user. This is a proxy for the official [X v2 `DELETE /2/users/{source_user_id}/following/{target_user_id}` endpoint](https://docs.x.com/x-api/users/unfollow-user), exposed through the AIsa gateway at `https://api.aisa.one/apis/v1/twitter/unfollow_twitter`. AIsa uses `POST` for consistency with the other Twitter write endpoints.
## Prerequisites
* An **AIsa API key** (Bearer token for every request).
* A one-time **OAuth authorization** for the source user account. Link your X account by calling [`POST /apis/v1/twitter/auth_twitter`](/docs/api-reference/twitter/post_twitter-auth-twitter) — that endpoint kicks off the OAuth flow and stores the resulting session against your AIsa key, so you do not pass OAuth tokens in the request body here.
* The X session must hold the following scopes: `follows.write`, `tweet.read`, `users.read`.
Looking to unfollow by `@username` instead of numeric ID? Resolve the user first with [`GET /twitter/user/info`](/docs/api-reference/twitter/get_twitter-user-info), then pass the returned `id` as `target_user_id`.
## Response fields
| Field | Type | Meaning |
| ---------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `data.following` | boolean | `false` once the source user no longer follows the target. Returned as `false` even if the source user wasn't following the target to begin with — unfollow is idempotent. |
## Idempotency
Calling `unfollow_twitter` against a user you're not following is a no-op. The endpoint still returns `200` with `{ "data": { "following": false } }`. This matches X's own behavior and means you can safely retry.
For the full set of error responses and retry guidance, see [Error Codes](/docs/api-reference/errors). Write endpoints count toward your standard key RPM/TPM — see [Rate Limits](/docs/api-reference/rate-limits).
## Related
Start the OAuth flow that enables this endpoint.
The inverse operation.
Verify the relationship before calling.
# Unlike a Tweet
Source: https://aisa.one/docs/api-reference/twitter/post_twitter-unlike-twitter
openapi/twitter-actions.json POST /twitter/unlike_twitter
Remove the source user's like from a tweet. Proxies the official X v2 unlike-post endpoint through the AIsa gateway.
Remove the source user's like from a tweet. Proxies the official [X v2 `DELETE /2/users/{id}/likes/{tweet_id}` endpoint](https://docs.x.com/x-api/users/unlike-post), exposed through the AIsa gateway at `https://api.aisa.one/apis/v1/twitter/unlike_twitter`. AIsa uses `POST` for consistency with the other Twitter write endpoints.
## Prerequisites
* An **AIsa API key** (Bearer token for every request).
* A one-time **OAuth authorization** for the source user account. Link your X account by calling [`POST /apis/v1/twitter/auth_twitter`](/docs/api-reference/twitter/post_twitter-auth-twitter) — AIsa stores the session against your API key and uses it automatically on every write call.
* The X session must hold `like.write`, `tweet.read`, `users.read`.
## Response fields
| Field | Type | Meaning |
| ------------ | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| `data.liked` | boolean | `false` once the like has been removed. Returned as `false` even if the source user hadn't liked the tweet to begin with — unlike is idempotent. |
## Idempotency
Unliking a tweet the source user has not liked is a no-op. The endpoint still returns `200` with `{ "data": { "liked": false } }`. Safe to retry.
## Common 4xx causes
* `400 invalid-request` — missing or non-numeric `tweet_id`
* `403 client-forbidden` — OAuth session missing the `like.write` scope. Re-link via `auth_twitter`.
* `404 resource-not-found` — tweet doesn't exist or isn't visible to the source user.
See [Error Codes](/docs/api-reference/errors) and [Rate Limits](/docs/api-reference/rate-limits) for more.
## Related
Start the OAuth flow this endpoint requires.
The inverse operation.
Another write endpoint using the same OAuth session.
# Email Lookup
Source: https://aisa.one/docs/api-reference/waveinflu/post_waveinflu-email-lookup
openapi/waveinflu.json POST /waveinflu/email-lookup
Contact emails for one TikTok, Instagram or YouTube creator, from a profile URL.
Looks up contact emails for one TikTok, Instagram or YouTube creator from a profile URL. Returns `platform` parsed from the URL, `username`, `profileLink`, `platformUserId`, `region`, a primary `email`, an `emails` array of every address found, and a `contacts` array of external links — each shaped `{url, type}`, covering personal sites and WhatsApp links — plus `quota.cost` in credits and `quota.remainingQuota`.
Measured at **533 bytes and about 2 seconds** for one Instagram creator.
`email` is null and `emails` empty when the creator publishes no address. That is a normal result, not an error.
Handles one creator per call. To assemble a creator list first, use [`post_waveinflu_similar_creators`](/docs/api-reference/waveinflu/post_waveinflu-similar) — it already returns an `email` for most matches, so call this endpoint for the ones that come back null, and for Instagram creators, which the similar-creators endpoint does not cover.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/waveinflu/email-lookup" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://www.instagram.com/onkimia/"}'
```
# Similar Creators
Source: https://aisa.one/docs/api-reference/waveinflu/post_waveinflu-similar
openapi/waveinflu.json POST /waveinflu/similar
Match YouTube or TikTok creators from a seed profile, a content direction, or both.
Finds creators similar to a seed profile, a natural-language content direction, or both, on YouTube or TikTok. `platform` is required; supply `seedProfileUrl`, `contentDirection` (max 800 characters) or both, with `limit` (1–100, default 25) and optional `filters` for regions, languages, follower and average-view ranges.
The response echoes the resolved `mode` — `homepage` for a seed alone, `direction` for a direction alone, `homepage_direction` for both — and sets `sourceUserId` only when a seed resolved.
Each match carries `username`, `platformHandle`, `description`, `email`, `profileUrl`, `avatar`, `similarityScore` (sorted descending), `followerCount`, `averagePlayCount`, `lastPublishedTime`, `region` and `language`.
**Field shape differs by platform.** YouTube matches add `channelId` and `channelTitle`; TikTok matches add `userId`, `uniqueId`, `nickname` and `averageLikeCount`, none of which YouTube returns.
Measured at **4.2 KB for 5 YouTube matches** (about 8 seconds) and **2.5 KB for 3 TikTok matches**.
Most matches already include an `email`. Use [`post_waveinflu_email_lookup`](/docs/api-reference/waveinflu/post_waveinflu-email-lookup) for the ones that come back null, and for Instagram creators, which this endpoint does not match.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/waveinflu/similar" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"platform": "youtube",
"limit": 10,
"seedProfileUrl": "https://www.youtube.com/@mkbhd"
}'
```
# List of ChatGPT models for LLM Responses
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-ai-optimization-chat-gpt-llm-responses-models
openapi/dataforseo.json GET /dataforseo/ai_optimization/chat_gpt/llm_responses/models
The ChatGPT models available, each with model_name, reasoning, web_search_supported and task_post_supported.
The ChatGPT models available, each with `model_name`, `reasoning`, `web_search_supported` and `task_post_supported`. Measured at 5.2 KB, the largest of the four model lists. Free: upstream cost is 0. **Read it before calling** - an unlisted `model_name` is rejected with `status_code` 40501 inside an HTTP 200, and `task_post_supported` tells you whether the queued variant will work at all.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/chat_gpt/llm_responses/models" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get LLM Responses Chat GPT Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-ai-optimization-chat-gpt-llm-responses-task-get-id
openapi/dataforseo.json GET /dataforseo/ai_optimization/chat_gpt/llm_responses/task_get/{id}
Retrieves a queued ChatGPT reply by id.
Retrieves a queued ChatGPT reply by `id`. Same shape as the live endpoint, including `money_spent`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/chat_gpt/llm_responses/task_get/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get LLM Responses ChatGPT Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-ai-optimization-chat-gpt-llm-responses-tasks-ready
openapi/dataforseo.json GET /dataforseo/ai_optimization/chat_gpt/llm_responses/tasks_ready
Lists finished ChatGPT response tasks awaiting collection.
Lists finished ChatGPT response tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. A caller that holds its own task `id` can fetch directly and skip this.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/chat_gpt/llm_responses/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get ChatGPT LLM Scraper Advanced Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-ai-optimization-chat-gpt-llm-scraper-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/ai_optimization/chat_gpt/llm_scraper/task_get/advanced/{id}
Retrieves a queued ChatGPT scrape by id.
Retrieves a queued ChatGPT scrape by `id`. Same parsed shape as the live endpoint. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Free - the charge was on the submit.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/chat_gpt/llm_scraper/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Claude Models for LLM Responses
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-ai-optimization-claude-llm-responses-models
openapi/dataforseo.json GET /dataforseo/ai_optimization/claude/llm_responses/models
The Claude models available, each with model_name, reasoning, web_search_supported and task_post_supported.
The Claude models available, each with `model_name`, `reasoning`, `web_search_supported` and `task_post_supported`. Measured at 1.8 KB. Free: upstream cost is 0. **Read it before calling** - `model_name` is matched exactly and an unlisted name is rejected with 40501 inside an HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/claude/llm_responses/models" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get LLM Responses Claude Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-ai-optimization-claude-llm-responses-task-get-id
openapi/dataforseo.json GET /dataforseo/ai_optimization/claude/llm_responses/task_get/{id}
Retrieves a queued Claude reply by id.
Retrieves a queued Claude reply by `id`. Same shape as the live endpoint. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/claude/llm_responses/task_get/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get LLM Responses Claude Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-ai-optimization-claude-llm-responses-tasks-ready
openapi/dataforseo.json GET /dataforseo/ai_optimization/claude/llm_responses/tasks_ready
Lists finished Claude response tasks awaiting collection.
Lists finished Claude response tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. A caller that holds its own task `id` can fetch directly and skip this.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/claude/llm_responses/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Gemini models for LLM Responses
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-ai-optimization-gemini-llm-responses-models
openapi/dataforseo.json GET /dataforseo/ai_optimization/gemini/llm_responses/models
The Gemini models available, each with model_name, reasoning, web_search_supported and task_post_supported.
The Gemini models available, each with `model_name`, `reasoning`, `web_search_supported` and `task_post_supported`. Measured at 1.5 KB. Free: upstream cost is 0. Read it before calling; an unlisted `model_name` is rejected with 40501 inside an HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/gemini/llm_responses/models" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get LLM Responses Gemini Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-ai-optimization-gemini-llm-responses-task-get-id
openapi/dataforseo.json GET /dataforseo/ai_optimization/gemini/llm_responses/task_get/{id}
Retrieves a queued Gemini reply by id.
Retrieves a queued Gemini reply by `id`. Same shape as the live endpoint. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/gemini/llm_responses/task_get/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get LLM Responses Gemini Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-ai-optimization-gemini-llm-responses-tasks-ready
openapi/dataforseo.json GET /dataforseo/ai_optimization/gemini/llm_responses/tasks_ready
Lists finished Gemini response tasks awaiting collection.
Lists finished Gemini response tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. A caller that holds its own task `id` can fetch directly and skip this.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/gemini/llm_responses/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Gemini LLM Scraper Languages List
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-ai-optimization-gemini-llm-scraper-languages
openapi/dataforseo.json GET /dataforseo/ai_optimization/gemini/llm_scraper/languages
The languages the Gemini scraper accepts, as language_name and language_code.
The languages the Gemini scraper accepts, as `language_name` and `language_code`. Measured at 5.1 KB. Free: upstream cost is 0. Free: upstream cost is 0, and it is reference data - fetch once and keep what you need rather than calling it per request. ⚠️ Catalogues in this provider are not shared between families: the same endpoint name under a different product returns a different list, and one of them measured 46 MB. Check the list belonging to the endpoint you are actually calling.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/gemini/llm_scraper/languages" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Gemini LLM Scraper Locations List
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-ai-optimization-gemini-llm-scraper-locations
openapi/dataforseo.json GET /dataforseo/ai_optimization/gemini/llm_scraper/locations
The locations the Gemini scraper accepts, as location_code, location_name, location_code_parent, country_iso_code and location_type.
The locations the Gemini scraper accepts, as `location_code`, `location_name`, `location_code_parent`, `country_iso_code` and `location_type`. 🔴 **Measured at 42 MB** - every city and region worldwide, and the third Google-side location catalogue in this provider to measure over 40 MB. Do not call it from an agent: `location_code` 2840 is the United States, and other codes belong in DataForSEO's documentation. Free upstream, so nothing warns you.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/gemini/llm_scraper/locations" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Gemini LLM Scraper Advanced
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-ai-optimization-gemini-llm-scraper-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/ai_optimization/gemini/llm_scraper/task_get/advanced/{id}
Retrieves a queued Gemini scrape by id, parsed.
Retrieves a queued Gemini scrape by `id`, parsed. Same shape as `post_dataforseo_ai_gemini_llm_scraper_live`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/gemini/llm_scraper/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Gemini LLM Scraper HTML
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-ai-optimization-gemini-llm-scraper-task-get-html-id
openapi/dataforseo.json GET /dataforseo/ai_optimization/gemini/llm_scraper/task_get/html/{id}
Retrieves a queued Gemini scrape by id as raw HTML.
Retrieves a queued Gemini scrape by `id` as raw HTML. ⚠️ Larger than the parsed twin `get_dataforseo_ai_gemini_llm_scraper_fetch`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/gemini/llm_scraper/task_get/html/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Gemini LLM Scraper Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-ai-optimization-gemini-llm-scraper-tasks-ready
openapi/dataforseo.json GET /dataforseo/ai_optimization/gemini/llm_scraper/tasks_ready
Lists finished Gemini scrape tasks awaiting collection.
Lists finished Gemini scrape tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. A caller that holds its own task `id` can fetch directly and skip this.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/gemini/llm_scraper/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Filters for AI Optimization LLM Mentions API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-ai-optimization-llm-mentions-available-filters
openapi/dataforseo.json GET /dataforseo/ai_optimization/llm_mentions/available_filters
Filters for AI Optimization LLM Mentions API
The filterable fields for each mentions endpoint, keyed by endpoint: `search`, `search_mentions`, `target_metrics`, `multi_target_metrics`, `top_mentioned_domains`, `top_mentioned_pages`, `top_mentioned_brands`, `top_mentioned_brand_categories` and the `_lite` variants. Measured at 4.9 KB. Free: upstream cost is 0. Read it before building a `filters` argument - the mentions endpoints cost \$0.101 each, so a rejected call is an expensive way to learn a field name.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/llm_mentions/available_filters" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Locations and Languages for AI Optimization LLM Mentions API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-ai-optimization-llm-mentions-locations-and-languages
openapi/dataforseo.json GET /dataforseo/ai_optimization/llm_mentions/locations_and_languages
List of Locations and Languages for AI Optimization LLM Mentions API
The locations and languages the mentions endpoints accept, as `location_code`, `location_name` and `available_languages` - languages are nested per location rather than listed separately. Measured at 58.6 KB. Free: upstream cost is 0. Reference data, so fetch once and reuse.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/llm_mentions/locations_and_languages" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Perplexity models for LLM Responses
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-ai-optimization-perplexity-llm-responses-models
openapi/dataforseo.json GET /dataforseo/ai_optimization/perplexity/llm_responses/models
List of Perplexity models for LLM Responses
The Perplexity models available - `sonar`, `sonar-pro`, `sonar-reasoning-pro` - each with `model_name`, `reasoning`, `web_search_supported` and `task_post_supported`. Measured at 745 bytes, the smallest model list here. Free: upstream cost is 0. Note there is no queued variant for Perplexity; the live endpoint is the only one.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/perplexity/llm_responses/models" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Apple App Info Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-app-data-apple-app-info-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/app_data/apple/app_info/task_get/advanced/{id}
Get Apple App Info Results by id
One App Store app's listing, from a task queued by `post_dataforseo_app_apple_app_info_submit`: description, developer, rating, size, version and screenshots. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. For user opinion use `get_dataforseo_app_apple_app_reviews_fetch`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/app_data/apple/app_info/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Apple App List Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-app-data-apple-app-list-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/app_data/apple/app_list/task_get/advanced/{id}
One App Store chart, from a task queued by post_dataforseo_app_apple_app_list_submit: ranked apps with position, title, rating and price.
One App Store chart, from a task queued by `post_dataforseo_app_apple_app_list_submit`: ranked apps with position, title, rating and price. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/app_data/apple/app_list/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of App Store Listings Categories for App Data API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-app-data-apple-app-listings-categories
openapi/dataforseo.json GET /dataforseo/app_data/apple/app_listings/categories
The categories post_dataforseo_app_apple_app_listings_search_live will accept, as category and count - 55 rows.
The categories `post_dataforseo_app_apple_app_listings_search_live` will accept, as `category` and `count` - 55 rows. Measured at 2.6 KB. Free: upstream cost is 0. Note the Apple and Google category vocabularies differ in both names and count; `get_dataforseo_app_google_app_listings_categories` is the other one.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/app_data/apple/app_listings/categories" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Apple App Reviews Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-app-data-apple-app-reviews-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/app_data/apple/app_reviews/task_get/advanced/{id}
User reviews of one App Store app, from a task queued by post_dataforseo_app_apple_app_reviews_submit.
User reviews of one App Store app, from a task queued by `post_dataforseo_app_apple_app_reviews_submit`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Size scales with the `depth` set at submit and cannot be narrowed at fetch time.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/app_data/apple/app_reviews/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Apple App Searches Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-app-data-apple-app-searches-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/app_data/apple/app_searches/task_get/advanced/{id}
Get Apple App Searches Results by id
The parsed result of an App Store search queued by `post_dataforseo_app_apple_app_searches_submit`: ranked apps with `app_id`, `title`, `rating`, `reviews_count`, `is_free` and `price`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Feed an `app_id` from here into `post_dataforseo_app_apple_app_info_submit`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/app_data/apple/app_searches/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Apple App Categories for App Data API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-app-data-apple-categories
openapi/dataforseo.json GET /dataforseo/app_data/apple/categories
The App Store category tree used by the task endpoints, under a categories key.
The App Store category tree used by the task endpoints, under a `categories` key. Measured at 1.6 KB. Free: upstream cost is 0. This is a different list from `get_dataforseo_app_apple_app_listings_categories`, which serves the live listings search and carries counts - check which endpoint you are feeding before picking one.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/app_data/apple/categories" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Apple Languages for App Data API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-app-data-apple-languages
openapi/dataforseo.json GET /dataforseo/app_data/apple/languages
The 39 languages the Apple endpoints accept, as language_name and language_code.
The 39 languages the Apple endpoints accept, as `language_name` and `language_code`. Measured at 2.4 KB. Free: upstream cost is 0. The Google half accepts 127 - see `get_dataforseo_app_google_languages` - so a code valid there may not be valid here. Free: upstream cost is 0, and it is reference data - fetch once and keep what you need rather than calling it per request. ⚠️ Catalogues in this provider are not shared between families: the same endpoint name under a different product returns a different list, and one of them measured 46 MB. Check the list belonging to the endpoint you are actually calling.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/app_data/apple/languages" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Apple Locations for App Data API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-app-data-apple-locations
openapi/dataforseo.json GET /dataforseo/app_data/apple/locations
The 105 locations the Apple endpoints accept, as location_code, location_name, location_name_parent and country_iso_code.
The 105 locations the Apple endpoints accept, as `location_code`, `location_name`, `location_name_parent` and `country_iso_code`. Measured at 13.8 KB - small, because Apple's list is countries only. Free: upstream cost is 0. ⚠️ Its Google counterpart is not small: `get_dataforseo_app_google_locations` measured 46 MB.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/app_data/apple/locations" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google App Info Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-app-data-google-app-info-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/app_data/google/app_info/task_get/advanced/{id}
Get Google App Info Results by id
One Google Play app's store listing, from a task queued by `post_dataforseo_app_google_app_info_submit`: description, developer, rating, install counts, screenshots and version history. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. For user opinion rather than the listing use `get_dataforseo_app_google_app_reviews_fetch`. 🔴 The `_fetch_html` twin returns the raw store page instead: measured at 1.3 MB against 21 KB for the parsed version of the same task, a 63x difference.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/app_data/google/app_info/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google App Info HTML Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-app-data-google-app-info-task-get-html-id
openapi/dataforseo.json GET /dataforseo/app_data/google/app_info/task_get/html/{id}
The raw HTML of one Google Play listing.
The raw HTML of one Google Play listing. 🔴 On the order of the 1.3 MB measured for the search HTML twin, against tens of kilobytes parsed. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The parsed version is `get_dataforseo_app_google_app_info_fetch`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/app_data/google/app_info/task_get/html/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google App List Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-app-data-google-app-list-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/app_data/google/app_list/task_get/advanced/{id}
One Google Play chart, from a task queued by post_dataforseo_app_google_app_list_submit: ranked apps with position, title, rating and price.
One Google Play chart, from a task queued by `post_dataforseo_app_google_app_list_submit`: ranked apps with position, title, rating and price. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. 🔴 The `_fetch_html` twin returns the raw store page instead: measured at 1.3 MB against 21 KB for the parsed version of the same task, a 63x difference.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/app_data/google/app_list/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google App List HTML Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-app-data-google-app-list-task-get-html-id
openapi/dataforseo.json GET /dataforseo/app_data/google/app_list/task_get/html/{id}
The raw HTML of a Google Play chart.
The raw HTML of a Google Play chart. 🔴 On the order of the 1.3 MB measured for the search HTML twin. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The parsed version is `get_dataforseo_app_google_app_list_fetch`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/app_data/google/app_list/task_get/html/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Google App Listings Categories for App Data API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-app-data-google-app-listings-categories
openapi/dataforseo.json GET /dataforseo/app_data/google/app_listings/categories
List of Google App Listings Categories for App Data API
The categories `post_dataforseo_app_google_app_listings_search_live` will accept, as `category` and `count` - 49 rows, with the count showing how many listings sit in each. Measured at 2.4 KB. Free: upstream cost is 0. Read it before searching; the counts also tell you which categories are worth searching at all.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/app_data/google/app_listings/categories" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google App Reviews Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-app-data-google-app-reviews-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/app_data/google/app_reviews/task_get/advanced/{id}
Get Google App Reviews Results by id
User reviews of one Google Play app, from a task queued by `post_dataforseo_app_google_app_reviews_submit`: rating, text, author, date and helpful counts per review. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Size scales with the `depth` set at submit, so cap it there - it cannot be narrowed at fetch time. For the listing rather than the reviews use `get_dataforseo_app_google_app_info_fetch`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/app_data/google/app_reviews/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google App Searches Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-app-data-google-app-searches-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/app_data/google/app_searches/task_get/advanced/{id}
The parsed result of a Google Play search queued by post_dataforseo_app_google_app_searches_submit.
The parsed result of a Google Play search queued by `post_dataforseo_app_google_app_searches_submit`. Returns `keyword`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `se_results_count`, `items_count` and `items`, each item carrying `rank_group`, `rank_absolute`, `position`, `app_id`, `title`, `url`, `icon`, `reviews_count`, `rating`, `is_free` and `price`. Measured at 21 KB for ten results. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Feed an `app_id` from here into `post_dataforseo_app_google_app_info_submit`. 🔴 The `_fetch_html` twin returns the raw store page instead: measured at 1.3 MB against 21 KB for the parsed version of the same task, a 63x difference.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/app_data/google/app_searches/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google App Searches HTML Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-app-data-google-app-searches-task-get-html-id
openapi/dataforseo.json GET /dataforseo/app_data/google/app_searches/task_get/html/{id}
The raw HTML of a Google Play search queued by post_dataforseo_app_google_app_searches_submit.
The raw HTML of a Google Play search queued by `post_dataforseo_app_google_app_searches_submit`. 🔴 **Measured at 1.3 MB against 21 KB for the parsed twin** - reach for it only when verifying that the parser dropped something. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The parsed version is `get_dataforseo_app_google_app_searches_fetch`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/app_data/google/app_searches/task_get/html/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Google App Categories for App Data API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-app-data-google-categories
openapi/dataforseo.json GET /dataforseo/app_data/google/categories
The Google Play category tree used by the task endpoints, under a categories key.
The Google Play category tree used by the task endpoints, under a `categories` key. Measured at 1.2 KB. Free: upstream cost is 0. Distinct from `get_dataforseo_app_google_app_listings_categories`, which serves the live listings search and carries per-category counts.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/app_data/google/categories" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Google Languages for App Data API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-app-data-google-languages
openapi/dataforseo.json GET /dataforseo/app_data/google/languages
The 127 languages the Google Play endpoints accept, as language_name and language_code.
The 127 languages the Google Play endpoints accept, as `language_name` and `language_code`. Measured at 6.7 KB. Free: upstream cost is 0. The Apple half accepts only 39 - see `get_dataforseo_app_apple_languages` - so do not assume a code carries across.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/app_data/google/languages" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Google Locations for App Data API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-app-data-google-locations
openapi/dataforseo.json GET /dataforseo/app_data/google/locations
The locations the Google Play endpoints accept.
The locations the Google Play endpoints accept. 🔴 **Measured at 46 MB across 269,681 rows - the largest response found anywhere in this provider.** Google's list is every city and region worldwide, where the Apple equivalent is 105 countries and 13.8 KB. Do not call this from an agent: `location_code` 2840 is the United States, and other codes belong in DataForSEO's own documentation. Free upstream, so nothing bills and nothing warns before it lands.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/app_data/google/locations" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Backlinks Index
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-backlinks-index
openapi/dataforseo.json GET /dataforseo/backlinks/index
Backlinks Index
How much of the web DataForSEO's backlink crawler has indexed: `total_backlinks`, `total_pages` and an `index_history` array of `date`, `total_backlinks` and `total_pages`. Measured at 1.4 KB. **Free - upstream cost is 0, the only endpoint in this family that is.** Wrapped in DataForSEO's envelope: data in `tasks[0].result`, upstream charge in `tasks[0].cost`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. It says nothing about any particular site; it is the denominator behind every other number here, useful for judging whether a coverage gap is the site's or the crawler's.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/backlinks/index" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Business Data Google Extended Reviews Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-business-data-google-extended-reviews-task-get-id
openapi/dataforseo.json GET /dataforseo/business_data/google/extended_reviews/task_get/{id}
Retrieves queued the full Google review history for a business, past the first page the standard endpoint returns by id.
Retrieves queued the full Google review history for a business, past the first page the standard endpoint returns by `id`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Size scales with the depth set at submit and cannot be narrowed here.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/business_data/google/extended_reviews/task_get/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Extended Reviews Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-business-data-google-extended-reviews-tasks-ready
openapi/dataforseo.json GET /dataforseo/business_data/google/extended_reviews/tasks_ready
Lists finished the full Google review history for a business, past the first page the standard endpoint returns tasks awaiting collection.
Lists finished the full Google review history for a business, past the first page the standard endpoint returns tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. A caller that holds its own task `id` can fetch directly and skip this.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/business_data/google/extended_reviews/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Advanced Google Hotel Info Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-business-data-google-hotel-info-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/business_data/google/hotel_info/task_get/advanced/{id}
Retrieves a queued hotel listing by id, parsed.
Retrieves a queued hotel listing by `id`, parsed. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ The response size was fixed by the `depth` or limit set at submit time and cannot be narrowed here; if it is too large, resubmit smaller rather than paging.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/business_data/google/hotel_info/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Advanced Google Hotel Info Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-business-data-google-hotel-info-task-get-html-id
openapi/dataforseo.json GET /dataforseo/business_data/google/hotel_info/task_get/html/{id}
Retrieves a queued hotel listing by id as raw HTML.
Retrieves a queued hotel listing by `id` as raw HTML. ⚠️ Far larger than the parsed twin `get_dataforseo_business_google_hotel_info_fetch`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/business_data/google/hotel_info/task_get/html/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Hotel Info Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-business-data-google-hotel-info-tasks-ready
openapi/dataforseo.json GET /dataforseo/business_data/google/hotel_info/tasks_ready
Lists finished hotel listing tasks awaiting collection.
Lists finished hotel listing tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Rarely the tool you want: a caller holds the `id` its own submit returned and can fetch that directly. This answers what is ready across the whole account, which is a different question, and it returns an empty result with status 20000 when nothing is - an empty queue, not an error.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/business_data/google/hotel_info/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Hotel Searches Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-business-data-google-hotel-searches-task-get-id
openapi/dataforseo.json GET /dataforseo/business_data/google/hotel_searches/task_get/{id}
Retrieves a queued Google Hotels search by id.
Retrieves a queued Google Hotels search by `id`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ The response size was fixed by the `depth` or limit set at submit time and cannot be narrowed here; if it is too large, resubmit smaller rather than paging.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/business_data/google/hotel_searches/task_get/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Hotel Searches Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-business-data-google-hotel-searches-tasks-ready
openapi/dataforseo.json GET /dataforseo/business_data/google/hotel_searches/tasks_ready
Lists finished Google Hotels search tasks awaiting collection.
Lists finished Google Hotels search tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Rarely the tool you want: a caller holds the `id` its own submit returned and can fetch that directly. This answers what is ready across the whole account, which is a different question, and it returns an empty result with status 20000 when nothing is - an empty queue, not an error.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/business_data/google/hotel_searches/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# AI Keyword Data Keyword Search Volume
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-ai-optimization-ai-keyword-data-keywords-search-volume-live
openapi/dataforseo.json POST /dataforseo/ai_optimization/ai_keyword_data/keywords_search_volume/live
Search volume for keywords as measured inside AI assistants rather than a search engine - how often people ask assistants about a term.
Search volume for `keywords` as measured inside AI assistants rather than a search engine - how often people ask assistants about a term. Returns `location_code`, `language_code`, `items_count` and `items`. Measured at 1.2 KB and **$0.0101 upstream against $0.012 billed, a thin margin**, so batch keywords into one call rather than calling per keyword. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. For classical search volume use `post_dataforseo_keywords_gads_search_volume_live`; the two answer different questions and often disagree.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/ai_keyword_data/keywords_search_volume/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keywords": "...", "location_name": "...", "location_code": "..."}]'
```
# Live ChatGPT LLM Responses
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-ai-optimization-chat-gpt-llm-responses-live
openapi/dataforseo.json POST /dataforseo/ai_optimization/chat_gpt/llm_responses/live
Sends a user_prompt to a ChatGPT model and returns its reply, synchronously.
Sends a `user_prompt` to a ChatGPT model and returns its reply, synchronously. `model_name` picks the model - see `get_dataforseo_ai_chat_gpt_llm_responses_models`, and an unlisted name is rejected outright. `max_output_tokens`, `temperature` and `top_p` behave as they do on the vendor's own API, and `web_search` or `force_web_search` let it browse. Returns `model_name`, `input_tokens`, `output_tokens`, `reasoning_tokens`, `web_search`, `money_spent`, `datetime`, `items` and `fan_out_queries`. 💰 **Priced by tokens upstream, not per call**: a sixteen-token reply measured $0.0006, but nothing caps a long one, and AIsa bills a flat $0.012 either way. Read `money_spent` on the response to see what a prompt actually cost. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ This is a general LLM call routed through a data provider, not an SEO measurement. If you want to know what ChatGPT tells users about a brand, `post_dataforseo_ai_chat_gpt_llm_scraper_live` reproduces the consumer experience instead.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/chat_gpt/llm_responses/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"user_prompt": "...", "model_name": "...", "max_output_tokens": "..."}]'
```
# Setting ‘LLM Responses ChatGPT’ Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-ai-optimization-chat-gpt-llm-responses-task-post
openapi/dataforseo.json POST /dataforseo/ai_optimization/chat_gpt/llm_responses/task_post
Queues a ChatGPT prompt instead of waiting for the reply, returning a task id.
Queues a ChatGPT prompt instead of waiting for the reply, returning a task `id`. Adds `system_message` and `message_chain` over the live endpoint, so a multi-turn conversation can be sent in one task. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Not every model supports queuing - check `task_post_supported` in `get_dataforseo_ai_chat_gpt_llm_responses_models`. Retrieve with `get_dataforseo_ai_chat_gpt_llm_responses_fetch`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/chat_gpt/llm_responses/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"user_prompt": "...", "model_name": "...", "max_output_tokens": "..."}]'
```
# Live ChatGPT LLM Scraper
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-ai-optimization-chat-gpt-llm-scraper-live-advanced
openapi/dataforseo.json POST /dataforseo/ai_optimization/chat_gpt/llm_scraper/live/advanced
Asks ChatGPT a keyword as a user would and returns the answer parsed.
Asks ChatGPT a `keyword` as a user would and returns the answer parsed. Returns `keyword`, `location_code`, `language_code`, `model`, `datetime`, `markdown`, `sources`, `fan_out_queries` and `brand_entities` - `markdown` is the answer as the assistant rendered it, `sources` the pages it cited, and `brand_entities` the brands it named. Measured at \$0.004. Measured at 11.3 KB. `force_web_search` makes it browse rather than answer from training. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. This is the endpoint for 'what does ChatGPT say about us'; for counting mentions across many answers use `post_dataforseo_ai_llm_mentions_aggregated_metrics_live` instead of scraping repeatedly. The raw form is `post_dataforseo_ai_chat_gpt_llm_scraper_live_html`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/chat_gpt/llm_scraper/live/advanced" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Live ChatGPT LLM Scraper API HTML
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-ai-optimization-chat-gpt-llm-scraper-live-html
openapi/dataforseo.json POST /dataforseo/ai_optimization/chat_gpt/llm_scraper/live/html
The same ChatGPT answer as post_dataforseo_ai_chat_gpt_llm_scraper_live, returned as raw HTML rather than parsed.
The same ChatGPT answer as `post_dataforseo_ai_chat_gpt_llm_scraper_live`, returned as raw HTML rather than parsed. `expand_citations` unfolds the source list. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Larger than the 11.3 KB parsed form and harder for an agent to use - take it only when you need markup the parser dropped.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/chat_gpt/llm_scraper/live/html" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Live Claude LLM Responses
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-ai-optimization-claude-llm-responses-live
openapi/dataforseo.json POST /dataforseo/ai_optimization/claude/llm_responses/live
Sends a user_prompt to a Claude model and returns its reply, synchronously.
Sends a `user_prompt` to a Claude model and returns its reply, synchronously. `model_name` must come from `get_dataforseo_ai_claude_llm_responses_models` - names look like `claude-sonnet-5`, and a plausible-looking guess is rejected. A sixteen-token reply measured $0.000744. Returns `model_name`, `input_tokens`, `output_tokens`, `reasoning_tokens`, `web_search`, `money_spent`, `datetime`, `items` and `fan_out_queries`. 💰 **Priced by tokens upstream, not per call**: a sixteen-token reply measured $0.0006, but nothing caps a long one, and AIsa bills a flat \$0.012 either way. Read `money_spent` on the response to see what a prompt actually cost. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/claude/llm_responses/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"user_prompt": "...", "model_name": "...", "max_output_tokens": "..."}]'
```
# Setting LLM Responses Claude Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-ai-optimization-claude-llm-responses-task-post
openapi/dataforseo.json POST /dataforseo/ai_optimization/claude/llm_responses/task_post
Queues a Claude prompt instead of waiting, returning a task id.
Queues a Claude prompt instead of waiting, returning a task `id`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Check `task_post_supported` in `get_dataforseo_ai_claude_llm_responses_models` first, and retrieve with `get_dataforseo_ai_claude_llm_responses_fetch`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/claude/llm_responses/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"user_prompt": "...", "model_name": "...", "max_output_tokens": "..."}]'
```
# Live Gemini LLM Responses
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-ai-optimization-gemini-llm-responses-live
openapi/dataforseo.json POST /dataforseo/ai_optimization/gemini/llm_responses/live
Sends a user_prompt to a Gemini model and returns its reply, synchronously.
Sends a `user_prompt` to a Gemini model and returns its reply, synchronously. `model_name` must come from `get_dataforseo_ai_gemini_llm_responses_models`. `system_message` is accepted here, unlike on the Claude and ChatGPT live endpoints. Returns `model_name`, `input_tokens`, `output_tokens`, `reasoning_tokens`, `web_search`, `money_spent`, `datetime`, `items` and `fan_out_queries`. 💰 **Priced by tokens upstream, not per call**: a sixteen-token reply measured $0.0006, but nothing caps a long one, and AIsa bills a flat $0.012 either way. Read `money_spent` on the response to see what a prompt actually cost. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/gemini/llm_responses/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"user_prompt": "...", "model_name": "...", "max_output_tokens": "..."}]'
```
# Setting ‘LLM Responses Gemini’ Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-ai-optimization-gemini-llm-responses-task-post
openapi/dataforseo.json POST /dataforseo/ai_optimization/gemini/llm_responses/task_post
Queues a Gemini prompt instead of waiting, returning a task id.
Queues a Gemini prompt instead of waiting, returning a task `id`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Check `task_post_supported` in `get_dataforseo_ai_gemini_llm_responses_models`, and retrieve with `get_dataforseo_ai_gemini_llm_responses_fetch`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/gemini/llm_responses/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"user_prompt": "...", "model_name": "...", "max_output_tokens": "..."}]'
```
# Live Gemini LLM Scraper Advanced
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-ai-optimization-gemini-llm-scraper-live-advanced
openapi/dataforseo.json POST /dataforseo/ai_optimization/gemini/llm_scraper/live/advanced
Asks Gemini a keyword as a user would and returns the answer parsed.
Asks Gemini a `keyword` as a user would and returns the answer parsed. Returns `keyword`, `location_code`, `language_code`, `model`, `datetime`, `markdown`, `sources`, `se_results_count`, `item_types`, `items_count` and `items`. Measured at 26.1 KB and \$0.004 - more than twice the ChatGPT equivalent's payload for the same question. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The ChatGPT twin is `post_dataforseo_ai_chat_gpt_llm_scraper_live`; running both and comparing is the point of this family.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/gemini/llm_scraper/live/advanced" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Live Gemini LLM Scraper HTML
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-ai-optimization-gemini-llm-scraper-live-html
openapi/dataforseo.json POST /dataforseo/ai_optimization/gemini/llm_scraper/live/html
The same Gemini answer as post_dataforseo_ai_gemini_llm_scraper_live, returned as raw HTML.
The same Gemini answer as `post_dataforseo_ai_gemini_llm_scraper_live`, returned as raw HTML. `expand_citations` unfolds the source list. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Larger than the 26.1 KB parsed form; take it only when you need markup the parser dropped.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/gemini/llm_scraper/live/html" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Setting Gemini LLM Scraper
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-ai-optimization-gemini-llm-scraper-task-post
openapi/dataforseo.json POST /dataforseo/ai_optimization/gemini/llm_scraper/task_post
Queues a Gemini scrape instead of waiting for one, returning a task id.
Queues a Gemini scrape instead of waiting for one, returning a task `id`. `priority` moves it up the queue. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Retrieve with `get_dataforseo_ai_gemini_llm_scraper_fetch`, or the HTML form with `get_dataforseo_ai_gemini_llm_scraper_fetch_html`. Use it when a batch of keywords would outlast a tool call's patience; the live endpoint is simpler for one.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/gemini/llm_scraper/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "priority": "...", "location_name": "..."}]'
```
# Live LLM Mentions Aggregated Metrics
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-ai-optimization-llm-mentions-aggregated-metrics-live
openapi/dataforseo.json POST /dataforseo/ai_optimization/llm_mentions/aggregated_metrics/live
How often assistants mention your target, as totals rather than individual answers: total and items.
How often assistants mention your target, as totals rather than individual answers: `total` and `items`. Measured at 7.0 KB. 🔴 **Measured at \$0.101 upstream, roughly eight times the flat rate billed** - among the most expensive endpoints in this provider. ⚠️ `target` is an **array of objects**, each `{"domain": "..."}` or `{"keyword": "..."}`; a bare string is rejected as the wrong type and an array of strings as 'Each target item must be an object'. Filter fields come from `get_dataforseo_ai_llm_mentions_available_filters`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. This is the headline visibility number; `post_dataforseo_ai_llm_mentions_search_live` shows the answers behind it, and `post_dataforseo_ai_llm_mentions_cross_metrics_live` compares several targets at once.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/llm_mentions/aggregated_metrics/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"target": "...", "domain_entity": "...", "domain": "..."}]'
```
# Live LLM Mentions Cross Aggregated Metrics
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-ai-optimization-llm-mentions-cross-aggregated-metrics-live
openapi/dataforseo.json POST /dataforseo/ai_optimization/llm_mentions/cross_aggregated_metrics/live
Compares mention metrics across several targets in one call, grouped by aggregation_key.
Compares mention metrics across several targets in one call, grouped by `aggregation_key`. Takes `targets` as a list of target arrays rather than the single `target` its siblings take - the shapes differ, and mixing them up is rejected as an unknown field. 🔴 **Measured at \$0.101 upstream, roughly eight times the flat rate billed** - among the most expensive endpoints in this provider. ⚠️ `target` is an **array of objects**, each `{"domain": "..."}` or `{"keyword": "..."}`; a bare string is rejected as the wrong type and an array of strings as 'Each target item must be an object'. Filter fields come from `get_dataforseo_ai_llm_mentions_available_filters`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Running `post_dataforseo_ai_llm_mentions_aggregated_metrics_live` once per target costs the same per call, so use this when the comparison itself is the point.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/llm_mentions/cross_aggregated_metrics/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"targets": "...", "aggregation_key": "...", "target": "..."}]'
```
# Live LLM Mentions
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-ai-optimization-llm-mentions-search-live
openapi/dataforseo.json POST /dataforseo/ai_optimization/llm_mentions/search/live
The individual answers in which an assistant mentioned your target.
The individual answers in which an assistant mentioned your target. Returns `total_count`, `current_offset`, `search_after_token` and `items` - page with the token, not `offset`, past the first pages. Measured at 7.7 KB for one item. 🔴 **Measured at \$0.101 upstream, roughly eight times the flat rate billed** - among the most expensive endpoints in this provider. ⚠️ `target` is an **array of objects**, each `{"domain": "..."}` or `{"keyword": "..."}`; a bare string is rejected as the wrong type and an array of strings as 'Each target item must be an object'. Filter fields come from `get_dataforseo_ai_llm_mentions_available_filters`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. For counts rather than the mentions themselves use `post_dataforseo_ai_llm_mentions_aggregated_metrics_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/llm_mentions/search/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"target": "...", "domain_entity": "...", "domain": "..."}]'
```
# Live LLM Mentions Top Domains
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-ai-optimization-llm-mentions-top-domains-live
openapi/dataforseo.json POST /dataforseo/ai_optimization/llm_mentions/top_domains/live
The domains assistants cite most when answering about your target: total and items.
The domains assistants cite most when answering about your target: `total` and `items`. Measured at 20.3 KB, the largest response in the mentions family. 🔴 **Measured at \$0.101 upstream, roughly eight times the flat rate billed** - among the most expensive endpoints in this provider. ⚠️ `target` is an **array of objects**, each `{"domain": "..."}` or `{"keyword": "..."}`; a bare string is rejected as the wrong type and an array of strings as 'Each target item must be an object'. Filter fields come from `get_dataforseo_ai_llm_mentions_available_filters`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. This is the list to pitch: these are the pages shaping what assistants say. For individual pages rather than domains use `post_dataforseo_ai_llm_mentions_top_pages_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/llm_mentions/top_domains/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"target": "...", "domain_entity": "...", "domain": "..."}]'
```
# Live LLM Mentions Top Pages
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-ai-optimization-llm-mentions-top-pages-live
openapi/dataforseo.json POST /dataforseo/ai_optimization/llm_mentions/top_pages/live
The individual pages assistants cite most when answering about your target: total and items.
The individual pages assistants cite most when answering about your target: `total` and `items`. Measured at 13.1 KB. 🔴 **Measured at \$0.101 upstream, roughly eight times the flat rate billed** - among the most expensive endpoints in this provider. ⚠️ `target` is an **array of objects**, each `{"domain": "..."}` or `{"keyword": "..."}`; a bare string is rejected as the wrong type and an array of strings as 'Each target item must be an object'. Filter fields come from `get_dataforseo_ai_llm_mentions_available_filters`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. More actionable than its domain-level twin `post_dataforseo_ai_llm_mentions_top_domains_live` when you want to know which article to update or pitch, rather than which publisher.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/llm_mentions/top_pages/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"target": "...", "domain_entity": "...", "domain": "..."}]'
```
# Live Perplexity LLM Responses
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-ai-optimization-perplexity-llm-responses-live
openapi/dataforseo.json POST /dataforseo/ai_optimization/perplexity/llm_responses/live
Sends a user_prompt to a Perplexity model and returns its reply, synchronously.
Sends a `user_prompt` to a Perplexity model and returns its reply, synchronously. `model_name` must come from `get_dataforseo_ai_perplexity_llm_responses_models` - `sonar`, `sonar-pro` and `sonar-reasoning-pro`. `web_search_country_iso_code` scopes the search, which the other three vendors do not offer. Returns `model_name`, `input_tokens`, `output_tokens`, `reasoning_tokens`, `web_search`, `money_spent`, `datetime`, `items` and `fan_out_queries`. 💰 **Priced by tokens upstream, not per call**: a sixteen-token reply measured $0.0006, but nothing caps a long one, and AIsa bills a flat $0.012 either way. Read `money_spent` on the response to see what a prompt actually cost. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Perplexity searches by default, so its cost varies more with the question than the other vendors' do - `post_perplexity_sonar_deep_research` is the documented case of that going badly (CASEBOOK C5).
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/ai_optimization/perplexity/llm_responses/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"user_prompt": "...", "model_name": "...", "max_output_tokens": "..."}]'
```
# Setting Apple App Info Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-app-data-apple-app-info-task-post
openapi/dataforseo.json POST /dataforseo/app_data/apple/app_info/task_post
Queues a lookup of one App Store app by app_id, returning a task id.
Queues a lookup of one App Store app by `app_id`, returning a task `id`. Asynchronous: submit returns a task `id` in `tasks[0].id` and the fetch tool returns the result once ready. 💰 The charge lands on the submit, measured at \$0.0012; fetching is free, including re-fetching. Retrieve with `get_dataforseo_app_apple_app_info_fetch`. No HTML variant exists on the Apple half.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/app_data/apple/app_info/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"app_id": "...", "location_name": "...", "location_code": "..."}]'
```
# Setting Apple App List Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-app-data-apple-app-list-task-post
openapi/dataforseo.json POST /dataforseo/app_data/apple/app_list/task_post
Queues one of the App Store's curated collections, chosen with app_collection, returning a task id.
Queues one of the App Store's curated collections, chosen with `app_collection`, returning a task `id`. `depth` caps how far down the chart to read. Asynchronous: submit returns a task `id` in `tasks[0].id` and the fetch tool returns the result once ready. 💰 The charge lands on the submit, measured at \$0.0012; fetching is free, including re-fetching. Retrieve with `get_dataforseo_app_apple_app_list_fetch`. No HTML variant exists on the Apple half.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/app_data/apple/app_list/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"app_collection": "...", "location_name": "...", "location_code": "..."}]'
```
# Live Apple App Listings Search Results
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-app-data-apple-app-listings-search-live
openapi/dataforseo.json POST /dataforseo/app_data/apple/app_listings/search/live
Live Apple App Listings Search Results
Searches DataForSEO's own index of App Store listings, synchronously - the Apple twin of `post_dataforseo_app_google_app_listings_search_live`, same arguments and same shape. Measured at 8.1 KB for one result. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. 🔴 **Measured at \$0.101 upstream, about eight times the flat rate billed**, and the price does not fall with `limit` - ask for many results in one call rather than few in several. Category names come from `get_dataforseo_app_apple_app_listings_categories`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/app_data/apple/app_listings/search/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"categories": "...", "description": "...", "title": "..."}]'
```
# Setting Apple App Reviews Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-app-data-apple-app-reviews-task-post
openapi/dataforseo.json POST /dataforseo/app_data/apple/app_reviews/task_post
Queues the reviews of one App Store app by app_id, returning a task id.
Queues the reviews of one App Store app by `app_id`, returning a task `id`. `depth` sets how many to collect. Asynchronous: submit returns a task `id` in `tasks[0].id` and the fetch tool returns the result once ready. 💰 The charge lands on the submit, measured at \$0.0012; fetching is free, including re-fetching. Retrieve with `get_dataforseo_app_apple_app_reviews_fetch`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/app_data/apple/app_reviews/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"app_id": "...", "location_name": "...", "location_code": "..."}]'
```
# Setting Apple App Searches Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-app-data-apple-app-searches-task-post
openapi/dataforseo.json POST /dataforseo/app_data/apple/app_searches/task_post
Queues an App Store search for a keyword, returning a task id.
Queues an App Store search for a `keyword`, returning a task `id`. `location_code`, `language_code` and `depth` shape it. Asynchronous: submit returns a task `id` in `tasks[0].id` and the fetch tool returns the result once ready. 💰 The charge lands on the submit, measured at \$0.0012; fetching is free, including re-fetching. ⚠️ Unlike its Google twin, the Apple half offers no HTML variant - the parsed result is the only form. Retrieve with `get_dataforseo_app_apple_app_searches_fetch`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/app_data/apple/app_searches/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Setting Google App Info Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-app-data-google-app-info-task-post
openapi/dataforseo.json POST /dataforseo/app_data/google/app_info/task_post
Queues a lookup of one Google Play app by app_id, returning a task id.
Queues a lookup of one Google Play app by `app_id`, returning a task `id`. Asynchronous: submit returns a task `id` in `tasks[0].id` and the fetch tool returns the result once ready. 💰 The charge lands on the submit, measured at \$0.0012; fetching is free, including re-fetching. `location_code` 2840 is the United States. ⚠️ Do not fetch the Google location list to look one up - `get_dataforseo_app_google_locations` measured 46 MB. Retrieve with `get_dataforseo_app_google_app_info_fetch`. App ids come from a search result or from `post_dataforseo_app_google_app_listings_search_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/app_data/google/app_info/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"app_id": "...", "location_name": "...", "location_code": "..."}]'
```
# Setting Google App List Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-app-data-google-app-list-task-post
openapi/dataforseo.json POST /dataforseo/app_data/google/app_list/task_post
Queues one of Google Play's own curated collections - top free, top grossing, trending - chosen with app_collection, returning a task id.
Queues one of Google Play's own curated collections - top free, top grossing, trending - chosen with `app_collection`, returning a task `id`. `depth` caps how far down the chart to read. Asynchronous: submit returns a task `id` in `tasks[0].id` and the fetch tool returns the result once ready. 💰 The charge lands on the submit, measured at \$0.0012; fetching is free, including re-fetching. Retrieve with `get_dataforseo_app_google_app_list_fetch`. This is the chart view; for a keyword search use `post_dataforseo_app_google_app_searches_submit`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/app_data/google/app_list/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"app_collection": "...", "location_name": "...", "location_code": "..."}]'
```
# Live Google App Listings Search Results
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-app-data-google-app-listings-search-live
openapi/dataforseo.json POST /dataforseo/app_data/google/app_listings/search/live
Searches DataForSEO's own index of Google Play listings, synchronously - no task to submit.
Searches DataForSEO's own index of Google Play listings, synchronously - no task to submit. Match on `categories`, `title` or `description`, narrow with `filters` and `order_by`, page with `limit`, `offset` and `offset_token`. Returns `total_count`, `count`, `offset`, `offset_token` and `items`, each carrying `app_id`, `se_domain`, `location_code`, `language_code`, `check_url`, `time_update` and a nested `item`. Measured at 8.8 KB for one result. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. 🔴 **Measured at \$0.101 upstream for that single result - roughly eight times the flat rate billed, and the second most expensive endpoint in this provider.** The price does not fall with `limit`, so one call for many results is far better value than many calls for few. Category names come from `get_dataforseo_app_google_app_listings_categories`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/app_data/google/app_listings/search/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"categories": "...", "description": "...", "title": "..."}]'
```
# Setting Google App Reviews Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-app-data-google-app-reviews-task-post
openapi/dataforseo.json POST /dataforseo/app_data/google/app_reviews/task_post
Queues the reviews of one Google Play app by app_id, returning a task id.
Queues the reviews of one Google Play app by `app_id`, returning a task `id`. `depth` sets how many to collect. Asynchronous: submit returns a task `id` in `tasks[0].id` and the fetch tool returns the result once ready. 💰 The charge lands on the submit, measured at \$0.0012; fetching is free, including re-fetching. Retrieve with `get_dataforseo_app_google_app_reviews_fetch`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/app_data/google/app_reviews/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"app_id": "...", "location_name": "...", "location_code": "..."}]'
```
# Setting Google App Searches Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-app-data-google-app-searches-task-post
openapi/dataforseo.json POST /dataforseo/app_data/google/app_searches/task_post
Queues a Google Play search for a keyword, returning a task id.
Queues a Google Play search for a `keyword`, returning a task `id`. `location_code`, `language_code` and `depth` shape it. Asynchronous: submit returns a task `id` in `tasks[0].id` and the fetch tool returns the result once ready. 💰 The charge lands on the submit, measured at \$0.0012; fetching is free, including re-fetching. `location_code` 2840 is the United States. ⚠️ Do not fetch the Google location list to look one up - `get_dataforseo_app_google_locations` measured 46 MB. Retrieve with `get_dataforseo_app_google_app_searches_fetch`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/app_data/google/app_searches/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Anchors
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-backlinks-anchors-live
openapi/dataforseo.json POST /dataforseo/backlinks/anchors/live
Anchors
The anchor texts pointing at one `target`, one row per distinct anchor with `anchor`, `rank`, `backlinks`, `first_seen`, `lost_date`, `backlinks_spam_score`, `broken_backlinks` and `broken_pages`. Measured at 1.2 KB. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, upstream charge in `tasks[0].cost`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Use it to see how the web describes a site - over-optimised anchors show up here. The link-level view is `post_dataforseo_backlinks_backlinks_live`; the domain-level one is `post_dataforseo_backlinks_referring_domains_live`. 💰 Measured at \$0.024 upstream on every endpoint in this family, twice the flat rate billed - keep `limit` low and do not loop.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/backlinks/anchors/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"target": "...", "limit": "...", "offset": "..."}]'
```
# Backlinks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-backlinks-backlinks-live
openapi/dataforseo.json POST /dataforseo/backlinks/backlinks/live
The individual inbound links to one target, one row per link.
The individual inbound links to one `target`, one row per link. Returns `total_count`, `items_count`, `items` and a `search_after_token` for paging - use that rather than `offset` past the first few pages. `mode` and `custom_mode` control grouping, `backlinks_status_type` selects live, lost or all. Measured at 2.5 KB for one link. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, upstream charge in `tasks[0].cost`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. For counts rather than rows use `post_dataforseo_backlinks_summary_live`; for the linking domains grouped, `post_dataforseo_backlinks_referring_domains_live`. 💰 Measured at \$0.024 upstream on every endpoint in this family, twice the flat rate billed - keep `limit` low and do not loop.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/backlinks/backlinks/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"target": "...", "mode": "...", "custom_mode": "..."}]'
```
# Bulk Backlinks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-backlinks-bulk-backlinks-live
openapi/dataforseo.json POST /dataforseo/backlinks/bulk_backlinks/live
Backlink counts for many targets at once - one row of target and backlinks.
Backlink counts for many `targets` at once - one row of `target` and `backlinks`. Measured at 558 bytes for two targets. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, upstream charge in `tasks[0].cost`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Use it to rank a list before spending a per-target call on any of them; `post_dataforseo_backlinks_summary_live` gives the full profile of one. 💰 Measured at \$0.024 upstream on every endpoint in this family, twice the flat rate billed. This one takes no limit parameter, so the only lever is calling it less often.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/backlinks/bulk_backlinks/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"targets": "...", "tag": "..."}]'
```
# Bulk New & Lost Backlinks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-backlinks-bulk-new-lost-backlinks-live
openapi/dataforseo.json POST /dataforseo/backlinks/bulk_new_lost_backlinks/live
New and lost backlink counts for many targets since date_from - one row of target, new_backlinks and lost_backlinks.
New and lost backlink counts for many `targets` since `date_from` - one row of `target`, `new_backlinks` and `lost_backlinks`. Measured at 654 bytes for two targets. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, upstream charge in `tasks[0].cost`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Use it to spot which sites in a list are gaining or bleeding links. For one target broken into periods use `post_dataforseo_backlinks_timeseries_new_lost_live`; for referring domains rather than links, `post_dataforseo_backlinks_bulk_new_lost_ref_domains_live`. 💰 Measured at \$0.024 upstream on every endpoint in this family, twice the flat rate billed. This one takes no limit parameter, so the only lever is calling it less often.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/backlinks/bulk_new_lost_backlinks/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"targets": "...", "date_from": "...", "tag": "..."}]'
```
# Bulk New & Lost Referring Domains
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-backlinks-bulk-new-lost-referring-domains-live
openapi/dataforseo.json POST /dataforseo/backlinks/bulk_new_lost_referring_domains/live
Bulk New & Lost Referring Domains
New and lost referring domains for many `targets` since `date_from`: `new_referring_domains`, `lost_referring_domains`, `new_referring_main_domains` and `lost_referring_main_domains` per target. Measured at 836 bytes for two targets. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, upstream charge in `tasks[0].cost`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Prefer this over `post_dataforseo_backlinks_bulk_new_lost_backlinks_live` when judging whether a site is genuinely gaining relationships - domains churn less than links. 💰 Measured at \$0.024 upstream on every endpoint in this family, twice the flat rate billed. This one takes no limit parameter, so the only lever is calling it less often.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/backlinks/bulk_new_lost_referring_domains/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"targets": "...", "date_from": "...", "tag": "..."}]'
```
# Bulk Pages Summary
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-backlinks-bulk-pages-summary-live
openapi/dataforseo.json POST /dataforseo/backlinks/bulk_pages_summary/live
Bulk Pages Summary
Page-level backlink metrics for many `targets` at once: one row per `url` with `rank`, `main_domain_rank`, `backlinks`, `first_seen`, `lost_date`, `backlinks_spam_score` and `broken_backlinks`. Measured at 3.3 KB for two targets - the heaviest bulk endpoint, since it returns pages rather than one row per target. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, upstream charge in `tasks[0].cost`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The single-target version is `post_dataforseo_backlinks_domain_pages_summary_live`. 💰 Measured at \$0.024 upstream on every endpoint in this family, twice the flat rate billed. This one takes no limit parameter, so the only lever is calling it less often.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/backlinks/bulk_pages_summary/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"targets": "...", "include_subdomains": "...", "rank_scale": "..."}]'
```
# Bulk Ranks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-backlinks-bulk-ranks-live
openapi/dataforseo.json POST /dataforseo/backlinks/bulk_ranks/live
The rank of up to a thousand targets in one call - one row of target and rank.
The rank of up to a thousand `targets` in one call - one row of `target` and `rank`. Measured at 533 bytes for two targets, the leanest endpoint here. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, upstream charge in `tasks[0].cost`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ The bulk family takes `targets` as a **plain array**, unlike the intersection endpoints which key theirs by position. For everything known about a single target use `post_dataforseo_backlinks_summary_live`. 💰 Measured at \$0.024 upstream on every endpoint in this family, twice the flat rate billed. This one takes no limit parameter, so the only lever is calling it less often.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/backlinks/bulk_ranks/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"targets": "...", "rank_scale": "...", "tag": "..."}]'
```
# Bulk Referring Domains
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-backlinks-bulk-referring-domains-live
openapi/dataforseo.json POST /dataforseo/backlinks/bulk_referring_domains/live
Bulk Referring Domains
Referring-domain counts for many `targets`: `referring_domains`, `referring_domains_nofollow`, `referring_main_domains` and `referring_main_domains_nofollow` per target. Measured at 1.7 KB for two targets. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, upstream charge in `tasks[0].cost`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The nofollow split is the useful part - a large gap means the raw count overstates authority. For the domains themselves use `post_dataforseo_backlinks_referring_domains_live`. 💰 Measured at \$0.024 upstream on every endpoint in this family, twice the flat rate billed. This one takes no limit parameter, so the only lever is calling it less often.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/backlinks/bulk_referring_domains/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"targets": "...", "tag": "..."}]'
```
# Bulk Spam Score
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-backlinks-bulk-spam-score-live
openapi/dataforseo.json POST /dataforseo/backlinks/bulk_spam_score/live
Spam score for many targets at once - one row of target and spam_score.
Spam score for many `targets` at once - one row of `target` and `spam_score`. Measured at 624 bytes for two targets. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, upstream charge in `tasks[0].cost`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Use it to screen a prospect list before outreach. The per-target profile including spam score is `post_dataforseo_backlinks_summary_live`. 💰 Measured at \$0.024 upstream on every endpoint in this family, twice the flat rate billed. This one takes no limit parameter, so the only lever is calling it less often.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/backlinks/bulk_spam_score/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"targets": "...", "tag": "..."}]'
```
# Competitors
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-backlinks-competitors-live
openapi/dataforseo.json POST /dataforseo/backlinks/competitors/live
Sites sharing referring domains with one target, ranked by how many they share.
Sites sharing referring domains with one `target`, ranked by how many they share. Each row gives `target`, `rank` and `intersections` - the count of shared linking domains. `main_domain`, `exclude_large_domains` and `exclude_internal_backlinks` shape what counts. Measured at 570 bytes, the smallest response in this family. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, upstream charge in `tasks[0].cost`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. These are link-graph competitors, not search competitors; for the latter use `post_dataforseo_labs_google_serp_competitors_live`. To see the actual shared domains use `post_dataforseo_backlinks_domain_intersection_live`. 💰 Measured at \$0.024 upstream on every endpoint in this family, twice the flat rate billed - keep `limit` low and do not loop.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/backlinks/competitors/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"target": "...", "limit": "...", "offset": "..."}]'
```
# Domain Intersection
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-backlinks-domain-intersection-live
openapi/dataforseo.json POST /dataforseo/backlinks/domain_intersection/live
The domains linking to several targets at once.
The domains linking to several targets at once. ⚠️ `targets` here is an **object keyed by position** - `{"1": "a.com", "2": "b.com"}` - not the array the bulk endpoints take. `exclude_targets` removes sites from the comparison. Each row carries `domain_intersection` and a `summary` per target. Measured at 2.0 KB for one row. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, upstream charge in `tasks[0].cost`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Use it to find who links to your competitors but not to you. The page-level equivalent is `post_dataforseo_backlinks_page_intersection_live`. 💰 Measured at \$0.024 upstream on every endpoint in this family, twice the flat rate billed - keep `limit` low and do not loop.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/backlinks/domain_intersection/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"targets": "...", "exclude_targets": "...", "filters": "..."}]'
```
# Domain Pages
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-backlinks-domain-pages-live
openapi/dataforseo.json POST /dataforseo/backlinks/domain_pages/live
Domain Pages
The pages of one `target` that have inbound links, with the crawler's view of each: `main_domain`, `domain`, `tld`, `page`, `ip`, `first_visited`, `prev_visited` and `fetch_time`. Measured at 2.0 KB. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, upstream charge in `tasks[0].cost`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Use it to find which pages actually earn links. For per-page backlink counts rather than crawl metadata use `post_dataforseo_backlinks_domain_pages_summary_live`. 💰 Measured at \$0.024 upstream on every endpoint in this family, twice the flat rate billed - keep `limit` low and do not loop.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/backlinks/domain_pages/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"target": "...", "limit": "...", "offset": "..."}]'
```
# Domain Pages Summary
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-backlinks-domain-pages-summary-live
openapi/dataforseo.json POST /dataforseo/backlinks/domain_pages_summary/live
Domain Pages Summary
Per-page backlink metrics for one `target`: one row per `url` with `rank`, `backlinks`, `first_seen`, `lost_date`, `backlinks_spam_score`, `broken_backlinks` and `broken_pages`. Measured at 1.3 KB. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, upstream charge in `tasks[0].cost`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The page-level twin of `post_dataforseo_backlinks_summary_live`, which reports the same metrics for the domain as a whole. For crawl metadata about those pages instead, use `post_dataforseo_backlinks_domain_pages_live`. 💰 Measured at \$0.024 upstream on every endpoint in this family, twice the flat rate billed - keep `limit` low and do not loop.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/backlinks/domain_pages_summary/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"target": "...", "limit": "...", "offset": "..."}]'
```
# Backlinks History
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-backlinks-history-live
openapi/dataforseo.json POST /dataforseo/backlinks/history/live
One target's backlink profile as it stood on each date in a range, with date_from, date_to and one item per point.
One `target`'s backlink profile as it stood on each date in a range, with `date_from`, `date_to` and one item per point. Measured at 4.1 KB for two months - the largest response in this family, because each point repeats a full metric set. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, upstream charge in `tasks[0].cost`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. For the current profile only use `post_dataforseo_backlinks_summary_live`. For a lighter time series, `post_dataforseo_backlinks_timeseries_summary_live` reports fewer metrics per point. 💰 Measured at \$0.024 upstream on every endpoint in this family, twice the flat rate billed. This one takes no limit parameter, so the only lever is calling it less often.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/backlinks/history/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"target": "...", "date_from": "...", "date_to": "..."}]'
```
# Page Intersection
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-backlinks-page-intersection-live
openapi/dataforseo.json POST /dataforseo/backlinks/page_intersection/live
The pages linking to several target URLs at once, rather than the domains.
The pages linking to several target URLs at once, rather than the domains. ⚠️ `targets` is an **object keyed by position** and takes full URLs, not bare domains. Each row carries `page_intersection` and a `summary` per target. Measured at 3.9 KB for one row - the heaviest row shape here, since each carries a summary per target. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, upstream charge in `tasks[0].cost`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The domain-level equivalent is `post_dataforseo_backlinks_domain_intersection_live`, which is the one to reach for first. 💰 Measured at \$0.024 upstream on every endpoint in this family, twice the flat rate billed - keep `limit` low and do not loop.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/backlinks/page_intersection/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"targets": "...", "exclude_targets": "...", "backlinks_status_type": "..."}]'
```
# Referring Domains
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-backlinks-referring-domains-live
openapi/dataforseo.json POST /dataforseo/backlinks/referring_domains/live
Referring Domains
The domains linking to one `target`, one row per domain with `domain`, `rank`, `backlinks`, `first_seen`, `lost_date`, `backlinks_spam_score`, `broken_backlinks` and `broken_pages`. Measured at 1.3 KB. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, upstream charge in `tasks[0].cost`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Referring domains matter more than raw backlink count, since a thousand links from one domain is one relationship. For the individual links use `post_dataforseo_backlinks_backlinks_live`; to collapse further, to network operators, use `post_dataforseo_backlinks_referring_networks_live`. 💰 Measured at \$0.024 upstream on every endpoint in this family, twice the flat rate billed - keep `limit` low and do not loop.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/backlinks/referring_domains/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"target": "...", "limit": "...", "offset": "..."}]'
```
# Referring Networks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-backlinks-referring-networks-live
openapi/dataforseo.json POST /dataforseo/backlinks/referring_networks/live
Referring Networks
Collapses referring domains to the networks behind them - one row per `network_address` with `referring_domains` plus `rank`, `backlinks`, `first_seen`, `lost_date`, `backlinks_spam_score`, `broken_backlinks` and `broken_pages`. `network_address_type` chooses IP or subnet. Measured at 1.2 KB. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, upstream charge in `tasks[0].cost`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. This is the level at which link schemes become visible: many domains on one subnet is one operator, not many endorsements. The un-collapsed view is `post_dataforseo_backlinks_referring_domains_live`. 💰 Measured at \$0.024 upstream on every endpoint in this family, twice the flat rate billed - keep `limit` low and do not loop.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/backlinks/referring_networks/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"target": "...", "network_address_type": "...", "limit": "..."}]'
```
# Backlinks Summary
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-backlinks-summary-live
openapi/dataforseo.json POST /dataforseo/backlinks/summary/live
Backlinks Summary
The whole backlink profile of one `target` in a single call: `first_seen`, `lost_date`, `rank`, `backlinks`, `backlinks_spam_score`, `crawled_pages`, `internal_links_count` and an `info` block, with referring-domain and anchor counts alongside. Measured at 1.4 KB. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, upstream charge in `tasks[0].cost`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. This is the hub of the family - start here, then drill into whichever part matters: `post_dataforseo_backlinks_backlinks_live` for the individual links, `post_dataforseo_backlinks_referring_domains_live` for who links, `post_dataforseo_backlinks_anchors_live` for the text they use. 💰 Measured at \$0.024 upstream on every endpoint in this family, twice the flat rate billed. This one takes no limit parameter, so the only lever is calling it less often.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/backlinks/summary/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"target": "...", "include_subdomains": "...", "include_indirect_links": "..."}]'
```
# New & Lost Backlinks Timeseries Summary
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-backlinks-timeseries-new-lost-summary-live
openapi/dataforseo.json POST /dataforseo/backlinks/timeseries_new_lost_summary/live
New and lost backlinks and referring domains for one target per period, grouped by group_range.
New and lost backlinks and referring domains for one `target` per period, grouped by `group_range`. Measured at 1.4 KB for three monthly points. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, upstream charge in `tasks[0].cost`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. This is the derivative of `post_dataforseo_backlinks_timeseries_summary_live`: that one gives the level, this one the change. A flat total hiding heavy churn only shows up here. For the same figures across many targets at once use `post_dataforseo_backlinks_bulk_new_lost_backlinks_live`. 💰 Measured at \$0.024 upstream on every endpoint in this family, twice the flat rate billed. This one takes no limit parameter, so the only lever is calling it less often.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/backlinks/timeseries_new_lost_summary/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"target": "...", "date_from": "...", "date_to": "..."}]'
```
# Backlinks Timeseries Summary
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-backlinks-timeseries-summary-live
openapi/dataforseo.json POST /dataforseo/backlinks/timeseries_summary/live
One target's core backlink metrics over time, grouped by group_range (day, week, month).
One `target`'s core backlink metrics over time, grouped by `group_range` (day, week, month). Returns `date_from`, `date_to`, `group_range` and one item per period. Measured at 1.8 KB for three monthly points, against 4.1 KB for the same span from `post_dataforseo_backlinks_history_live` - use this one unless you need history's fuller metric set. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, upstream charge in `tasks[0].cost`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. For gains and losses rather than totals use `post_dataforseo_backlinks_timeseries_new_lost_live`. 💰 Measured at \$0.024 upstream on every endpoint in this family, twice the flat rate billed. This one takes no limit parameter, so the only lever is calling it less often.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/backlinks/timeseries_summary/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"target": "...", "date_from": "...", "date_to": "..."}]'
```
# Live Business Listings Search Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-business-data-business-listings-search-live
openapi/dataforseo.json POST /dataforseo/business_data/business_listings/search/live
Live Business Listings Search Tasks
Searches DataForSEO's own index of local business listings by `categories`, `description`, `title` and `location_coordinate` - a latitude, longitude and radius triple. Returns `total_count`, `count`, `offset`, `offset_token` and `items`, paged with the token. Measured at 4.0 KB for one result and \$0.01236 upstream, close to the flat rate billed - **the only reasonably priced way into this family**. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. This reads an index and answers immediately; everything else here queues a live scrape of the source. Start with this and drill in only where it matters.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/business_data/business_listings/search/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"categories": "...", "description": "...", "title": "..."}]'
```
# Setting Business Data Google Extended Reviews Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-business-data-google-extended-reviews-task-post
openapi/dataforseo.json POST /dataforseo/business_data/google/extended_reviews/task_post
Queues the full Google review history for a business, past the first page the standard endpoint returns, returning a task id.
Queues the full Google review history for a business, past the first page the standard endpoint returns, returning a task `id`. Asynchronous: submit returns a task `id` in `tasks[0].id`, fetch returns the result once ready, and the charge lands on the submit - fetching is free, including re-fetching. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Retrieve with `get_dataforseo_business_google_extended_reviews_fetch`; the shorter version is `post_dataforseo_business_google_reviews_submit`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/business_data/google/extended_reviews/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "cid": "...", "place_id": "..."}]'
```
# Live Google Hotel Info Advanced
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-business-data-google-hotel-info-live-advanced
openapi/dataforseo.json POST /dataforseo/business_data/google/hotel_info/live/advanced
One hotel's Google listing: rooms, amenities, prices and the booking options Google shows.
One hotel's Google listing: rooms, amenities, prices and the booking options Google shows. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The raw form is `post_dataforseo_business_google_hotel_info_live_html`, and the queued form `post_dataforseo_business_google_hotel_info_submit`. To find the hotel first use `post_dataforseo_business_google_hotel_searches_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/business_data/google/hotel_info/live/advanced" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"hotel_identifier": "...", "location_name": "...", "location_code": "..."}]'
```
# Live Google Hotel Info HTML
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-business-data-google-hotel-info-live-html
openapi/dataforseo.json POST /dataforseo/business_data/google/hotel_info/live/html
The same hotel listing as post_dataforseo_business_google_hotel_info_live, returned as raw HTML.
The same hotel listing as `post_dataforseo_business_google_hotel_info_live`, returned as raw HTML. ⚠️ Store-page HTML in this provider measured 2.6 MB against 83 KB parsed on the merchant family; assume the same order here and take it only to check what the parser dropped. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/business_data/google/hotel_info/live/html" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"hotel_identifier": "...", "priority": "...", "location_name": "..."}]'
```
# Setting Google Hotel Info Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-business-data-google-hotel-info-task-post
openapi/dataforseo.json POST /dataforseo/business_data/google/hotel_info/task_post
Queues a hotel listing lookup, returning a task id.
Queues a hotel listing lookup, returning a task `id`. Asynchronous: submit returns a task `id` in `tasks[0].id`, fetch returns the result once ready, and the charge lands on the submit - fetching is free, including re-fetching. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Retrieve parsed with `get_dataforseo_business_google_hotel_info_fetch` or raw with `get_dataforseo_business_google_hotel_info_fetch_html`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/business_data/google/hotel_info/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"hotel_identifier": "...", "keyword": "...", "priority": "..."}]'
```
# Live Google Hotel Searches Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-business-data-google-hotel-searches-live
openapi/dataforseo.json POST /dataforseo/business_data/google/hotel_searches/live
Searches Google Hotels for properties matching a query, with dates and occupancy.
Searches Google Hotels for properties matching a query, with dates and occupancy. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. This is how to find the hotel whose `id` the info endpoints need; `post_dataforseo_business_google_hotel_info_live` is the detail view.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/business_data/google/hotel_searches/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Setting Google Hotel Searches Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-business-data-google-hotel-searches-task-post
openapi/dataforseo.json POST /dataforseo/business_data/google/hotel_searches/task_post
Queues a Google Hotels search, returning a task id.
Queues a Google Hotels search, returning a task `id`. Asynchronous: submit returns a task `id` in `tasks[0].id`, fetch returns the result once ready, and the charge lands on the submit - fetching is free, including re-fetching. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Retrieve with `get_dataforseo_business_google_hotel_searches_fetch`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/business_data/google/hotel_searches/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "priority": "...", "location_name": "..."}]'
```
# Get Google My Business Info Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-business-data-google-my-business-info-task-get-id
openapi/dataforseo.json GET /dataforseo/business_data/google/my_business_info/task_get/{id}
Retrieves a queued Google Business Profile lookup by id.
Retrieves a queued Google Business Profile lookup by `id`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ The response size was fixed by the `depth` or limit set at submit time and cannot be narrowed here; if it is too large, resubmit smaller rather than paging.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/business_data/google/my_business_info/task_get/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google My Business Info Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-business-data-google-my-business-info-tasks-ready
openapi/dataforseo.json GET /dataforseo/business_data/google/my_business_info/tasks_ready
Lists finished Google Business Profile tasks awaiting collection.
Lists finished Google Business Profile tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. A caller that holds its own task `id` can fetch directly and skip this.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/business_data/google/my_business_info/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google My Business Updates Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-business-data-google-my-business-updates-task-get-id
openapi/dataforseo.json GET /dataforseo/business_data/google/my_business_updates/task_get/{id}
Retrieves queued Google Business Profile updates by id: each post with its text, media and date.
Retrieves queued Google Business Profile updates by `id`: each post with its text, media and date. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/business_data/google/my_business_updates/task_get/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google My Business Updates Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-business-data-google-my-business-updates-tasks-ready
openapi/dataforseo.json GET /dataforseo/business_data/google/my_business_updates/tasks_ready
Lists finished Google Business Profile update tasks awaiting collection.
Lists finished Google Business Profile update tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Rarely the tool you want: a caller holds the `id` its own submit returned and can fetch that directly. This answers what is ready across the whole account, which is a different question, and it returns an empty result with status 20000 when nothing is - an empty queue, not an error.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/business_data/google/my_business_updates/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google My Business Questions and Answers Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-business-data-google-questions-and-answers-task-get-id
openapi/dataforseo.json GET /dataforseo/business_data/google/questions_and_answers/task_get/{id}
Retrieves queued Google Business Profile questions and answers by id.
Retrieves queued Google Business Profile questions and answers by `id`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ The response size was fixed by the `depth` or limit set at submit time and cannot be narrowed here; if it is too large, resubmit smaller rather than paging.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/business_data/google/questions_and_answers/task_get/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google My Business Questions and Answers Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-business-data-google-questions-and-answers-tasks-ready
openapi/dataforseo.json GET /dataforseo/business_data/google/questions_and_answers/tasks_ready
Lists finished Google Business Profile Q&A tasks awaiting collection.
Lists finished Google Business Profile Q\&A tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Rarely the tool you want: a caller holds the `id` its own submit returned and can fetch that directly. This answers what is ready across the whole account, which is a different question, and it returns an empty result with status 20000 when nothing is - an empty queue, not an error.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/business_data/google/questions_and_answers/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Business Data Google Reviews Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-business-data-google-reviews-task-get-id
openapi/dataforseo.json GET /dataforseo/business_data/google/reviews/task_get/{id}
Retrieves queued Google Business Profile reviews by id.
Retrieves queued Google Business Profile reviews by `id`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Size scales with the depth set at submit and cannot be narrowed here.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/business_data/google/reviews/task_get/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Reviews Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-business-data-google-reviews-tasks-ready
openapi/dataforseo.json GET /dataforseo/business_data/google/reviews/tasks_ready
Lists finished Google Business Profile reviews tasks awaiting collection.
Lists finished Google Business Profile reviews tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. A caller that holds its own task `id` can fetch directly and skip this.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/business_data/google/reviews/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Business Data Tripadvisor Reviews Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-business-data-tripadvisor-reviews-task-get-id
openapi/dataforseo.json GET /dataforseo/business_data/tripadvisor/reviews/task_get/{id}
Retrieves queued Tripadvisor reviews for one property by id.
Retrieves queued Tripadvisor reviews for one property by `id`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Size scales with the depth set at submit and cannot be narrowed here.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/business_data/tripadvisor/reviews/task_get/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Tripadvisor Reviews Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-business-data-tripadvisor-reviews-tasks-ready
openapi/dataforseo.json GET /dataforseo/business_data/tripadvisor/reviews/tasks_ready
Lists finished Tripadvisor reviews for one property tasks awaiting collection.
Lists finished Tripadvisor reviews for one property tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. A caller that holds its own task `id` can fetch directly and skip this.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/business_data/tripadvisor/reviews/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Business Data Tripadvisor Search Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-business-data-tripadvisor-search-task-get-id
openapi/dataforseo.json GET /dataforseo/business_data/tripadvisor/search/task_get/{id}
Retrieves queued Tripadvisor properties matching a query - how to find the id the reviews endpoint needs by id.
Retrieves queued Tripadvisor properties matching a query - how to find the id the reviews endpoint needs by `id`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Size scales with the depth set at submit and cannot be narrowed here.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/business_data/tripadvisor/search/task_get/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Tripadvisor Search Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-business-data-tripadvisor-search-tasks-ready
openapi/dataforseo.json GET /dataforseo/business_data/tripadvisor/search/tasks_ready
Lists finished Tripadvisor properties matching a query tasks awaiting collection.
Lists finished Tripadvisor properties matching a query tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. A caller that holds its own task `id` can fetch directly and skip this.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/business_data/tripadvisor/search/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Business Data Trustpilot Reviews Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-business-data-trustpilot-reviews-task-get-id
openapi/dataforseo.json GET /dataforseo/business_data/trustpilot/reviews/task_get/{id}
Retrieves queued Trustpilot reviews for one business by id.
Retrieves queued Trustpilot reviews for one business by `id`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Size scales with the depth set at submit and cannot be narrowed here.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/business_data/trustpilot/reviews/task_get/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Trustpilot Reviews Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-business-data-trustpilot-reviews-tasks-ready
openapi/dataforseo.json GET /dataforseo/business_data/trustpilot/reviews/tasks_ready
Lists finished Trustpilot reviews for one business tasks awaiting collection.
Lists finished Trustpilot reviews for one business tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. A caller that holds its own task `id` can fetch directly and skip this.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/business_data/trustpilot/reviews/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Business Data Trustpilot Search Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-business-data-trustpilot-search-task-get-id
openapi/dataforseo.json GET /dataforseo/business_data/trustpilot/search/task_get/{id}
Retrieves queued Trustpilot businesses matching a query - how to find the id the reviews endpoint needs by id.
Retrieves queued Trustpilot businesses matching a query - how to find the id the reviews endpoint needs by `id`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Size scales with the depth set at submit and cannot be narrowed here.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/business_data/trustpilot/search/task_get/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Trustpilot Search Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-business-data-trustpilot-search-tasks-ready
openapi/dataforseo.json GET /dataforseo/business_data/trustpilot/search/tasks_ready
Lists finished Trustpilot businesses matching a query tasks awaiting collection.
Lists finished Trustpilot businesses matching a query tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. A caller that holds its own task `id` can fetch directly and skip this.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/business_data/trustpilot/search/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Filters for Content Analysis API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-content-analysis-available-filters
openapi/dataforseo.json GET /dataforseo/content_analysis/available_filters
Filters for Content Analysis API
The fields that `post_dataforseo_content_search_live` will accept in its `filters` argument: `url`, `domain`, `main_domain`, `url_rank`, `spam_score`, `domain_rank`, `fetch_time`, `country`, `language`, `score`, `page_category` and `page_types`. Measured at 1.8 KB. Free: upstream cost is 0. Read this before constructing a filter rather than guessing a field name - an unknown field is rejected, not ignored.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/content_analysis/available_filters" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Categories for Content Analysis API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-content-analysis-categories
openapi/dataforseo.json GET /dataforseo/content_analysis/categories
The Google product and service category tree used by post_dataforseo_content_category_trends_live.
The Google product and service category tree used by `post_dataforseo_content_category_trends_live`. Each row carries `category_code`, `category_name` and `category_code_parent`, which is what makes it a tree. 🔴 **Measured at 290 KB and 3,182 rows, and this endpoint takes no limit or filter parameter** - it is the largest response in the content family by two orders of magnitude and will consume a large part of an agent's context. Fetch it once and keep the code you need rather than calling it per request. Free: upstream cost is 0.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/content_analysis/categories" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Languages for Content Analysis API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-content-analysis-languages
openapi/dataforseo.json GET /dataforseo/content_analysis/languages
The languages the content endpoints accept, as language_name and language_code - for example Afrikaans with af.
The languages the content endpoints accept, as `language_name` and `language_code` - for example `Afrikaans` with `af`. 71 rows, and the code is the two-letter form, not a locale: `en`, not `en-US`. Measured at 3.9 KB. Free: upstream cost is 0. Reference data, so fetch once and reuse rather than calling it per request. The location equivalent is `get_dataforseo_content_locations`; the far larger category tree is `get_dataforseo_content_categories`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/content_analysis/languages" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Locations for Content Analysis API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-content-analysis-locations
openapi/dataforseo.json GET /dataforseo/content_analysis/locations
The locations the content endpoints accept, as location_name and country_iso_code - for example Afghanistan with AF.
The locations the content endpoints accept, as `location_name` and `country_iso_code` - for example `Afghanistan` with `AF`. The 235 rows are countries, not cities or regions, and the `country_iso_code` is returned for recognition only: the content endpoints match on the full `location_name` string. Measured at 13 KB. Free: upstream cost is 0. Reference data, so fetch once and reuse rather than calling it per request. The language equivalent is `get_dataforseo_content_languages`; the far larger category tree is `get_dataforseo_content_categories`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/content_analysis/locations" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Filters for DataForSEO Labs API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-dataforseo-labs-available-filters
openapi/dataforseo.json GET /dataforseo/dataforseo_labs/available_filters
Filters for DataForSEO Labs API
The filterable fields for every Labs endpoint, keyed by endpoint: `related_keywords`, `keyword_suggestions`, `ranked_keywords`, `keyword_ideas`, `serp_competitors`, `relevant_pages`, `subdomains`, `competitors_domain`, `categories_for_domain`, `keywords_for_categories` and the rest. 🔴 **Measured at 60.9 KB** - large for a reference response, though nothing beside the location catalogues elsewhere in this provider. Free: upstream cost is 0. Fetch once and keep the section you need; an unknown filter field is rejected, not ignored.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/available_filters" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# DataForSEO Labs Google Available History
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-dataforseo-labs-google-available-history
openapi/dataforseo.json GET /dataforseo/dataforseo_labs/google/available_history
The dates for which historical Labs data exists, as a date list.
The dates for which historical Labs data exists, as a `date` list. Measured at 2.0 KB. Free: upstream cost is 0. **Read it before calling any historical endpoint** - `post_dataforseo_labs_google_historical_rank_live` and its siblings return nothing rather than an error for a date outside this range.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/available_history" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Languages for Google Categories for Keywords API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-dataforseo-labs-google-categories-for-keywords-languages
openapi/dataforseo.json GET /dataforseo/dataforseo_labs/google/categories_for_keywords/languages
The languages post_dataforseo_labs_google_categories_for_kw_live accepts, as language_name and language_code.
The languages `post_dataforseo_labs_google_categories_for_kw_live` accepts, as `language_name` and `language_code`. Measured at 2.8 KB. Free: upstream cost is 0. Free: upstream cost is 0, and it is reference data - fetch once and keep what you need rather than calling it per request. ⚠️ Catalogues in this provider are not shared between families: the same endpoint name under a different product returns a different list, and one of them measured 46 MB. Check the list belonging to the endpoint you are actually calling.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/categories_for_keywords/languages" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# DataForSEO Labs Status
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-dataforseo-labs-status
openapi/dataforseo.json GET /dataforseo/dataforseo_labs/status
How current Labs' data is, per marketplace: google, bing and amazon.
How current Labs' data is, per marketplace: `google`, `bing` and `amazon`. Measured at 496 bytes, the smallest response in this family. Free: upstream cost is 0. Worth a call before a decision that rests on freshness - every other number in this family is only as current as this says.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/status" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Filters for Domain Analytics Technologies API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-domain-analytics-technologies-available-filters
openapi/dataforseo.json GET /dataforseo/domain_analytics/technologies/available_filters
Filters for Domain Analytics Technologies API
The filterable fields for each technology endpoint, keyed by endpoint: `domains_by_technology`, `aggregation_technologies`, `technologies_summary` and `domains_by_html_terms`. The first three share `domain_rank`, `last_visited`, `country_iso_code`, `language_code` and `content_language_code`; `domains_by_html_terms` adds `domain`. Measured at 2.1 KB. Free: upstream cost is 0. Read it before building a `filters` argument - an unknown field is rejected, not ignored. The whois equivalent is `get_dataforseo_domains_whois_available_filters`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/domain_analytics/technologies/available_filters" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Languages for Domain Analytics Technologies API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-domain-analytics-technologies-languages
openapi/dataforseo.json GET /dataforseo/domain_analytics/technologies/languages
The languages the technology endpoints accept, as language_name and language_code.
The languages the technology endpoints accept, as `language_name` and `language_code`. 127 rows, measured at 6.8 KB. Free: upstream cost is 0. Reference data - fetch once and reuse. Note this is not the same catalogue as the content family's 71 languages, so a code valid there is not guaranteed here. The location equivalent is `get_dataforseo_domains_tech_locations`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/domain_analytics/technologies/languages" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Locations for Domain Analytics Technologies API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-domain-analytics-technologies-locations
openapi/dataforseo.json GET /dataforseo/domain_analytics/technologies/locations
The locations the technology endpoints accept, as location_name and country_iso_code.
The locations the technology endpoints accept, as `location_name` and `country_iso_code`. 217 rows, measured at 29.6 KB - larger than it looks for reference data, so fetch once and reuse rather than calling it per request. Free: upstream cost is 0. Note this list is not the same length as the content family's 235 locations; the two are separate catalogues and a name valid in one is not guaranteed in the other. The language equivalent is `get_dataforseo_domains_tech_languages`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/domain_analytics/technologies/locations" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Technologies for Domain Analytics Technologies API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-domain-analytics-technologies-technologies
openapi/dataforseo.json GET /dataforseo/domain_analytics/technologies/technologies
The full technology taxonomy as a tree: groups, each with id, title and categories, and each category with its technologies.
The full technology taxonomy as a tree: `groups`, each with `id`, `title` and `categories`, and each category with its technologies. These are the values `groups`, `categories` and `technologies` accept on the search endpoints. 🔴 **Measured at 130 KB, and it takes no limit or filter parameter** - by far the largest response here and a serious bite out of an agent's context. Fetch it once and keep the branch you need. Free: upstream cost is 0.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/domain_analytics/technologies/technologies" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Filters for Domain Analytics Whois API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-domain-analytics-whois-available-filters
openapi/dataforseo.json GET /dataforseo/domain_analytics/whois/available_filters
Filters for Domain Analytics Whois API
The filterable fields for `post_dataforseo_domains_whois_overview_live`, under an `overview` key: `domain`, `created_datetime`, `changed_datetime`, `expiration_datetime`, `updated_datetime`, `first_seen`, `epp_status_codes`, `tld`, `registered` and `registrar`, alongside the nested metrics fields. Measured at 1.9 KB. Free: upstream cost is 0. Worth reading first here more than anywhere else in this family, because the endpoint it filters is the expensive one. The technology equivalent is `get_dataforseo_domains_tech_available_filters`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/domain_analytics/whois/available_filters" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Industries for Bing Ads Audience Estimation
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-keywords-data-bing-audience-estimation-industries
openapi/dataforseo.json GET /dataforseo/keywords_data/bing/audience_estimation/industries
The industry values post_dataforseo_keywords_bing_audience_live accepts.
The industry values `post_dataforseo_keywords_bing_audience_live` accepts. Free: upstream cost is 0. Read it before composing an audience request - an unrecognised industry is rejected, not ignored. The job-function list is `get_dataforseo_keywords_bing_audience_job_functions`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/keywords_data/bing/audience_estimation/industries" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Job Functions for Bing Ads Audience Estimation
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-keywords-data-bing-audience-estimation-job-functions
openapi/dataforseo.json GET /dataforseo/keywords_data/bing/audience_estimation/job_functions
The job-function values post_dataforseo_keywords_bing_audience_live accepts.
The job-function values `post_dataforseo_keywords_bing_audience_live` accepts. Free: upstream cost is 0. The industry list is `get_dataforseo_keywords_bing_audience_industries`. Free: upstream cost is 0, and it is reference data - fetch once and keep what you need rather than calling it per request. ⚠️ Catalogues in this provider are not shared between families: the same endpoint name under a different product returns a different list, and one of them measured 46 MB. Check the list belonging to the endpoint you are actually calling.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/keywords_data/bing/audience_estimation/job_functions" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Bing Ads Audience Estimation Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-keywords-data-bing-audience-estimation-task-get-id
openapi/dataforseo.json GET /dataforseo/keywords_data/bing/audience_estimation/task_get/{id}
Retrieves a queued Bing audience-estimation task by id.
Retrieves a queued Bing audience-estimation task by `id`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ The response size was fixed by the `depth` or limit set at submit time and cannot be narrowed here; if it is too large, resubmit smaller rather than paging.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/keywords_data/bing/audience_estimation/task_get/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get ‘Bing Ads Audience Estimation’ Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-keywords-data-bing-audience-estimation-tasks-ready
openapi/dataforseo.json GET /dataforseo/keywords_data/bing/audience_estimation/tasks_ready
Lists finished Bing audience-estimation tasks awaiting collection.
Lists finished Bing audience-estimation tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. A caller that holds its own task `id` can fetch directly and skip this.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/keywords_data/bing/audience_estimation/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Locations and Languages for Keyword Performance endpoints
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-keywords-data-bing-keyword-performance-locations-and-languages
openapi/dataforseo.json GET /dataforseo/keywords_data/bing/keyword_performance/locations_and_languages
The location and language pairs post_dataforseo_keywords_bing_kw_performance_live accepts.
The location and language pairs `post_dataforseo_keywords_bing_kw_performance_live` accepts. Free: upstream cost is 0. Read it first - that endpoint rejects a missing `language_name` with the same message it uses for a wrong one. Free: upstream cost is 0, and it is reference data - fetch once and keep what you need rather than calling it per request. ⚠️ Catalogues in this provider are not shared between families: the same endpoint name under a different product returns a different list, and one of them measured 46 MB. Check the list belonging to the endpoint you are actually calling.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/keywords_data/bing/keyword_performance/locations_and_languages" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get ‘Bing Keyword Performance’ Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-keywords-data-bing-keyword-performance-task-get-id
openapi/dataforseo.json GET /dataforseo/keywords_data/bing/keyword_performance/task_get/{id}
Retrieves a queued Bing keyword-performance task by id.
Retrieves a queued Bing keyword-performance task by `id`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ The response size was fixed by the `depth` or limit set at submit time and cannot be narrowed here; if it is too large, resubmit smaller rather than paging.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/keywords_data/bing/keyword_performance/task_get/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Bing Languages for Keyword Suggestions for URL
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-keywords-data-bing-keyword-suggestions-for-url-languages
openapi/dataforseo.json GET /dataforseo/keywords_data/bing/keyword_suggestions_for_url/languages
The languages post_dataforseo_keywords_bing_kw_for_url_live accepts.
The languages `post_dataforseo_keywords_bing_kw_for_url_live` accepts. Free: upstream cost is 0. Note this is a narrower list than `get_dataforseo_keywords_bing_languages`, which serves the rest of the Bing family. Free: upstream cost is 0, and it is reference data - fetch once and keep what you need rather than calling it per request. ⚠️ Catalogues in this provider are not shared between families: the same endpoint name under a different product returns a different list, and one of them measured 46 MB. Check the list belonging to the endpoint you are actually calling.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/keywords_data/bing/keyword_suggestions_for_url/languages" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Bing Ads Keyword Suggestions For URL Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-keywords-data-bing-keyword-suggestions-for-url-task-get-id
openapi/dataforseo.json GET /dataforseo/keywords_data/bing/keyword_suggestions_for_url/task_get/{id}
Retrieves a queued Bing keywords-for-URL task by id.
Retrieves a queued Bing keywords-for-URL task by `id`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ The response size was fixed by the `depth` or limit set at submit time and cannot be narrowed here; if it is too large, resubmit smaller rather than paging.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/keywords_data/bing/keyword_suggestions_for_url/task_get/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get ‘Bing Ads Keyword Suggestions For URL’ Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-keywords-data-bing-keyword-suggestions-for-url-tasks-ready
openapi/dataforseo.json GET /dataforseo/keywords_data/bing/keyword_suggestions_for_url/tasks_ready
Lists finished Bing keywords-for-URL tasks awaiting collection.
Lists finished Bing keywords-for-URL tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. A caller that holds its own task `id` can fetch directly and skip this.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/keywords_data/bing/keyword_suggestions_for_url/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Setting Live Google My Business Info Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-business-data-google-my-business-info-live
openapi/dataforseo.json POST /dataforseo/business_data/google/my_business_info/live
One Google Business Profile: name, address, phone, hours, rating, category and the attributes Google shows on the panel.
One Google Business Profile: name, address, phone, hours, rating, category and the attributes Google shows on the panel. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The queued twin is `post_dataforseo_business_google_gmb_info_submit`. For what the owner has posted recently use `post_dataforseo_business_google_gmb_updates_submit`, and for customer opinion `post_dataforseo_business_google_reviews_submit`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/business_data/google/my_business_info/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Setting Google My Business Info Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-business-data-google-my-business-info-task-post
openapi/dataforseo.json POST /dataforseo/business_data/google/my_business_info/task_post
Queues a Google Business Profile lookup, returning a task id.
Queues a Google Business Profile lookup, returning a task `id`. Asynchronous: submit returns a task `id` in `tasks[0].id`, fetch returns the result once ready, and the charge lands on the submit - fetching is free, including re-fetching. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The live twin `post_dataforseo_business_google_gmb_info_live` answers immediately and is simpler for a single profile; queue when the batch is large.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/business_data/google/my_business_info/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "priority": "...", "location_name": "..."}]'
```
# Setting Google My Business Updates Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-business-data-google-my-business-updates-task-post
openapi/dataforseo.json POST /dataforseo/business_data/google/my_business_updates/task_post
Queues the posts a business has published to its Google Business Profile, returning a task id.
Queues the posts a business has published to its Google Business Profile, returning a task `id`. Asynchronous: submit returns a task `id` in `tasks[0].id`, fetch returns the result once ready, and the charge lands on the submit - fetching is free, including re-fetching. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. There is no live variant - updates always queue. The profile itself is `post_dataforseo_business_google_gmb_info_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/business_data/google/my_business_updates/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "priority": "...", "location_name": "..."}]'
```
# Setting Live Google My Business Questions and Answers Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-business-data-google-questions-and-answers-live
openapi/dataforseo.json POST /dataforseo/business_data/google/questions_and_answers/live
The questions and answers on a Google Business Profile, found by keyword and location_code.
The questions and answers on a Google Business Profile, found by `keyword` and `location_code`. Returns `keyword`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `cid`, `feature_id` and `item_types`. Measured at \$0.0054. ⚠️ **A miss still bills**: a keyword matching no business answered `status_code` 40102, `No Search Results.`, and was charged anyway - so confirm the business exists with `post_dataforseo_business_listings_search_live` before asking. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/business_data/google/questions_and_answers/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Setting Google My Business Questions and Answers Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-business-data-google-questions-and-answers-task-post
openapi/dataforseo.json POST /dataforseo/business_data/google/questions_and_answers/task_post
Queues the questions and answers on a Google Business Profile, returning a task id.
Queues the questions and answers on a Google Business Profile, returning a task `id`. Asynchronous: submit returns a task `id` in `tasks[0].id`, fetch returns the result once ready, and the charge lands on the submit - fetching is free, including re-fetching. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Same as the live twin: a keyword that matches nothing is still charged.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/business_data/google/questions_and_answers/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "priority": "...", "location_name": "..."}]'
```
# Setting Business Data Google Reviews Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-business-data-google-reviews-task-post
openapi/dataforseo.json POST /dataforseo/business_data/google/reviews/task_post
Queues Google Business Profile reviews, returning a task id.
Queues Google Business Profile reviews, returning a task `id`. Asynchronous: submit returns a task `id` in `tasks[0].id`, fetch returns the result once ready, and the charge lands on the submit - fetching is free, including re-fetching. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Retrieve with `get_dataforseo_business_google_reviews_fetch`; the profile itself is `post_dataforseo_business_google_gmb_info_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/business_data/google/reviews/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "cid": "...", "place_id": "..."}]'
```
# Live Social Media Pinterest Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-business-data-social-media-pinterest-live
openapi/dataforseo.json POST /dataforseo/business_data/social_media/pinterest/live
How many times each of targets has been pinned on Pinterest.
How many times each of `targets` has been pinned on Pinterest. Returns `type`, `page_url` and `pins_count` per URL. Measured at 546 bytes and **\$0.00004 upstream - the cheapest endpoint measured anywhere in this provider**, three hundred times under the flat rate billed. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Takes a list, so check a whole site's pages in one call. For Pinterest content rather than counts, the pinterest server reads the platform directly.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/business_data/social_media/pinterest/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"targets": "...", "tag": "..."}]'
```
# Live Social Media Reddit Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-business-data-social-media-reddit-live
openapi/dataforseo.json POST /dataforseo/business_data/social_media/reddit/live
Intended to return Reddit sharing counts for targets.
Intended to return Reddit sharing counts for `targets`. 🔴 **Currently unavailable upstream**: it answers `status_code` 50304, `This function temporarily unavailable. Please contact support`, with no `tasks` array at all - the failure is at the top level of the envelope, not inside a task. Measured 2026-08-25. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The Pinterest sibling `post_dataforseo_business_social_media_pinterest_live` works and costs almost nothing; for Reddit content itself, the reddit server reads the platform directly.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/business_data/social_media/reddit/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"targets": "...", "tag": "..."}]'
```
# Setting Business Data Tripadvisor Reviews Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-business-data-tripadvisor-reviews-task-post
openapi/dataforseo.json POST /dataforseo/business_data/tripadvisor/reviews/task_post
Queues Tripadvisor reviews for one property, returning a task id.
Queues Tripadvisor reviews for one property, returning a task `id`. Asynchronous: submit returns a task `id` in `tasks[0].id`, fetch returns the result once ready, and the charge lands on the submit - fetching is free, including re-fetching. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Retrieve with `get_dataforseo_business_tripadvisor_reviews_fetch`; the Trustpilot equivalent is `post_dataforseo_business_trustpilot_reviews_submit`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/business_data/tripadvisor/reviews/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"url_path": "...", "keyword": "...", "location_name": "..."}]'
```
# Setting Business Data Tripadvisor Search Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-business-data-tripadvisor-search-task-post
openapi/dataforseo.json POST /dataforseo/business_data/tripadvisor/search/task_post
Queues Tripadvisor properties matching a query - how to find the id the reviews endpoint needs, returning a task id.
Queues Tripadvisor properties matching a query - how to find the id the reviews endpoint needs, returning a task `id`. Asynchronous: submit returns a task `id` in `tasks[0].id`, fetch returns the result once ready, and the charge lands on the submit - fetching is free, including re-fetching. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Retrieve with `get_dataforseo_business_tripadvisor_search_fetch`; reviews come from `post_dataforseo_business_tripadvisor_reviews_submit`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/business_data/tripadvisor/search/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Setting Business Data Trustpilot Reviews Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-business-data-trustpilot-reviews-task-post
openapi/dataforseo.json POST /dataforseo/business_data/trustpilot/reviews/task_post
Queues Trustpilot reviews for one business, returning a task id.
Queues Trustpilot reviews for one business, returning a task `id`. Asynchronous: submit returns a task `id` in `tasks[0].id`, fetch returns the result once ready, and the charge lands on the submit - fetching is free, including re-fetching. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Retrieve with `get_dataforseo_business_trustpilot_reviews_fetch`; the Tripadvisor equivalent is `post_dataforseo_business_tripadvisor_reviews_submit`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/business_data/trustpilot/reviews/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"domain": "...", "sort_by": "...", "priority": "..."}]'
```
# Setting Business Data Trustpilot Search Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-business-data-trustpilot-search-task-post
openapi/dataforseo.json POST /dataforseo/business_data/trustpilot/search/task_post
Queues Trustpilot businesses matching a query - how to find the id the reviews endpoint needs, returning a task id.
Queues Trustpilot businesses matching a query - how to find the id the reviews endpoint needs, returning a task `id`. Asynchronous: submit returns a task `id` in `tasks[0].id`, fetch returns the result once ready, and the charge lands on the submit - fetching is free, including re-fetching. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Retrieve with `get_dataforseo_business_trustpilot_search_fetch`; reviews come from `post_dataforseo_business_trustpilot_reviews_submit`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/business_data/trustpilot/search/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "priority": "...", "depth": "..."}]'
```
# Content Analysis – Category Trends API
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-content-analysis-category-trends-live
openapi/dataforseo.json POST /dataforseo/content_analysis/category_trends/live
The same per-period metrics as post_dataforseo_content_phrase_trends_live, but for an entire product category instead of one keyword.
The same per-period metrics as `post_dataforseo_content_phrase_trends_live`, but for an entire product category instead of one keyword. Takes `category_code` from `get_dataforseo_content_categories`, with `date_from`, `date_to` and `date_group` setting range and granularity, and returns a `date` plus `total_count`, `rank`, `top_domains` (each `domain` and `count`), `sentiment_connotations` (anger, happiness, love, sadness, share, fun), `connotation_types` (positive, negative, neutral), `text_categories`, `page_categories`, `page_types`, `countries` and `languages` per period. Every response wraps its payload in DataForSEO's envelope - `tasks[0].result` holds the data and `tasks[0].cost` the upstream charge. Use it to see how a market moves rather than a single phrase; swap to the phrase endpoint when you already know the exact wording you care about.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/content_analysis/category_trends/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"category_code": "...", "page_type": "...", "search_mode": "..."}]'
```
# Content Analysis – Phrase Trends API
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-content-analysis-phrase-trends-live
openapi/dataforseo.json POST /dataforseo/content_analysis/phrase_trends/live
The summary metrics for a keyword, repeated per time period.
The summary metrics for a keyword, repeated per time period. Each entry carries a `date` plus `total_count`, `rank`, `top_domains` (each `domain` and `count`), `sentiment_connotations` (anger, happiness, love, sadness, share, fun), `connotation_types` (positive, negative, neutral), `text_categories`, `page_categories`, `page_types`, `countries` and `languages`. `date_from`, `date_to` and `date_group` (day, week, month) set the range and granularity. Measured at 1.6 KB for two monthly points. Every response wraps its payload in DataForSEO's envelope - `tasks[0].result` holds the data and `tasks[0].cost` the upstream charge. Use this to see whether mentions of a phrase are rising or falling; for a single point in time use `post_dataforseo_content_summary_live`. To track a whole product category rather than one phrase, use `post_dataforseo_content_category_trends_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/content_analysis/phrase_trends/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "keyword_fields": "...", "page_type": "..."}]'
```
# Content Analysis – Rating Distribution API
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-content-analysis-rating-distribution-live
openapi/dataforseo.json POST /dataforseo/content_analysis/rating_distribution/live
Splits a keyword's citations into rating buckets and reports the full metric set for each.
Splits a keyword's citations into rating buckets and reports the full metric set for each. Returns one entry per bucket with `min`, `max` and a `metrics` object holding `total_count`, `rank`, `top_domains` (each `domain` and `count`), `sentiment_connotations` (anger, happiness, love, sadness, share, fun), `connotation_types` (positive, negative, neutral), `text_categories`, `page_categories`, `page_types`, `countries` and `languages`. Measured at 6.1 KB across 10 buckets - the largest response in this family, since every bucket repeats the whole metric set. Every response wraps its payload in DataForSEO's envelope - `tasks[0].result` holds the data and `tasks[0].cost` the upstream charge. `rank_scale` chooses the bucketing. For the same metrics un-bucketed use `post_dataforseo_content_summary_live`; for sentiment alone, `post_dataforseo_content_sentiment_analysis_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/content_analysis/rating_distribution/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "keyword_fields": "...", "page_type": "..."}]'
```
# Content Analysis – Search API
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-content-analysis-search-live
openapi/dataforseo.json POST /dataforseo/content_analysis/search/live
Lists the individual pages citing a keyword, rather than the totals.
Lists the individual pages citing a keyword, rather than the totals. Each item carries `url`, `domain`, `main_domain`, `url_rank`, `domain_rank`, `spam_score`, `fetch_time`, `country`, `language`, `score` and `page_category`, alongside `total_count` and `items_count`. Page with `offset_token` from the previous response, and cap the payload with `limit` - measured at 2.2 KB for a single item. Every response wraps its payload in DataForSEO's envelope - `tasks[0].result` holds the data and `tasks[0].cost` the upstream charge. `filters` accepts the fields listed by `get_dataforseo_content_available_filters`. For counts and distributions instead of pages, use `post_dataforseo_content_summary_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/content_analysis/search/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "keyword_fields": "...", "page_type": "..."}]'
```
# Content Analysis – Sentiment Analysis API
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-content-analysis-sentiment-analysis-live
openapi/dataforseo.json POST /dataforseo/content_analysis/sentiment_analysis/live
Content Analysis – Sentiment Analysis API
Sentiment distributions for the citations of a keyword: `positive_connotation_distribution` (positive, negative, neutral) and `sentiment_connotation_distribution` (anger, happiness, love, sadness, share, fun). `positive_connotation_threshold` and `sentiments_connotation_threshold` set how confident a classification must be to count. Measured at 5.7 KB. Every response wraps its payload in DataForSEO's envelope - `tasks[0].result` holds the data and `tasks[0].cost` the upstream charge. ⚠️ Both blocks are already inside `post_dataforseo_content_summary_live`, which costs the same and adds domains, categories, countries and languages - prefer it unless the smaller response matters. To see the sentiment split by star rating use `post_dataforseo_content_rating_distribution_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/content_analysis/sentiment_analysis/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "keyword_fields": "...", "page_type": "..."}]'
```
# Content Analysis – Summary API
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-content-analysis-summary-live
openapi/dataforseo.json POST /dataforseo/content_analysis/summary/live
Aggregate view of every citation of a keyword across the web index.
Aggregate view of every citation of a keyword across the web index. Returns `total_count`, `rank`, `top_domains` (each `domain` and `count`), `sentiment_connotations` (anger, happiness, love, sadness, share, fun), `connotation_types` (positive, negative, neutral), `text_categories`, `page_categories`, `page_types`, `countries` and `languages`. Measured at 1.1 KB for one keyword. Every response wraps its payload in DataForSEO's envelope - `tasks[0].result` holds the data and `tasks[0].cost` the upstream charge. This is the hub of the content family: `post_dataforseo_content_sentiment_analysis_live` returns only the two connotation blocks already included here, so call this one instead unless you specifically want the smaller payload. For the individual citing pages rather than the totals use `post_dataforseo_content_search_live`; for the same aggregate over time, `post_dataforseo_content_phrase_trends_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/content_analysis/summary/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "keyword_fields": "...", "page_type": "..."}]'
```
# Amazon Bulk Search Volume
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-dataforseo-labs-amazon-bulk-search-volume-live
openapi/dataforseo.json POST /dataforseo/dataforseo_labs/amazon/bulk_search_volume/live
Amazon search volume for many keywords in one call.
Amazon search volume for many keywords in one call. 💰 Measured at $0.01212 upstream, essentially the flat rate billed - the google_ads endpoints in seo-keywords answer similar questions at $0.09. This one takes no limit parameter, but it is priced per call rather than per item, so send the whole list at once. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Price is per call, so send the whole list. The Google-side volume endpoint is `post_dataforseo_labs_google_keyword_overview_live`, and the two measure different marketplaces entirely.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/amazon/bulk_search_volume/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keywords": "...", "location_name": "...", "location_code": "..."}]'
```
# Product Competitors
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-dataforseo-labs-amazon-product-competitors-live
openapi/dataforseo.json POST /dataforseo/dataforseo_labs/amazon/product_competitors/live
Amazon products competing with a given product on shared search terms.
Amazon products competing with a given product on shared search terms. Pages with `limit`, `offset` and `offset_token`; use the token past the first pages. 💰 Measured at $0.01212 upstream, essentially the flat rate billed. **This family is the one to reach for by default**: the google_ads endpoints in seo-keywords answer similar questions at $0.09 - seven times more - and return megabytes with no way to cap them, where this one takes a `limit`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. For the shared terms themselves use `post_dataforseo_labs_amazon_product_kw_overlap_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/amazon/product_competitors/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"asin": "...", "location_name": "...", "location_code": "..."}]'
```
# Keyword Intersections
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-dataforseo-labs-amazon-product-keyword-intersections-live
openapi/dataforseo.json POST /dataforseo/dataforseo_labs/amazon/product_keyword_intersections/live
The Amazon search terms two or more products both rank for.
The Amazon search terms two or more products both rank for. Pages with `limit`, `offset` and `offset_token`; use the token past the first pages. 💰 Measured at $0.01212 upstream, essentially the flat rate billed. **This family is the one to reach for by default**: the google_ads endpoints in seo-keywords answer similar questions at $0.09 - seven times more - and return megabytes with no way to cap them, where this one takes a `limit`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Where `post_dataforseo_labs_amazon_product_competitors_live` names the rivals, this names the terms they contest.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/amazon/product_keyword_intersections/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"asins": "...", "location_name": "...", "location_code": "..."}]'
```
# Product Rank Overview
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-dataforseo-labs-amazon-product-rank-overview-live
openapi/dataforseo.json POST /dataforseo/dataforseo_labs/amazon/product_rank_overview/live
Where a set of Amazon products rank overall - the product-level equivalent of a domain rank overview.
Where a set of Amazon products rank overall - the product-level equivalent of a domain rank overview. 💰 Measured at $0.01212 upstream, essentially the flat rate billed - the google_ads endpoints in seo-keywords answer similar questions at $0.09. This one takes no limit parameter, but it is priced per call rather than per item, so send the whole list at once. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. For the keywords behind those rankings use `post_dataforseo_labs_amazon_ranked_keywords_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/amazon/product_rank_overview/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"asins": "...", "location_name": "...", "location_code": "..."}]'
```
# Ranked Keywords
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-dataforseo-labs-amazon-ranked-keywords-live
openapi/dataforseo.json POST /dataforseo/dataforseo_labs/amazon/ranked_keywords/live
The Amazon search terms a product ranks for.
The Amazon search terms a product ranks for. Pages with `limit`, `offset` and `offset_token`; use the token past the first pages. 💰 Measured at $0.01212 upstream, essentially the flat rate billed. **This family is the one to reach for by default**: the google_ads endpoints in seo-keywords answer similar questions at $0.09 - seven times more - and return megabytes with no way to cap them, where this one takes a `limit`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. This is Labs' own Amazon index, so it pages and answers immediately - unlike `seo-merchant`, which queues a live scrape of the store.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/amazon/ranked_keywords/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"asin": "...", "location_name": "...", "location_code": "..."}]'
```
# Related Keywords
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-dataforseo-labs-amazon-related-keywords-live
openapi/dataforseo.json POST /dataforseo/dataforseo_labs/amazon/related_keywords/live
Amazon search terms related to a seed keyword.
Amazon search terms related to a seed keyword. Pages with `limit`, `offset` and `offset_token`; use the token past the first pages. 💰 Measured at $0.01212 upstream, essentially the flat rate billed. **This family is the one to reach for by default**: the google_ads endpoints in seo-keywords answer similar questions at $0.09 - seven times more - and return megabytes with no way to cap them, where this one takes a `limit`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The Google-side equivalent is `post_dataforseo_labs_google_related_keywords_live`; shopping intent and web intent diverge sharply, so do not substitute one for the other.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/amazon/related_keywords/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# App Store App Competitors Live
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-dataforseo-labs-apple-app-competitors-live
openapi/dataforseo.json POST /dataforseo/dataforseo_labs/apple/app_competitors/live
App Store apps competing with a given app on shared keywords.
App Store apps competing with a given app on shared keywords. Pages with `limit`, `offset` and `offset_token`; use the token past the first pages. 💰 Measured at $0.01212 upstream, essentially the flat rate billed. **This family is the one to reach for by default**: the google_ads endpoints in seo-keywords answer similar questions at $0.09 - seven times more - and return megabytes with no way to cap them, where this one takes a `limit`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Google Play twin: `post_dataforseo_labs_google_app_competitors_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/apple/app_competitors/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"app_id": "...", "location_name": "...", "location_code": "..."}]'
```
# App Store App Intersection Live
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-dataforseo-labs-apple-app-intersection-live
openapi/dataforseo.json POST /dataforseo/dataforseo_labs/apple/app_intersection/live
The keywords two or more App Store apps both rank for.
The keywords two or more App Store apps both rank for. Pages with `limit`, `offset` and `offset_token`; use the token past the first pages. 💰 Measured at $0.01212 upstream, essentially the flat rate billed. **This family is the one to reach for by default**: the google_ads endpoints in seo-keywords answer similar questions at $0.09 - seven times more - and return megabytes with no way to cap them, where this one takes a `limit`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Google Play twin: `post_dataforseo_labs_google_app_intersection_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/apple/app_intersection/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"app_ids": "...", "location_name": "...", "location_code": "..."}]'
```
# App Store Bulk App Metrics Live
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-dataforseo-labs-apple-bulk-app-metrics-live
openapi/dataforseo.json POST /dataforseo/dataforseo_labs/apple/bulk_app_metrics/live
Ratings, reviews and install estimates for many App Store apps in one call.
Ratings, reviews and install estimates for many App Store apps in one call. 💰 Measured at $0.01212 upstream, essentially the flat rate billed - the google_ads endpoints in seo-keywords answer similar questions at $0.09. This one takes no limit parameter, but it is priced per call rather than per item, so send the whole list at once. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Google Play twin: `post_dataforseo_labs_google_bulk_app_metrics_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/apple/bulk_app_metrics/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"app_ids": "...", "location_name": "...", "location_code": "..."}]'
```
# App Store Keywords For App Live
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-dataforseo-labs-apple-keywords-for-app-live
openapi/dataforseo.json POST /dataforseo/dataforseo_labs/apple/keywords_for_app/live
The keywords an App Store app ranks for.
The keywords an App Store app ranks for. Pages with `limit`, `offset` and `offset_token`; use the token past the first pages. 💰 Measured at $0.01212 upstream, essentially the flat rate billed. **This family is the one to reach for by default**: the google_ads endpoints in seo-keywords answer similar questions at $0.09 - seven times more - and return megabytes with no way to cap them, where this one takes a `limit`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The Google Play twin is `post_dataforseo_labs_google_keywords_for_app_live`; the two stores' keyword sets rarely match, which is the reason to run both.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/apple/keywords_for_app/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"app_id": "...", "location_name": "...", "location_code": "..."}]'
```
# Google Play App Competitors Live
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-dataforseo-labs-google-app-competitors-live
openapi/dataforseo.json POST /dataforseo/dataforseo_labs/google/app_competitors/live
Google Play apps competing with a given app on shared keywords.
Google Play apps competing with a given app on shared keywords. Pages with `limit`, `offset` and `offset_token`; use the token past the first pages. 💰 Measured at $0.01212 upstream, essentially the flat rate billed. **This family is the one to reach for by default**: the google_ads endpoints in seo-keywords answer similar questions at $0.09 - seven times more - and return megabytes with no way to cap them, where this one takes a `limit`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The Apple twin is `post_dataforseo_labs_apple_app_competitors_live`. For the keywords behind the overlap use `post_dataforseo_labs_google_app_intersection_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/app_competitors/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"app_id": "...", "location_name": "...", "location_code": "..."}]'
```
# Google Play App Intersection Live
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-dataforseo-labs-google-app-intersection-live
openapi/dataforseo.json POST /dataforseo/dataforseo_labs/google/app_intersection/live
The keywords two or more Google Play apps both rank for.
The keywords two or more Google Play apps both rank for. Pages with `limit`, `offset` and `offset_token`; use the token past the first pages. 💰 Measured at $0.01212 upstream, essentially the flat rate billed. **This family is the one to reach for by default**: the google_ads endpoints in seo-keywords answer similar questions at $0.09 - seven times more - and return megabytes with no way to cap them, where this one takes a `limit`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Where `post_dataforseo_labs_google_app_competitors_live` names the rivals, this names the ground they contest. Apple twin: `post_dataforseo_labs_apple_app_intersection_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/app_intersection/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"app_ids": "...", "location_name": "...", "location_code": "..."}]'
```
# Google Play Bulk App Metrics Live
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-dataforseo-labs-google-bulk-app-metrics-live
openapi/dataforseo.json POST /dataforseo/dataforseo_labs/google/bulk_app_metrics/live
Ratings, reviews and install estimates for many Google Play apps in one call.
Ratings, reviews and install estimates for many Google Play apps in one call. 💰 Measured at $0.01212 upstream, essentially the flat rate billed - the google_ads endpoints in seo-keywords answer similar questions at $0.09. This one takes no limit parameter, but it is priced per call rather than per item, so send the whole list at once. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Price is per call, so this is how to screen an app list before spending per-app calls. Apple twin: `post_dataforseo_labs_apple_bulk_app_metrics_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/bulk_app_metrics/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"app_ids": "...", "location_name": "...", "location_code": "..."}]'
```
# Bulk Keyword Difficulty
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-dataforseo-labs-google-bulk-keyword-difficulty-live
openapi/dataforseo.json POST /dataforseo/dataforseo_labs/google/bulk_keyword_difficulty/live
Difficulty scores for many keywords in one call.
Difficulty scores for many `keywords` in one call. Returns `se_type`, `total_count`, `items_count` and `items`. Measured at 713 bytes. 💰 Measured at $0.01212 upstream, essentially the flat rate billed - the google_ads endpoints in seo-keywords answer similar questions at $0.09. This one takes no limit parameter, but it is priced per call rather than per item, so send the whole list at once. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Price is per call, not per keyword, so send the whole list. For the full picture on fewer keywords use `post_dataforseo_labs_google_keyword_overview_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/bulk_keyword_difficulty/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keywords": "...", "location_name": "...", "location_code": "..."}]'
```
# Bulk Traffic Estimation
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-dataforseo-labs-google-bulk-traffic-estimation-live
openapi/dataforseo.json POST /dataforseo/dataforseo_labs/google/bulk_traffic_estimation/live
Estimated organic traffic for many domains in one call.
Estimated organic traffic for many domains in one call. 💰 Measured at $0.01212 upstream, essentially the flat rate billed - the google_ads endpoints in seo-keywords answer similar questions at $0.09. This one takes no limit parameter, but it is priced per call rather than per item, so send the whole list at once. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Price is per call, so this is how to rank a competitor list cheaply before spending per-domain calls on the interesting ones. The historical version is `post_dataforseo_labs_google_historical_bulk_traffic_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/bulk_traffic_estimation/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"targets": "...", "location_name": "...", "location_code": "..."}]'
```
# Categories For Domain
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-dataforseo-labs-google-categories-for-domain-live
openapi/dataforseo.json POST /dataforseo/dataforseo_labs/google/categories_for_domain/live
The topics a target site ranks in, as Google's own category codes with the site's footprint in each.
The topics a `target` site ranks in, as Google's own category codes with the site's footprint in each. 💰 Measured at $0.01212 upstream, essentially the flat rate billed. **This family is the one to reach for by default**: the google_ads endpoints in seo-keywords answer similar questions at $0.09 - seven times more - and return megabytes with no way to cap them, where this one takes a `limit`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The reverse direction - keywords for a category you name - is `post_dataforseo_labs_google_keywords_for_categories_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/categories_for_domain/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"target": "...", "location_name": "...", "location_code": "..."}]'
```
# Categories for Keywords
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-dataforseo-labs-google-categories-for-keywords-live
openapi/dataforseo.json POST /dataforseo/dataforseo_labs/google/categories_for_keywords/live
The categories a set of keywords belongs to.
The categories a set of `keywords` belongs to. 💰 Measured at $0.01212 upstream, essentially the flat rate billed - the google_ads endpoints in seo-keywords answer similar questions at $0.09. This one takes no limit parameter, but it is priced per call rather than per item, so send the whole list at once. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Language codes come from `get_dataforseo_labs_google_categories_for_kw_languages`. Use it to check whether a keyword list is coherent before building a page around it.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/categories_for_keywords/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keywords": "...", "language_name": "...", "language_code": "..."}]'
```
# Domain Rank Overview
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-dataforseo-labs-google-domain-rank-overview-live
openapi/dataforseo.json POST /dataforseo/dataforseo_labs/google/domain_rank_overview/live
A domain's search footprint: organic and paid keyword counts, estimated traffic and traffic value, by location_code.
A domain's search footprint: organic and paid keyword counts, estimated traffic and traffic value, by `location_code`. Returns `se_type`, `target`, `total_count`, `items_count` and `items`. Measured at 1.6 KB. 💰 Measured at $0.01212 upstream, essentially the flat rate billed. **This family is the one to reach for by default**: the google_ads endpoints in seo-keywords answer similar questions at $0.09 - seven times more - and return megabytes with no way to cap them, where this one takes a `limit`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. For the same numbers over time use `post_dataforseo_labs_google_historical_rank_live`; for many domains at once, `post_dataforseo_labs_google_bulk_traffic_estimation_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/domain_rank_overview/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"target": "...", "location_name": "...", "location_code": "..."}]'
```
# Historical Bulk Traffic Estimation
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-dataforseo-labs-google-historical-bulk-traffic-estimation-live
openapi/dataforseo.json POST /dataforseo/dataforseo_labs/google/historical_bulk_traffic_estimation/live
Historical Bulk Traffic Estimation
Estimated organic traffic for many domains at each point in the available history - the time series behind `post_dataforseo_labs_google_bulk_traffic_estimation_live`. 💰 Measured at $0.01212 upstream, essentially the flat rate billed - the google_ads endpoints in seo-keywords answer similar questions at $0.09. This one takes no limit parameter, but it is priced per call rather than per item, so send the whole list at once. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Response size multiplies domains by dates; keep both lists short. Available dates come from `get_dataforseo_labs_google_available_history`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/historical_bulk_traffic_estimation/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"targets": "...", "location_name": "...", "location_code": "..."}]'
```
# Historical Keyword Data
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-dataforseo-labs-google-historical-keyword-data-live
openapi/dataforseo.json POST /dataforseo/dataforseo_labs/google/historical_keyword_data/live
How a keyword's own metrics - volume, competition, cpc - moved over time.
How a keyword's own metrics - volume, competition, cpc - moved over time. 💰 Measured at $0.01212 upstream, essentially the flat rate billed - the google_ads endpoints in seo-keywords answer similar questions at $0.09. This one takes no limit parameter, but it is priced per call rather than per item, so send the whole list at once. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. This tracks the keyword; `post_dataforseo_labs_google_historical_rank_live` tracks a domain. For the current values use `post_dataforseo_labs_google_keyword_overview_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/historical_keyword_data/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keywords": "...", "location_name": "...", "location_code": "..."}]'
```
# Historical Rank Overview
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-dataforseo-labs-google-historical-rank-overview-live
openapi/dataforseo.json POST /dataforseo/dataforseo_labs/google/historical_rank_overview/live
A domain's rank overview as it stood at each point in the available history.
A domain's rank overview as it stood at each point in the available history. 💰 Measured at $0.01212 upstream, essentially the flat rate billed - the google_ads endpoints in seo-keywords answer similar questions at $0.09. This one takes no limit parameter, but it is priced per call rather than per item, so send the whole list at once. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Check `get_dataforseo_labs_google_available_history` first - it names the dates that exist, and asking for a date outside them returns nothing rather than an error. The current snapshot is `post_dataforseo_labs_google_domain_rank_overview_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/historical_rank_overview/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"target": "...", "location_name": "...", "location_code": "..."}]'
```
# Keyword Ideas
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-dataforseo-labs-google-keyword-ideas-live
openapi/dataforseo.json POST /dataforseo/dataforseo_labs/google/keyword_ideas/live
Expands seed keywords into ideas that share their semantic space.
Expands seed `keywords` into ideas that share their semantic space. Returns `seed_keywords`, `total_count`, `items_count`, `offset`, `offset_token` and `items`. Pages with `limit`, `offset` and `offset_token`; use the token past the first pages. Measured at 3.6 KB with a limit of 1. 💰 Measured at $0.01212 upstream, essentially the flat rate billed. **This family is the one to reach for by default**: the google_ads endpoints in seo-keywords answer similar questions at $0.09 - seven times more - and return megabytes with no way to cap them, where this one takes a `limit`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ The equivalent in the other family, `post_dataforseo_keywords_gads_kw_for_keywords_live`, measured 2.8 MB for a single seed because it has no `limit`. Prefer this one. For variants of one phrase rather than the wider space, `post_dataforseo_labs_google_keyword_suggestions_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/keyword_ideas/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keywords": "...", "location_name": "...", "location_code": "..."}]'
```
# Keyword Overview
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-dataforseo-labs-google-keyword-overview-live
openapi/dataforseo.json POST /dataforseo/dataforseo_labs/google/keyword_overview/live
Everything Labs knows about a list of keywords in one call: volume, difficulty, intent, competition and the SERP features they trigger.
Everything Labs knows about a list of `keywords` in one call: volume, difficulty, intent, competition and the SERP features they trigger. Returns `se_type`, `location_code`, `language_code`, `items_count` and `items`. Measured at 5.9 KB for one keyword. 💰 Measured at $0.01212 upstream, essentially the flat rate billed - the google_ads endpoints in seo-keywords answer similar questions at $0.09. This one takes no limit parameter, but it is priced per call rather than per item, so send the whole list at once. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Start here when you have keywords; `post_dataforseo_labs_google_keyword_ideas_live` is where to go when you need more of them.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/keyword_overview/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keywords": "...", "location_name": "...", "location_code": "..."}]'
```
# Keyword Suggestions
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-dataforseo-labs-google-keyword-suggestions-live
openapi/dataforseo.json POST /dataforseo/dataforseo_labs/google/keyword_suggestions/live
Long-tail variants containing one keyword - the phrase-match view, where post_dataforseo_labs_google_keyword_ideas_live is the semantic one.
Long-tail variants containing one `keyword` - the phrase-match view, where `post_dataforseo_labs_google_keyword_ideas_live` is the semantic one. Returns `seed_keyword`, `seed_keyword_data`, `total_count`, `offset_token` and `items`. Pages with `limit`, `offset` and `offset_token`; use the token past the first pages. Measured at 3.2 KB with a limit of 1. 💰 Measured at $0.01212 upstream, essentially the flat rate billed. **This family is the one to reach for by default**: the google_ads endpoints in seo-keywords answer similar questions at $0.09 - seven times more - and return megabytes with no way to cap them, where this one takes a `limit`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/keyword_suggestions/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Google Play Keywords For App Live
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-dataforseo-labs-google-keywords-for-app-live
openapi/dataforseo.json POST /dataforseo/dataforseo_labs/google/keywords_for_app/live
The keywords a Google Play app ranks for.
The keywords a Google Play app ranks for. Pages with `limit`, `offset` and `offset_token`; use the token past the first pages. 💰 Measured at $0.01212 upstream, essentially the flat rate billed. **This family is the one to reach for by default**: the google_ads endpoints in seo-keywords answer similar questions at $0.09 - seven times more - and return megabytes with no way to cap them, where this one takes a `limit`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The Apple twin is `post_dataforseo_labs_apple_keywords_for_app_live`. Distinct from `seo-apps`'s store scraping: this is Labs' own index, so it pages and costs a seventh of the live listings search there.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/keywords_for_app/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"app_id": "...", "location_name": "...", "location_code": "..."}]'
```
# Keywords For Categories
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-dataforseo-labs-google-keywords-for-categories-live
openapi/dataforseo.json POST /dataforseo/dataforseo_labs/google/keywords_for_categories/live
Every keyword Labs holds for a given category code - the reverse of post_dataforseo_labs_google_categories_for_domain_live.
Every keyword Labs holds for a given category code - the reverse of `post_dataforseo_labs_google_categories_for_domain_live`. Pages with `limit`, `offset` and `offset_token`; use the token past the first pages. 💰 Measured at $0.01212 upstream, essentially the flat rate billed. **This family is the one to reach for by default**: the google_ads endpoints in seo-keywords answer similar questions at $0.09 - seven times more - and return megabytes with no way to cap them, where this one takes a `limit`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ A broad category holds a great many keywords; set `limit` deliberately rather than relying on a default.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/keywords_for_categories/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"category_codes": "...", "location_name": "...", "location_code": "..."}]'
```
# Keywords For Site
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-dataforseo-labs-google-keywords-for-site-live
openapi/dataforseo.json POST /dataforseo/dataforseo_labs/google/keywords_for_site/live
The keywords a target site ranks for.
The keywords a `target` site ranks for. Returns `se_type`, `target`, `total_count`, `offset_token` and `items`. Pages with `limit`, `offset` and `offset_token`; use the token past the first pages. Measured at 3.0 KB with a limit of 1. 💰 Measured at $0.01212 upstream, essentially the flat rate billed. **This family is the one to reach for by default**: the google_ads endpoints in seo-keywords answer similar questions at $0.09 - seven times more - and return megabytes with no way to cap them, where this one takes a `limit`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ The other family's `post_dataforseo_keywords_gads_kw_for_site_live` answers this at \$0.09 and measured 7.2 MB with no limit. This is the same question, paged and at a seventh of the price.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/keywords_for_site/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"target": "...", "location_name": "...", "location_code": "..."}]'
```
# Related Keywords
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-dataforseo-labs-google-related-keywords-live
openapi/dataforseo.json POST /dataforseo/dataforseo_labs/google/related_keywords/live
Walks Google's own 'searches related to' graph outward from a keyword, depth by depth.
Walks Google's own 'searches related to' graph outward from a keyword, depth by depth. Pages with `limit`, `offset` and `offset_token`; use the token past the first pages. 💰 Measured at $0.01212 upstream, essentially the flat rate billed. **This family is the one to reach for by default**: the google_ads endpoints in seo-keywords answer similar questions at $0.09 - seven times more - and return megabytes with no way to cap them, where this one takes a `limit`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Different from both idea endpoints: this follows what Google itself links together, rather than a semantic model or a substring match.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/related_keywords/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Relevant Pages
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-dataforseo-labs-google-relevant-pages-live
openapi/dataforseo.json POST /dataforseo/dataforseo_labs/google/relevant_pages/live
Which pages of a target site earn its rankings, ranked by the traffic they bring.
Which pages of a `target` site earn its rankings, ranked by the traffic they bring. Pages with `limit`, `offset` and `offset_token`; use the token past the first pages. 💰 Measured at $0.01212 upstream, essentially the flat rate billed. **This family is the one to reach for by default**: the google_ads endpoints in seo-keywords answer similar questions at $0.09 - seven times more - and return megabytes with no way to cap them, where this one takes a `limit`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Use it to find the pages worth defending or expanding. For the keywords behind them use `post_dataforseo_labs_google_kw_for_site_live`; for the pages earning links rather than rankings, `post_dataforseo_backlinks_domain_pages_summary_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/relevant_pages/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"target": "...", "location_name": "...", "location_code": "..."}]'
```
# Search Intent
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-dataforseo-labs-google-search-intent-live
openapi/dataforseo.json POST /dataforseo/dataforseo_labs/google/search_intent/live
Classifies keywords as informational, navigational, commercial or transactional.
Classifies `keywords` as informational, navigational, commercial or transactional. Returns `language_code`, `items_count` and `items`. Measured at 673 bytes and **\$0.001212 - ten times cheaper than everything else in this family**, so classify freely. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Intent decides what a page has to be before volume decides whether it is worth writing; pair it with `post_dataforseo_labs_google_keyword_overview_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/search_intent/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keywords": "...", "language_name": "...", "language_code": "..."}]'
```
# SERP Competitors
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-dataforseo-labs-google-serp-competitors-live
openapi/dataforseo.json POST /dataforseo/dataforseo_labs/google/serp_competitors/live
The domains ranking alongside you for a set of keywords, with how many they share.
The domains ranking alongside you for a set of `keywords`, with how many they share. Returns `se_type`, `seed_keywords`, `total_count`, `items_count` and `items`. Measured at 894 bytes. 💰 Measured at $0.01212 upstream, essentially the flat rate billed. **This family is the one to reach for by default**: the google_ads endpoints in seo-keywords answer similar questions at $0.09 - seven times more - and return megabytes with no way to cap them, where this one takes a `limit`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ These are **search** competitors, decided by shared rankings. The link-graph equivalent is `post_dataforseo_backlinks_competitors_live`, and the two lists often disagree - which is itself informative.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/serp_competitors/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keywords": "...", "location_name": "...", "location_code": "..."}]'
```
# Subdomains
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-dataforseo-labs-google-subdomains-live
openapi/dataforseo.json POST /dataforseo/dataforseo_labs/google/subdomains/live
The subdomains of a target and the search footprint of each.
The subdomains of a `target` and the search footprint of each. Pages with `limit`, `offset` and `offset_token`; use the token past the first pages. 💰 Measured at $0.01212 upstream, essentially the flat rate billed. **This family is the one to reach for by default**: the google_ads endpoints in seo-keywords answer similar questions at $0.09 - seven times more - and return megabytes with no way to cap them, where this one takes a `limit`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Useful when a domain's traffic is concentrated somewhere other than www - a docs or blog subdomain carrying the site is invisible in `post_dataforseo_labs_google_domain_rank_overview_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/subdomains/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"target": "...", "location_name": "...", "location_code": "..."}]'
```
# Top Searches
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-dataforseo-labs-google-top-searches-live
openapi/dataforseo.json POST /dataforseo/dataforseo_labs/google/top_searches/live
The highest-volume keywords in a location, unfiltered by seed or site.
The highest-volume keywords in a location, unfiltered by seed or site. Pages with `limit`, `offset` and `offset_token`; use the token past the first pages. 💰 Measured at $0.01212 upstream, essentially the flat rate billed. **This family is the one to reach for by default**: the google_ads endpoints in seo-keywords answer similar questions at $0.09 - seven times more - and return megabytes with no way to cap them, where this one takes a `limit`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. This is the discovery end of the family: use it when there is no seed keyword yet, then narrow with `post_dataforseo_labs_google_keyword_ideas_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/top_searches/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"location_name": "...", "location_code": "...", "language_name": "..."}]'
```
# Aggregation Technologies
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-domain-analytics-technologies-aggregation-technologies-live
openapi/dataforseo.json POST /dataforseo/domain_analytics/technologies/aggregation_technologies/live
Counts rather than domains: how many sites match a technology query, broken down by group, category and technology.
Counts rather than domains: how many sites match a technology query, broken down by group, category and technology. Returns `total_count`, `items_count`, `offset` and `items`, with `internal_groups_list_limit`, `internal_categories_list_limit`, `internal_technologies_list_limit` and `internal_list_limit` each capping a different nesting level - set all four or the response grows quickly. Measured at 680 bytes with every limit at 1, the smallest response in this family. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, upstream charge in `tasks[0].cost`, and the real outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200, so check that field rather than the transport status. For the domains themselves rather than their counts, use `post_dataforseo_domains_tech_domains_by_technology_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/domain_analytics/technologies/aggregation_technologies/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"group": "...", "category": "...", "technology": "..."}]'
```
# Domain Technologies
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-domain-analytics-technologies-domain-technologies-live
openapi/dataforseo.json POST /dataforseo/domain_analytics/technologies/domain_technologies/live
Everything detected about one domain from a single target.
Everything detected about one domain from a single `target`. Returns `domain`, `title`, `description`, `meta_keywords`, `domain_rank`, `last_visited`, `country_iso_code`, `language_code`, `content_language_code`, `phone_numbers`, `emails`, `social_graph_urls` and `technologies`. Measured at 3.5 KB for stripe.com. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, upstream charge in `tasks[0].cost`, and the real outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200, so check that field rather than the transport status. This is the per-domain direction; to go the other way and find the domains using a given technology use `post_dataforseo_domains_tech_domains_by_technology_live`. The `emails` and `phone_numbers` it surfaces are scraped from the site itself, not a contact database.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/domain_analytics/technologies/domain_technologies/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"target": "..."}]'
```
# Domains by HTML Terms
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-domain-analytics-technologies-domains-by-html-terms-live
openapi/dataforseo.json POST /dataforseo/domain_analytics/technologies/domains_by_html_terms/live
Domains by HTML Terms
Finds domains whose HTML contains given `search_terms` - a raw string match where `post_dataforseo_domains_tech_domains_by_technology_live` matches a detected technology. Use it for a tracking snippet, an affiliate tag or a template signature that no detector names. Returns `total_count`, `items_count`, `offset`, `offset_token` and `items` carrying the same profile as the technology search. Measured at 1.8 KB for one item; cap with `limit`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, upstream charge in `tasks[0].cost`, and the real outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200, so check that field rather than the transport status.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/domain_analytics/technologies/domains_by_html_terms/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"search_terms": "...", "keywords": "...", "mode": "..."}]'
```
# Domains by Technology
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-domain-analytics-technologies-domains-by-technology-live
openapi/dataforseo.json POST /dataforseo/domain_analytics/technologies/domains_by_technology/live
Finds domains running a given technology - the reverse of post_dataforseo_domains_tech_for_domain_live.
Finds domains running a given technology - the reverse of `post_dataforseo_domains_tech_for_domain_live`. Accepts `technologies`, `technology_paths`, `groups`, `categories` and `keywords`, with `filters` and `order_by` over the fields named by `get_dataforseo_domains_tech_available_filters`. Returns `total_count`, `items_count`, `offset`, `offset_token` and `items`, each item the same profile as the per-domain call: `domain`, `title`, `description`, `meta_keywords`, `domain_rank`, `last_visited`, `country_iso_code`, `language_code`, `content_language_code`, `phone_numbers`, `emails`, `social_graph_urls` and `technologies`. Measured at 1.5 KB for one item, so cap it with `limit` - the item shape is heavy and `total_count` runs to millions for a popular platform. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, upstream charge in `tasks[0].cost`, and the real outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200, so check that field rather than the transport status.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/domain_analytics/technologies/domains_by_technology/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"technology_paths": "...", "groups": "...", "categories": "..."}]'
```
# Technologies Summary
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-domain-analytics-technologies-technologies-summary-live
openapi/dataforseo.json POST /dataforseo/domain_analytics/technologies/technologies_summary/live
Where a technology is used, rather than by whom: returns countries, languages, content_languages and keywords for the technology set you name.
Where a technology is used, rather than by whom: returns `countries`, `languages`, `content_languages` and `keywords` for the technology set you name. Measured at 1.4 KB. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, upstream charge in `tasks[0].cost`, and the real outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200, so check that field rather than the transport status. Use it to size a market before pulling domain lists. For counts broken down by group and category use `post_dataforseo_domains_tech_aggregation_live`; for adoption over time, `post_dataforseo_domains_tech_technology_stats_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/domain_analytics/technologies/technologies_summary/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"technology_paths": "...", "groups": "...", "categories": "..."}]'
```
# Technology Stats
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-domain-analytics-technologies-technology-stats-live
openapi/dataforseo.json POST /dataforseo/domain_analytics/technologies/technology_stats/live
Adoption of one technology over time.
Adoption of one `technology` over time. Returns `technology`, `date_from`, `date_to`, `items_count` and `items`. ⚠️ **`date_from` and `date_to` must both be present or both absent** - sending only `date_from` is rejected with `status_code` 40501, `Invalid Field: 'date_from'`, inside an HTTP 200. Omit both to get the default window. Measured at 516 bytes. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, upstream charge in `tasks[0].cost`, and the real outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200, so check that field rather than the transport status. For a single point in time use `post_dataforseo_domains_tech_summary_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/domain_analytics/technologies/technology_stats/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"technology": "...", "date_from": "...", "date_to": "..."}]'
```
# Domain Whois Overview
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-domain-analytics-whois-overview-live
openapi/dataforseo.json POST /dataforseo/domain_analytics/whois/overview/live
Whois records enriched with SEO metrics.
Whois records enriched with SEO metrics. Each item carries `domain`, `created_datetime`, `changed_datetime`, `expiration_datetime`, `updated_datetime`, `first_seen`, `epp_status_codes`, `tld`, `registered`, `registrar`, plus `metrics` and `backlinks_info`. Paged with `limit`, `offset` and `offset_token`, filtered over the fields in `get_dataforseo_domains_whois_available_filters`. Measured at 2.5 KB for one item. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, upstream charge in `tasks[0].cost`, and the real outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200, so check that field rather than the transport status. 🔴 **The most expensive endpoint in this family by an order of magnitude: measured at \$0.1212 upstream for a single record.** Filter hard and keep `limit` low; do not call it in a loop over a domain list.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/domain_analytics/whois/overview/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"limit": "...", "offset": "...", "offset_token": "..."}]'
```
# Setting Live ‘Bing Ads Audience Estimation’ Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-keywords-data-bing-audience-estimation-live
openapi/dataforseo.json POST /dataforseo/keywords_data/bing/audience_estimation/live
Estimates the Bing Ads audience reachable at a given bid and daily_budget, narrowed by location_code, age, industry and job function.
Estimates the Bing Ads audience reachable at a given `bid` and `daily_budget`, narrowed by `location_code`, `age`, industry and job function. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Industry and job-function values come from `get_dataforseo_keywords_bing_audience_industries` and `get_dataforseo_keywords_bing_audience_job_functions` - both free, and both worth reading before composing a request. The submit and fetch twins of this endpoint do the same work asynchronously, at the same price, for batches too large to wait on.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/keywords_data/bing/audience_estimation/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"location_name": "...", "location_code": "...", "location_coordinate": "..."}]'
```
# Setting ‘Bing Ads Audience Estimation’ Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-keywords-data-bing-audience-estimation-task-post
openapi/dataforseo.json POST /dataforseo/keywords_data/bing/audience_estimation/task_post
Queues a Bing audience estimation, returning a task id.
Queues a Bing audience estimation, returning a task `id`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Retrieve with `get_dataforseo_keywords_bing_audience_fetch`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/keywords_data/bing/audience_estimation/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"location_name": "...", "location_code": "...", "location_coordinate": "..."}]'
```
# Setting Live ‘Bing Keyword Performance’ Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-keywords-data-bing-keyword-performance-live
openapi/dataforseo.json POST /dataforseo/keywords_data/bing/keyword_performance/live
How a list of keywords performs in Bing Ads for a given device and match type.
How a list of `keywords` performs in Bing Ads for a given `device` and `match` type. ⚠️ **`language_name` is required and its absence is reported as `Invalid Field: 'language_name'` inside an HTTP 200** - the message means missing as well as wrong. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Valid pairs come from `get_dataforseo_keywords_bing_kw_performance_locales`. The submit and fetch twins of this endpoint do the same work asynchronously, at the same price, for batches too large to wait on.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/keywords_data/bing/keyword_performance/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keywords": "...", "device": "...", "match": "..."}]'
```
# Setting ‘Bing Keyword Performance’ Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-keywords-data-bing-keyword-performance-task-post
openapi/dataforseo.json POST /dataforseo/keywords_data/bing/keyword_performance/task_post
Queues a Bing keyword-performance task, returning a task id.
Queues a Bing keyword-performance task, returning a task `id`. ⚠️ Same requirement as the live twin: `language_name` must be present. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Retrieve with `get_dataforseo_keywords_bing_kw_performance_fetch`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/keywords_data/bing/keyword_performance/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keywords": "...", "device": "...", "match": "..."}]'
```
# Get ‘Keywords For Keywords’ Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-keywords-data-bing-keywords-for-keywords-task-get-id
openapi/dataforseo.json GET /dataforseo/keywords_data/bing/keywords_for_keywords/task_get/{id}
Retrieves a queued Bing keyword-expansion task by id.
Retrieves a queued Bing keyword-expansion task by `id`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ The response size was fixed by the `depth` or limit set at submit time and cannot be narrowed here; if it is too large, resubmit smaller rather than paging.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/keywords_data/bing/keywords_for_keywords/task_get/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get ‘Keywords For Site’ Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-keywords-data-bing-keywords-for-site-task-get-id
openapi/dataforseo.json GET /dataforseo/keywords_data/bing/keywords_for_site/task_get/{id}
Retrieves a queued Bing keywords-for-site task by id.
Retrieves a queued Bing keywords-for-site task by `id`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ The response size was fixed by the `depth` or limit set at submit time and cannot be narrowed here; if it is too large, resubmit smaller rather than paging.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/keywords_data/bing/keywords_for_site/task_get/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Bing Languages for Keywords Data
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-keywords-data-bing-languages
openapi/dataforseo.json GET /dataforseo/keywords_data/bing/languages
The languages the Bing keyword endpoints accept, as language_name and language_code.
The languages the Bing keyword endpoints accept, as `language_name` and `language_code`. Measured at 548 bytes, the smallest reference response in this provider. Free: upstream cost is 0. Free: upstream cost is 0, and it is reference data - fetch once and keep what you need rather than calling it per request. ⚠️ Catalogues in this provider are not shared between families: the same endpoint name under a different product returns a different list, and one of them measured 46 MB. Check the list belonging to the endpoint you are actually calling.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/keywords_data/bing/languages" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Bing Locations for Keywords Data
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-keywords-data-bing-locations
openapi/dataforseo.json GET /dataforseo/keywords_data/bing/locations
The locations the Bing keyword endpoints accept, as location_code, location_name, location_code_parent, country_iso_code and location_type.
The locations the Bing keyword endpoints accept, as `location_code`, `location_name`, `location_code_parent`, `country_iso_code` and `location_type`. 🔴 **Measured at 6.1 MB.** Smaller than the Google-side catalogues in this provider, which run past 40 MB, but still far too large for a tool result. `location_code` 2840 is the United States; look other codes up in DataForSEO's documentation rather than fetching this.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/keywords_data/bing/locations" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Locations and Languages for Bing ‘Search Volume History’ Endpoint
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-keywords-data-bing-search-volume-history-locations-and-languages
openapi/dataforseo.json GET /dataforseo/keywords_data/bing/search_volume_history/locations_and_languages
The location and language pairs the Bing search-volume-history endpoint accepts.
The location and language pairs the Bing search-volume-history endpoint accepts. Free: upstream cost is 0. Reference data - fetch once and reuse. Free: upstream cost is 0, and it is reference data - fetch once and keep what you need rather than calling it per request. ⚠️ Catalogues in this provider are not shared between families: the same endpoint name under a different product returns a different list, and one of them measured 46 MB. Check the list belonging to the endpoint you are actually calling.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/keywords_data/bing/search_volume_history/locations_and_languages" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Search Volume Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-keywords-data-bing-search-volume-task-get-id
openapi/dataforseo.json GET /dataforseo/keywords_data/bing/search_volume/task_get/{id}
Retrieves a queued Bing search-volume task by id.
Retrieves a queued Bing search-volume task by `id`. Same shape as the live twin. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/keywords_data/bing/search_volume/task_get/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Locations and Languages for DataForSEO Clickstream Data API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-keywords-data-clickstream-data-locations-and-languages
openapi/dataforseo.json GET /dataforseo/keywords_data/clickstream_data/locations_and_languages
List of Locations and Languages for DataForSEO Clickstream Data API
The locations and languages the clickstream endpoints accept, as `location_code`, `location_name`, `location_code_parent`, `country_iso_code`, `location_type` and `available_languages` nested per location. Measured at 20.5 KB. Free: upstream cost is 0.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/keywords_data/clickstream_data/locations_and_languages" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of DataForSEO Trends Locations
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-keywords-data-dataforseo-trends-locations
openapi/dataforseo.json GET /dataforseo/keywords_data/dataforseo_trends/locations
List of DataForSEO Trends Locations
The locations the Trends endpoints accept, as `location_code`, `location_name`, `location_code_parent`, `country_iso_code`, `location_type`, plus `geo_name` and `geo_id` - the last two are Google's own geo identifiers and appear on no other location list in this provider. Measured at 36.8 KB. Free: upstream cost is 0.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/keywords_data/dataforseo_trends/locations" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get ‘Ads Traffic By Keywords’ Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-keywords-data-google-ads-ad-traffic-by-keywords-task-get-id
openapi/dataforseo.json GET /dataforseo/keywords_data/google_ads/ad_traffic_by_keywords/task_get/{id}
Retrieves a queued Google Ads traffic forecast by id: projected impressions, clicks, cost and average position for the bid you specified.
Retrieves a queued Google Ads traffic forecast by `id`: projected impressions, clicks, cost and average position for the bid you specified. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Unlike the volume endpoints this is a projection, not a measurement - the numbers move with `bid` and `match`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/keywords_data/google_ads/ad_traffic_by_keywords/task_get/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get ‘Keywords For Keywords’ Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-keywords-data-google-ads-keywords-for-keywords-task-get-id
openapi/dataforseo.json GET /dataforseo/keywords_data/google_ads/keywords_for_keywords/task_get/{id}
Retrieves a queued Google Ads keyword-expansion task by id.
Retrieves a queued Google Ads keyword-expansion task by `id`. 🔴 Same 2.8 MB order of magnitude as the live twin. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/keywords_data/google_ads/keywords_for_keywords/task_get/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get ‘Keywords For Site’ Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-keywords-data-google-ads-keywords-for-site-task-get-id
openapi/dataforseo.json GET /dataforseo/keywords_data/google_ads/keywords_for_site/task_get/{id}
Retrieves a queued Google Ads keywords-for-site task by id.
Retrieves a queued Google Ads keywords-for-site task by `id`. 🔴 Same 7.2 MB order as the live twin. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/keywords_data/google_ads/keywords_for_site/task_get/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Search Volume Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-keywords-data-google-ads-search-volume-task-get-id
openapi/dataforseo.json GET /dataforseo/keywords_data/google_ads/search_volume/task_get/{id}
Retrieves a queued Google Ads search-volume task by id.
Retrieves a queued Google Ads search-volume task by `id`. Same shape as `post_dataforseo_keywords_gads_search_volume_live`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/keywords_data/google_ads/search_volume/task_get/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Google Ads Status
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-keywords-data-google-ads-status
openapi/dataforseo.json GET /dataforseo/keywords_data/google_ads/status
Whether DataForSEO's Google Ads data is current: actual_data, date_update, last_year_in_monthly_searches and last_month_in_monthly_searches.
Whether DataForSEO's Google Ads data is current: `actual_data`, `date_update`, `last_year_in_monthly_searches` and `last_month_in_monthly_searches`. Measured at 1 KB. Free: upstream cost is 0. **Worth checking before a spend decision** - it tells you how stale the `monthly_searches` arrays on every Google Ads response actually are.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/keywords_data/google_ads/status" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Google Trends Categories
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-keywords-data-google-trends-categories
openapi/dataforseo.json GET /dataforseo/keywords_data/google_trends/categories
The Google Trends category tree, as category_code, category_name and category_code_parent.
The Google Trends category tree, as `category_code`, `category_name` and `category_code_parent`. 🔴 **Measured at 122 KB with no limit or filter parameter** - the same shape as the content and technology taxonomies elsewhere in this provider. Fetch it once and keep the branch you need. Free: upstream cost is 0.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/keywords_data/google_trends/categories" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Amazon ASIN Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-merchant-amazon-asin-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/merchant/amazon/asin/task_get/advanced/{id}
One Amazon product page, from a task queued by post_dataforseo_merchant_amazon_asin_submit.
One Amazon product page, from a task queued by `post_dataforseo_merchant_amazon_asin_submit`. Returns `asin`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `item_types`, `items_count` and `items`, each item carrying `title`, `details`, `image_url`, `author`, `data_asin`, `parent_asin` and `product_asins` - that last field is the variant family, which is how you find the other sizes or colours. Measured at 38 KB. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. 🔴 The `_fetch_html` twin returns the raw page source instead: measured at 2.6 MB against 82 KB for the parsed version of the same task, a 32x difference. Reach for it only when the parsed result is missing something you can point at.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/merchant/amazon/asin/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Amazon ASIN HTML Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-merchant-amazon-asin-task-get-html-id
openapi/dataforseo.json GET /dataforseo/merchant/amazon/asin/task_get/html/{id}
The raw HTML of one Amazon product page, from a task queued by post_dataforseo_merchant_amazon_asin_submit.
The raw HTML of one Amazon product page, from a task queued by `post_dataforseo_merchant_amazon_asin_submit`. 🔴 Far larger than the 38 KB parsed twin; the equivalent Google pair measured 2.6 MB against 83 KB. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The parsed version is `get_dataforseo_merchant_amazon_asin_fetch`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/merchant/amazon/asin/task_get/html/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Amazon ASIN Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-merchant-amazon-asin-tasks-ready
openapi/dataforseo.json GET /dataforseo/merchant/amazon/asin/tasks_ready
Lists finished Amazon ASIN tasks awaiting collection.
Lists finished Amazon ASIN tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. A caller that holds its own task `id` can fetch directly and skip this.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/merchant/amazon/asin/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Amazon Languages for Merchant API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-merchant-amazon-languages
openapi/dataforseo.json GET /dataforseo/merchant/amazon/languages
The 27 languages the Amazon endpoints accept, as language_name and language_code.
The 27 languages the Amazon endpoints accept, as `language_name` and `language_code`. Measured at 2.1 KB. Free: upstream cost is 0. **Read this before submitting an Amazon task.** These are locale pairs - `en_US` with `English (United States)`, `ar_SA` with `Arabic (Saudi Arabia)` - and the bare `en` that Google accepts is rejected here. The Google equivalent is `get_dataforseo_merchant_google_languages`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/merchant/amazon/languages" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Amazon Locations for Merchant API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-merchant-amazon-locations
openapi/dataforseo.json GET /dataforseo/merchant/amazon/locations
The locations the Amazon endpoints accept.
The locations the Amazon endpoints accept. 🔴 **Measured at 20 MB.** This is not a response an agent should ever request: it is roughly eighty times the largest reference endpoint elsewhere in this provider and will exhaust any context window. `location_code` 2840 is the United States; look codes up in DataForSEO's own documentation rather than pulling this list. Free upstream, which is exactly why nothing else warns you.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/merchant/amazon/locations" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Amazon Products Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-merchant-amazon-products-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/merchant/amazon/products/task_get/advanced/{id}
Get Amazon Products Results by id
The parsed result of an Amazon search queued by `post_dataforseo_merchant_amazon_products_submit`: ranked listings with title, price, rating and ASIN per item. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Feed an ASIN from here into `post_dataforseo_merchant_amazon_asin_submit` for the full product page. 🔴 The `_fetch_html` twin returns the raw page source instead: measured at 2.6 MB against 82 KB for the parsed version of the same task, a 32x difference. Reach for it only when the parsed result is missing something you can point at.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/merchant/amazon/products/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Amazon Products HTML Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-merchant-amazon-products-task-get-html-id
openapi/dataforseo.json GET /dataforseo/merchant/amazon/products/task_get/html/{id}
The raw HTML of an Amazon search queued by post_dataforseo_merchant_amazon_products_submit.
The raw HTML of an Amazon search queued by `post_dataforseo_merchant_amazon_products_submit`. 🔴 Expect the same order of magnitude as the Google twin measured at 2.6 MB against 83 KB parsed - reach for it only to check what the parser dropped. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The parsed version is `get_dataforseo_merchant_amazon_products_fetch`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/merchant/amazon/products/task_get/html/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Amazon Products Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-merchant-amazon-products-tasks-ready
openapi/dataforseo.json GET /dataforseo/merchant/amazon/products/tasks_ready
Lists finished Amazon search tasks awaiting collection.
Lists finished Amazon search tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. A caller that holds its own task `id` can fetch directly and skip this.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/merchant/amazon/products/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Amazon Sellers Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-merchant-amazon-sellers-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/merchant/amazon/sellers/task_get/advanced/{id}
The sellers offering one Amazon product and what each charges, from a task queued by post_dataforseo_merchant_amazon_sellers_submit.
The sellers offering one Amazon product and what each charges, from a task queued by `post_dataforseo_merchant_amazon_sellers_submit`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. This answers who else is in the buy box; the product itself is `get_dataforseo_merchant_amazon_asin_fetch`. 🔴 The `_fetch_html` twin returns the raw page source instead: measured at 2.6 MB against 82 KB for the parsed version of the same task, a 32x difference. Reach for it only when the parsed result is missing something you can point at.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/merchant/amazon/sellers/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Amazon Sellers HTML Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-merchant-amazon-sellers-task-get-html-id
openapi/dataforseo.json GET /dataforseo/merchant/amazon/sellers/task_get/html/{id}
The raw HTML of an Amazon sellers page, from a task queued by post_dataforseo_merchant_amazon_sellers_submit.
The raw HTML of an Amazon sellers page, from a task queued by `post_dataforseo_merchant_amazon_sellers_submit`. 🔴 Far larger than the parsed twin, on the order of the 2.6 MB against 83 KB measured on the Google pair. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The parsed version is `get_dataforseo_merchant_amazon_sellers_fetch`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/merchant/amazon/sellers/task_get/html/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Amazon Sellers Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-merchant-amazon-sellers-tasks-ready
openapi/dataforseo.json GET /dataforseo/merchant/amazon/sellers/tasks_ready
Lists finished Amazon seller tasks awaiting collection.
Lists finished Amazon seller tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. A caller that holds its own task `id` can fetch directly and skip this.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/merchant/amazon/sellers/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Google Shopping Languages for Merchant API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-merchant-google-languages
openapi/dataforseo.json GET /dataforseo/merchant/google/languages
The languages the Google Shopping endpoints accept, as language_name and language_code.
The languages the Google Shopping endpoints accept, as `language_name` and `language_code`. Measured at 6.7 KB. Free: upstream cost is 0. These are plain codes such as `en`, unlike the Amazon list's locale pairs - see `get_dataforseo_merchant_amazon_languages`, which rejects what this one accepts.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/merchant/google/languages" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Google Shopping Locations for Merchant API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-merchant-google-locations
openapi/dataforseo.json GET /dataforseo/merchant/google/locations
The locations the Google Shopping endpoints accept.
The locations the Google Shopping endpoints accept. 🔴 **Measured at 43 MB - the largest response found anywhere in this provider by two orders of magnitude.** Do not call this from an agent. `location_code` 2840 is the United States; look other codes up in DataForSEO's documentation. Free upstream, so no billing signal warns you before it lands.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/merchant/google/locations" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Shopping Product Info Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-merchant-google-product-info-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/merchant/google/product_info/task_get/advanced/{id}
Get Google Shopping Product Info Results by id
The detail page of one Google Shopping product, from a task queued by `post_dataforseo_merchant_google_product_info_submit`: specifications, description, images and the sellers carrying it. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. For the search results that lead here use `get_dataforseo_merchant_google_products_fetch`; for buyer opinion, `get_dataforseo_merchant_google_reviews_fetch`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/merchant/google/product_info/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Shopping Product Info Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-merchant-google-product-info-tasks-ready
openapi/dataforseo.json GET /dataforseo/merchant/google/product_info/tasks_ready
Lists finished Google Shopping product-info tasks awaiting collection.
Lists finished Google Shopping product-info tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. A caller that holds its own task `id` can fetch directly and skip this.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/merchant/google/product_info/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Shopping Products Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-merchant-google-products-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/merchant/google/products/task_get/advanced/{id}
The parsed result of a Google Shopping search queued by post_dataforseo_merchant_google_products_submit.
The parsed result of a Google Shopping search queued by `post_dataforseo_merchant_google_products_submit`. Returns `keyword`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `item_types`, `items_count` and `items`, each item carrying `rank_group`, `rank_absolute`, `position`, `xpath`, `title` and nested `items`. Measured at 83 KB for a ten-result search. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. 🔴 The `_fetch_html` twin returns the raw page source instead: measured at 2.6 MB against 82 KB for the parsed version of the same task, a 32x difference. Reach for it only when the parsed result is missing something you can point at.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/merchant/google/products/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Shopping Products HTML Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-merchant-google-products-task-get-html-id
openapi/dataforseo.json GET /dataforseo/merchant/google/products/task_get/html/{id}
The raw HTML of a Google Shopping search queued by post_dataforseo_merchant_google_products_submit.
The raw HTML of a Google Shopping search queued by `post_dataforseo_merchant_google_products_submit`. 🔴 **Measured at 2.6 MB for a ten-result search, against 83 KB for the parsed twin** - one of the largest responses in this provider, and almost never what an agent wants. Use `get_dataforseo_merchant_google_products_fetch` unless you are verifying that the parser dropped something. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/merchant/google/products/task_get/html/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Shopping Products Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-merchant-google-products-tasks-ready
openapi/dataforseo.json GET /dataforseo/merchant/google/products/tasks_ready
Lists finished Google Shopping search tasks awaiting collection.
Lists finished Google Shopping search tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Rarely needed: a caller holds the `id` its own submit returned and can fetch directly. This endpoint answers what is ready across the whole account, which is a different question.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/merchant/google/products/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Shopping Reviews Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-merchant-google-reviews-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/merchant/google/reviews/task_get/advanced/{id}
Get Google Shopping Reviews Results by id
Buyer reviews for one Google Shopping product, from a task queued by `post_dataforseo_merchant_google_reviews_submit`: rating, text, author and date per review. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. For the product's own specification and sellers use `get_dataforseo_merchant_google_product_info_fetch`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/merchant/google/reviews/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Reviews Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-merchant-google-reviews-tasks-ready
openapi/dataforseo.json GET /dataforseo/merchant/google/reviews/tasks_ready
Lists finished Google Shopping review tasks awaiting collection.
Lists finished Google Shopping review tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. A caller that holds its own task `id` can fetch directly and skip this.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/merchant/google/reviews/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Shopping Sellers Ad URL
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-merchant-google-sellers-ad-url
openapi/dataforseo.json GET /dataforseo/merchant/google/sellers/ad_url
Intended to return the full advertisement URL for a seller, with the parameters that seller attached.
Intended to return the full advertisement URL for a seller, with the parameters that seller attached. ⚠️ **Not usable as specified**: this spec declares no parameters for it, and calling it as written answers `status_code` 40400, `Not Found.`, with a null `tasks` array. Upstream expects identifiers this document does not describe. Withheld from the MCP server for that reason - an endpoint that always fails is worse than an absent one. Use the `check_url` on a `get_dataforseo_merchant_google_sellers_fetch` result instead.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/merchant/google/sellers/ad_url" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Shopping Sellers Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-merchant-google-sellers-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/merchant/google/sellers/task_get/advanced/{id}
The sellers offering one Google Shopping product and what each charges, from a task queued by post_dataforseo_merchant_google_sellers_submit.
The sellers offering one Google Shopping product and what each charges, from a task queued by `post_dataforseo_merchant_google_sellers_submit`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. This is the price-comparison view; the product itself is `get_dataforseo_merchant_google_product_info_fetch`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/merchant/google/sellers/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Shopping Sellers Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-merchant-google-sellers-tasks-ready
openapi/dataforseo.json GET /dataforseo/merchant/google/sellers/tasks_ready
Lists finished Google Shopping seller tasks awaiting collection.
Lists finished Google Shopping seller tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. A caller that holds its own task `id` can fetch directly and skip this.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/merchant/google/sellers/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Filters and customizable thresholds at DataForSEO OnPage API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-on-page-available-filters
openapi/dataforseo.json GET /dataforseo/on_page/available_filters
Filters and customizable thresholds at DataForSEO OnPage API
The filterable fields for each endpoint in this family, keyed by endpoint: `resources`, `pages`, `non_indexable`, `links`, `pages_by_resource`, `redirect_chains`, `keyword_density` and `uncrawlable_resources`. Fields are dotted paths such as `meta.title` and `meta.description`. Measured at 10.5 KB, the largest reference response here. Free: upstream cost is 0. Read it before building a `filters` argument - an unknown field is rejected, not ignored.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/on_page/available_filters" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Audits in OnPage Lighthouse API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-on-page-lighthouse-audits
openapi/dataforseo.json GET /dataforseo/on_page/lighthouse/audits
The audit identifiers a Lighthouse run can be narrowed to, under an audits key.
The audit identifiers a Lighthouse run can be narrowed to, under an `audits` key. Measured at 5.3 KB. Free: upstream cost is 0. **Read this before running an audit, not after** - passing `audits` to `post_dataforseo_on_page_lighthouse_live_json` is the difference between a 245 KB report and a targeted one.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/on_page/lighthouse/audits" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Languages for OnPage Lighthouse API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-on-page-lighthouse-languages
openapi/dataforseo.json GET /dataforseo/on_page/lighthouse/languages
The languages a Lighthouse report can be returned in, as language_name and language_code.
The languages a Lighthouse report can be returned in, as `language_name` and `language_code`. Measured at 2.5 KB. Free: upstream cost is 0. Pass one as `language_name` or `language_code` on the audit endpoints - it changes the wording of the findings, not what is measured.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/on_page/lighthouse/languages" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Lighthouse Results by ID
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-on-page-lighthouse-task-get-json-id
openapi/dataforseo.json GET /dataforseo/on_page/lighthouse/task_get/json/{id}
Retrieves a finished Lighthouse audit by the id from post_dataforseo_on_page_lighthouse_submit.
Retrieves a finished Lighthouse audit by the `id` from `post_dataforseo_on_page_lighthouse_submit`. Same report as the live endpoint, and the same 🔴 245 KB of it. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. If the audit is not finished this returns nothing useful; check `get_dataforseo_on_page_lighthouse_ready` first.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/on_page/lighthouse/task_get/json/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get OnPage Lighthouse Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-on-page-lighthouse-tasks-ready
openapi/dataforseo.json GET /dataforseo/on_page/lighthouse/tasks_ready
Lists the Lighthouse audits that have finished and are waiting to be collected.
Lists the Lighthouse audits that have finished and are waiting to be collected. Returns `null` with `status_code` 20000 and `Ok.` when nothing is ready - an empty queue, not an error. Measured at 391 bytes. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Retrieve what it names with `get_dataforseo_on_page_lighthouse_task_get_json`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/on_page/lighthouse/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Lighthouse versions supported in OnPage API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-on-page-lighthouse-versions
openapi/dataforseo.json GET /dataforseo/on_page/lighthouse/versions
The Lighthouse versions available, as availible_versions with version and default - note upstream's spelling of that key.
The Lighthouse versions available, as `availible_versions` with `version` and `default` - note upstream's spelling of that key. Measured at 1.4 KB. Free: upstream cost is 0. Pass one to `version` on the audit endpoints when a run has to be reproducible; otherwise the default moves as Lighthouse releases.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/on_page/lighthouse/versions" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# OnPage API Summary
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-on-page-summary-id
openapi/dataforseo.json GET /dataforseo/on_page/summary/{id}
The state and headline metrics of one crawl, by id.
The state and headline metrics of one crawl, by `id`. Returns `crawl_progress`, `crawl_status`, `crawl_gateway_address`, `crawl_stop_reason`, `domain_info` and `page_metrics`. Measured at 3.1 KB. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. **This is also the way to know a crawl has finished** - poll it until `crawl_progress` is `finished` before reading any other endpoint here, or you will read partial results that look like real ones. 💰 Free upstream: querying a finished crawl costs nothing, only the crawl itself does. This family is the cheapest in the provider.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/on_page/summary/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# On-Page Tasks Ready
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-on-page-tasks-ready
openapi/dataforseo.json GET /dataforseo/on_page/tasks_ready
Lists the crawls that have finished.
Lists the crawls that have finished. Returns `null` with `status_code` 20000 and `Ok.` when none are - an empty queue, not an error. Measured at 690 bytes. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Rarely the tool you want: a caller holds the `id` its own `post_dataforseo_on_page_submit` returned, and `get_dataforseo_on_page_summary` answers whether that particular crawl is done.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/on_page/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Baidu Languages for SERP
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-baidu-languages
openapi/dataforseo.json GET /dataforseo/serp/baidu/languages
The languages the Baidu SERP endpoints accept, as language_name and language_code.
The languages the Baidu SERP endpoints accept, as `language_name` and `language_code`. Free: upstream cost is 0. Reference data - fetch once and reuse. The location list for Baidu is far larger and should not be fetched at all; see its own description.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/baidu/languages" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Baidu Locations for SERP
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-baidu-locations
openapi/dataforseo.json GET /dataforseo/serp/baidu/locations
The locations the Baidu SERP endpoints accept, as location_code, location_name, location_code_parent, country_iso_code and location_type.
The locations the Baidu SERP endpoints accept, as `location_code`, `location_name`, `location_code_parent`, `country_iso_code` and `location_type`. 🔴 **Measured at 42 MB on the YouTube list, and the Google-side catalogues elsewhere in this provider run 40-46 MB** - every city and region on earth. Do not call this from an agent: `location_code` 2840 is the United States, and other codes belong in DataForSEO's documentation. Free upstream, so nothing bills and nothing warns before it lands.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/baidu/locations" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Baidu Organic SERP Advanced Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-baidu-organic-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/serp/baidu/organic/task_get/advanced/{id}
Retrieves a queued Baidu organic result by id.
Retrieves a queued Baidu organic result by `id`. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/baidu/organic/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Baidu Organic HTML Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-baidu-organic-task-get-html-id
openapi/dataforseo.json GET /dataforseo/serp/baidu/organic/task_get/html/{id}
Retrieves a queued Baidu organic result by id as raw HTML.
Retrieves a queued Baidu organic result by `id` as raw HTML. 🔴 Measured at 2.4 MB against 57 KB parsed on the Google organic pair. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/baidu/organic/task_get/html/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Baidu Organic SERP Results by id(regular)
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-baidu-organic-task-get-regular-id
openapi/dataforseo.json GET /dataforseo/serp/baidu/organic/task_get/regular/{id}
Retrieves a queued Baidu organic result by id, lightly parsed - measured at 4.
Retrieves a queued Baidu organic result by `id`, lightly parsed - measured at 4.8 KB against 57 KB for the advanced form. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/baidu/organic/task_get/regular/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Organic SERP Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-baidu-organic-tasks-ready
openapi/dataforseo.json GET /dataforseo/serp/baidu/organic/tasks_ready
Lists finished Baidu organic tasks awaiting collection.
Lists finished Baidu organic tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Rarely needed: a caller holds the `id` its own submit returned and can fetch directly. This answers what is ready across the whole account.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/baidu/organic/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Bing Languages for SERP
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-bing-languages
openapi/dataforseo.json GET /dataforseo/serp/bing/languages
The languages the Bing SERP endpoints accept, as language_name and language_code.
The languages the Bing SERP endpoints accept, as `language_name` and `language_code`. Free: upstream cost is 0. Reference data - fetch once and reuse. The location list for Bing is far larger and should not be fetched at all; see its own description.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/bing/languages" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Bing Locations for SERP
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-bing-locations
openapi/dataforseo.json GET /dataforseo/serp/bing/locations
The locations the Bing SERP endpoints accept, as location_code, location_name, location_code_parent, country_iso_code and location_type.
The locations the Bing SERP endpoints accept, as `location_code`, `location_name`, `location_code_parent`, `country_iso_code` and `location_type`. 🔴 **Measured at 42 MB on the YouTube list, and the Google-side catalogues elsewhere in this provider run 40-46 MB** - every city and region on earth. Do not call this from an agent: `location_code` 2840 is the United States, and other codes belong in DataForSEO's documentation. Free upstream, so nothing bills and nothing warns before it lands.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/bing/locations" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Setting Live ‘Bing Ads Keyword Suggestions for URL’ Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-keywords-data-bing-keyword-suggestions-for-url-live
openapi/dataforseo.json POST /dataforseo/keywords_data/bing/keyword_suggestions_for_url/live
Suggests Bing keywords for one page target, reading the page itself rather than a seed list.
Suggests Bing keywords for one page `target`, reading the page itself rather than a seed list. `exclude_brands` drops brand terms, `language_code` scopes it. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Use it when you have a URL and no keyword list yet; once you have seeds, `post_dataforseo_keywords_bing_kw_for_keywords_live` expands them. The submit and fetch twins of this endpoint do the same work asynchronously, at the same price, for batches too large to wait on.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/keywords_data/bing/keyword_suggestions_for_url/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"target": "...", "language_code": "...", "exclude_brands": "..."}]'
```
# Setting ‘Keyword Suggestions For URL’ Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-keywords-data-bing-keyword-suggestions-for-url-task-post
openapi/dataforseo.json POST /dataforseo/keywords_data/bing/keyword_suggestions_for_url/task_post
Queues a Bing keywords-for-URL task, returning a task id.
Queues a Bing keywords-for-URL task, returning a task `id`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Retrieve with `get_dataforseo_keywords_bing_kw_for_url_fetch`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/keywords_data/bing/keyword_suggestions_for_url/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"target": "...", "language_code": "...", "exclude_brands": "..."}]'
```
# Setting Live ‘Keywords For Keywords’ Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-keywords-data-bing-keywords-for-keywords-live
openapi/dataforseo.json POST /dataforseo/keywords_data/bing/keywords_for_keywords/live
Expands a seed list of keywords into related Bing keywords with volume and competition.
Expands a seed list of `keywords` into related Bing keywords with volume and competition. Measured at $0.09 upstream against $0.012 billed. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Expansion responses in this family run to megabytes on the Google side; assume the same order here and keep the seed list narrow. The Google twin is `post_dataforseo_keywords_gads_kw_for_keywords_live`. The submit and fetch twins of this endpoint do the same work asynchronously, at the same price, for batches too large to wait on.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/keywords_data/bing/keywords_for_keywords/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keywords": "...", "location_name": "...", "location_code": "..."}]'
```
# Setting ‘Keywords For Keywords’ Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-keywords-data-bing-keywords-for-keywords-task-post
openapi/dataforseo.json POST /dataforseo/keywords_data/bing/keywords_for_keywords/task_post
Queues a Bing keyword expansion, returning a task id.
Queues a Bing keyword expansion, returning a task `id`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Retrieve with `get_dataforseo_keywords_bing_kw_for_keywords_fetch`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/keywords_data/bing/keywords_for_keywords/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keywords": "...", "location_name": "...", "location_code": "..."}]'
```
# Setting Live ‘Keywords For Site’ Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-keywords-data-bing-keywords-for-site-live
openapi/dataforseo.json POST /dataforseo/keywords_data/bing/keywords_for_site/live
The Bing keywords a whole site ranks or bids for, from a target domain.
The Bing keywords a whole site ranks or bids for, from a `target` domain. Measured at $0.09 upstream against $0.012 billed. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ The Google equivalent measured 7.2 MB for one site with no way to cap it; assume the same shape here. The Google twin is `post_dataforseo_keywords_gads_kw_for_site_live`. The submit and fetch twins of this endpoint do the same work asynchronously, at the same price, for batches too large to wait on.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/keywords_data/bing/keywords_for_site/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"target": "...", "location_name": "...", "location_code": "..."}]'
```
# Setting ‘Keywords For Site’ Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-keywords-data-bing-keywords-for-site-task-post
openapi/dataforseo.json POST /dataforseo/keywords_data/bing/keywords_for_site/task_post
Queues a Bing keywords-for-site task, returning a task id.
Queues a Bing keywords-for-site task, returning a task `id`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Retrieve with `get_dataforseo_keywords_bing_kw_for_site_fetch`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/keywords_data/bing/keywords_for_site/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"target": "...", "location_name": "...", "location_code": "..."}]'
```
# Setting Live ‘Search Volume’ Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-keywords-data-bing-search-volume-live
openapi/dataforseo.json POST /dataforseo/keywords_data/bing/search_volume/live
Bing search volume for a list of keywords.
Bing search volume for a list of `keywords`. Returns `keyword`, `location_code`, `language_code`, `search_partners`, `device`, `competition`, `cpc`, `search_volume`, `categories` and `monthly_searches` - note `categories`, which the Google equivalent does not return, and no `competition_index`. Measured at 1.3 KB for one keyword, a fraction of the Google response. Measured at $0.09 upstream against $0.012 billed. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The Google twin is `post_dataforseo_keywords_gads_search_volume_live`; run both when the audience is not Google-only. The submit and fetch twins of this endpoint do the same work asynchronously, at the same price, for batches too large to wait on.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/keywords_data/bing/search_volume/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keywords": "...", "location_name": "...", "location_code": "..."}]'
```
# Setting ‘Search Volume’ Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-keywords-data-bing-search-volume-task-post
openapi/dataforseo.json POST /dataforseo/keywords_data/bing/search_volume/task_post
Queues a Bing search-volume task, returning a task id.
Queues a Bing search-volume task, returning a task `id`. Measured at \$0.09 upstream. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Retrieve with `get_dataforseo_keywords_bing_search_volume_fetch`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/keywords_data/bing/search_volume/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keywords": "...", "location_name": "...", "location_code": "..."}]'
```
# Setting Live ‘Bulk Clickstream Search Volume’ Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-keywords-data-clickstream-data-bulk-search-volume-live
openapi/dataforseo.json POST /dataforseo/keywords_data/clickstream_data/bulk_search_volume/live
Clickstream search volume for many keywords in one call, without the language dimension.
Clickstream search volume for many `keywords` in one call, without the language dimension. Measured at 1.3 KB. 🔴 **Measured at $0.18 upstream against $0.012 billed - fifteen times, the widest gap found anywhere in this provider.** One call for many keywords, never one per keyword. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The per-keyword-with-language variant is `post_dataforseo_keywords_clickstream_search_volume_live`. Since the price is per call and not per keyword, this is the one to use for a list.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/keywords_data/clickstream_data/bulk_search_volume/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keywords": "...", "location_name": "...", "location_code": "..."}]'
```
# Setting Live ‘DataForSEO Search Volume’ Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-keywords-data-clickstream-data-dataforseo-search-volume-live
openapi/dataforseo.json POST /dataforseo/keywords_data/clickstream_data/dataforseo_search_volume/live
Search volume derived from clickstream panels rather than the ad platforms, for a list of keywords.
Search volume derived from clickstream panels rather than the ad platforms, for a list of `keywords`. `use_clickstream` toggles the blend. Returns `location_code`, `language_code`, `use_clickstream`, `items_count` and `items`. Measured at 1.3 KB. 🔴 **Measured at $0.18 upstream against $0.012 billed - fifteen times, the widest gap found anywhere in this provider.** One call for many keywords, never one per keyword. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Clickstream volume often disagrees with `post_dataforseo_keywords_gads_search_volume_live`, which is the point: one measures what advertisers are shown, the other what people did.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/keywords_data/clickstream_data/dataforseo_search_volume/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keywords": "...", "location_name": "...", "location_code": "..."}]'
```
# Setting Live ‘Clickstream Global Search Volume’ Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-keywords-data-clickstream-data-global-search-volume-live
openapi/dataforseo.json POST /dataforseo/keywords_data/clickstream_data/global_search_volume/live
Clickstream search volume for keywords worldwide, with no location argument at all - the global total and its per-country breakdown.
Clickstream search volume for `keywords` worldwide, with no location argument at all - the global total and its per-country breakdown. Measured at 1.9 KB. 🔴 **Measured at $0.18 upstream against $0.012 billed - fifteen times, the widest gap found anywhere in this provider.** One call for many keywords, never one per keyword. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Use it to decide which markets are worth a per-location call; the located variant is `post_dataforseo_keywords_clickstream_search_volume_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/keywords_data/clickstream_data/global_search_volume/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keywords": "...", "tag": "..."}]'
```
# Setting Live ‘DataForSEO Trends Demography’ Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-keywords-data-dataforseo-trends-demography-live
openapi/dataforseo.json POST /dataforseo/keywords_data/dataforseo_trends/demography/live
Setting Live ‘DataForSEO Trends Demography’ Tasks
The Google Trends audience behind a keyword: age and gender splits over the same window `post_dataforseo_keywords_trends_explore_live` uses, with the same `type` and date arguments. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Cheap like its sibling. For where rather than who, use `post_dataforseo_keywords_trends_subregion_interests_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/keywords_data/dataforseo_trends/demography/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keywords": "...", "location_name": "...", "location_code": "..."}]'
```
# Setting Live ‘DataForSEO Trends Explore’ Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-keywords-data-dataforseo-trends-explore-live
openapi/dataforseo.json POST /dataforseo/keywords_data/dataforseo_trends/explore/live
Interest over time for up to five keywords, the Google Trends curve.
Interest over time for up to five `keywords`, the Google Trends curve. Returns `keywords`, `type`, `location_code`, `language_code`, `datetime`, `items_count` and `items`. `type` selects web, news, images, youtube or shopping, and `date_from`/`date_to` set the window. Measured at 21.7 KB and **\$0.0012 upstream - by far the best margin in this family**, two orders of magnitude cheaper than the Google Ads endpoints beside it. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Trends gives relative interest, not absolute volume; for counts use `post_dataforseo_keywords_gads_search_volume_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/keywords_data/dataforseo_trends/explore/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keywords": "...", "location_name": "...", "location_code": "..."}]'
```
# Setting Live ‘DataForSEO Trends Merged Data’ Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-keywords-data-dataforseo-trends-merged-data-live
openapi/dataforseo.json POST /dataforseo/keywords_data/dataforseo_trends/merged_data/live
Explore, demography and subregion data for the same keywords in one response, rather than three calls.
Explore, demography and subregion data for the same `keywords` in one response, rather than three calls. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Prefer it when you want the whole picture: the three siblings each cost a call, and this returns what all three would. Correspondingly larger - expect at least the 21.7 KB measured for explore alone.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/keywords_data/dataforseo_trends/merged_data/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keywords": "...", "location_name": "...", "location_code": "..."}]'
```
# Setting Live ‘DataForSEO Trends Subregion Interests’ Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-keywords-data-dataforseo-trends-subregion-interests-live
openapi/dataforseo.json POST /dataforseo/keywords_data/dataforseo_trends/subregion_interests/live
Where interest in a keyword is concentrated, broken down by subregion within location_code.
Where interest in a keyword is concentrated, broken down by subregion within `location_code`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Use it to pick which markets deserve a located search-volume call, which costs \$0.09 each on the Google Ads side. For who rather than where, `post_dataforseo_keywords_trends_demography_live`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/keywords_data/dataforseo_trends/subregion_interests/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keywords": "...", "location_name": "...", "location_code": "..."}]'
```
# Setting ‘Ad Traffic By Keywords’ Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-keywords-data-google-ads-ad-traffic-by-keywords-task-post
openapi/dataforseo.json POST /dataforseo/keywords_data/google_ads/ad_traffic_by_keywords/task_post
Queues a forecast of clicks, impressions and spend for keywords at a given bid and match type, returning a task id.
Queues a forecast of clicks, impressions and spend for `keywords` at a given `bid` and `match` type, returning a task `id`. `search_partners` includes Google's partner network. 🔴 **Measured at $0.09 upstream against the $0.012 billed - a sevenfold loss on every call.** The price does not fall with fewer keywords, so send the whole batch in one call. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. This is the only Google Ads endpoint here with no live variant - forecasting always queues. Retrieve with `get_dataforseo_keywords_gads_ad_traffic_fetch`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/keywords_data/google_ads/ad_traffic_by_keywords/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keywords": "...", "bid": "...", "match": "..."}]'
```
# Setting Live ‘Keywords For Keywords’ Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-keywords-data-google-ads-keywords-for-keywords-live
openapi/dataforseo.json POST /dataforseo/keywords_data/google_ads/keywords_for_keywords/live
Setting Live ‘Keywords For Keywords’ Tasks
Expands a seed list of `keywords` into related Google Ads keywords, each with `keyword`, `location_code`, `language_code`, `search_partners`, `competition`, `competition_index`, `search_volume`, `low_top_of_page_bid`, `high_top_of_page_bid`, `cpc` and `monthly_searches`. 🔴 **Measured at 2.8 MB for a single seed keyword, and this endpoint takes no limit parameter** - the expansion is as large as Google's own, and it lands whole in the agent's context. Pair it with a narrow seed, or use `post_dataforseo_labs_google_keyword_ideas_live`, which does accept a limit. 🔴 **Measured at $0.09 upstream against the $0.012 billed - a sevenfold loss on every call.** The price does not fall with fewer keywords, so send the whole batch in one call. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The submit and fetch twins of this endpoint do the same work asynchronously, at the same price, for batches too large to wait on.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/keywords_data/google_ads/keywords_for_keywords/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keywords": "...", "location_name": "...", "location_code": "..."}]'
```
# Setting ‘Keywords For Keywords’ Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-keywords-data-google-ads-keywords-for-keywords-task-post
openapi/dataforseo.json POST /dataforseo/keywords_data/google_ads/keywords_for_keywords/task_post
Queues a Google Ads keyword expansion, returning a task id.
Queues a Google Ads keyword expansion, returning a task `id`. Accepts a `target` alongside `keywords`, which the live endpoint does not. 🔴 **Measured at $0.09 upstream against the $0.012 billed - a sevenfold loss on every call.** The price does not fall with fewer keywords, so send the whole batch in one call. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. 🔴 The result is the same 2.8 MB order as the live twin - queuing defers the context cost, it does not reduce it. Retrieve with `get_dataforseo_keywords_gads_kw_for_keywords_fetch`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/keywords_data/google_ads/keywords_for_keywords/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keywords": "...", "target": "...", "location_name": "..."}]'
```
# Setting Live ‘Keywords For Site’ Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-keywords-data-google-ads-keywords-for-site-live
openapi/dataforseo.json POST /dataforseo/keywords_data/google_ads/keywords_for_site/live
Setting Live ‘Keywords For Site’ Tasks
The Google Ads keywords a whole site ranks or bids for, from a `target` domain, each with `keyword`, `location_code`, `language_code`, `search_partners`, `competition`, `competition_index`, `search_volume`, `low_top_of_page_bid`, `high_top_of_page_bid`, `cpc` and `monthly_searches`. `target_type` selects the page or the domain. 🔴 **Measured at 7.2 MB for one site - the largest live response in this provider - and there is no limit parameter to cap it.** Treat this as a bulk export, not something to call inside an agent loop; `post_dataforseo_labs_google_kw_for_site_live` answers a similar question with paging. 🔴 **Measured at $0.09 upstream against the $0.012 billed - a sevenfold loss on every call.** The price does not fall with fewer keywords, so send the whole batch in one call. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The submit and fetch twins of this endpoint do the same work asynchronously, at the same price, for batches too large to wait on.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/keywords_data/google_ads/keywords_for_site/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"target": "...", "target_type": "...", "location_name": "..."}]'
```
# Setting ‘Keywords For Site’ Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-keywords-data-google-ads-keywords-for-site-task-post
openapi/dataforseo.json POST /dataforseo/keywords_data/google_ads/keywords_for_site/task_post
Queues a Google Ads keywords-for-site task, returning a task id.
Queues a Google Ads keywords-for-site task, returning a task `id`. 🔴 **Measured at $0.09 upstream against the $0.012 billed - a sevenfold loss on every call.** The price does not fall with fewer keywords, so send the whole batch in one call. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. 🔴 The result is the same 7.2 MB order as the live twin. Retrieve with `get_dataforseo_keywords_gads_kw_for_site_fetch`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/keywords_data/google_ads/keywords_for_site/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"target": "...", "target_type": "...", "location_name": "..."}]'
```
# Setting Live ‘Google Ads Search Volume’ Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-keywords-data-google-ads-search-volume-live
openapi/dataforseo.json POST /dataforseo/keywords_data/google_ads/search_volume/live
Google Ads search volume for a list of keywords.
Google Ads search volume for a list of `keywords`. Returns `keyword`, `location_code`, `language_code`, `search_partners`, `competition`, `competition_index`, `search_volume`, `low_top_of_page_bid`, `high_top_of_page_bid`, `cpc` and `monthly_searches`, plus `spell` when Google corrected the term. Measured at 3.8 KB for one keyword. 🔴 **Measured at $0.09 upstream against the $0.012 billed - a sevenfold loss on every call.** The price does not fall with fewer keywords, so send the whole batch in one call. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. This is the classical search-volume number; for how often people ask an assistant instead, use `post_dataforseo_ai_keyword_volume_live`. The submit and fetch twins of this endpoint do the same work asynchronously, at the same price, for batches too large to wait on.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/keywords_data/google_ads/search_volume/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keywords": "...", "location_name": "...", "location_code": "..."}]'
```
# Setting Amazon ASIN Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-merchant-amazon-asin-task-post
openapi/dataforseo.json POST /dataforseo/merchant/amazon/asin/task_post
Queues a lookup of one Amazon product by asin, returning a task id.
Queues a lookup of one Amazon product by `asin`, returning a task `id`. This family is asynchronous throughout: submit returns a task `id` in `tasks[0].id`, and the fetch tool returns the result once it is ready. 💰 The charge lands on the submit, measured at $0.001 to $0.0015; fetching is free, and re-fetching costs nothing. ⚠️ The Amazon endpoints require a locale-form language - `en_US`, or `English (United States)` - and reject the bare `en` that the Google endpoints accept. Omitting it entirely also answers `Invalid Field: 'language_name'`, so that message means wrong or missing, not just wrong. `get_dataforseo_merchant_amazon_languages` lists the 27 valid pairs. Measured at \$0.0015 to submit. Retrieve with `get_dataforseo_merchant_amazon_asin_fetch`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/merchant/amazon/asin/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"asin": "...", "priority": "...", "location_name": "..."}]'
```
# Setting Amazon Products Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-merchant-amazon-products-task-post
openapi/dataforseo.json POST /dataforseo/merchant/amazon/products/task_post
Queues an Amazon search for a keyword, returning a task id.
Queues an Amazon search for a `keyword`, returning a task `id`. `location_code`, `depth` and `se_domain` shape it. This family is asynchronous throughout: submit returns a task `id` in `tasks[0].id`, and the fetch tool returns the result once it is ready. 💰 The charge lands on the submit, measured at $0.001 to $0.0015; fetching is free, and re-fetching costs nothing. ⚠️ The Amazon endpoints require a locale-form language - `en_US`, or `English (United States)` - and reject the bare `en` that the Google endpoints accept. Omitting it entirely also answers `Invalid Field: 'language_name'`, so that message means wrong or missing, not just wrong. `get_dataforseo_merchant_amazon_languages` lists the 27 valid pairs. Retrieve with `get_dataforseo_merchant_amazon_products_fetch`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/merchant/amazon/products/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "url": "...", "priority": "..."}]'
```
# Setting Amazon Sellers Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-merchant-amazon-sellers-task-post
openapi/dataforseo.json POST /dataforseo/merchant/amazon/sellers/task_post
Queues the list of sellers offering one Amazon product, returning a task id.
Queues the list of sellers offering one Amazon product, returning a task `id`. This family is asynchronous throughout: submit returns a task `id` in `tasks[0].id`, and the fetch tool returns the result once it is ready. 💰 The charge lands on the submit, measured at $0.001 to $0.0015; fetching is free, and re-fetching costs nothing. ⚠️ The Amazon endpoints require a locale-form language - `en_US`, or `English (United States)` - and reject the bare `en` that the Google endpoints accept. Omitting it entirely also answers `Invalid Field: 'language_name'`, so that message means wrong or missing, not just wrong. `get_dataforseo_merchant_amazon_languages` lists the 27 valid pairs. Retrieve with `get_dataforseo_merchant_amazon_sellers_fetch`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/merchant/amazon/sellers/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"asin": "...", "priority": "...", "location_name": "..."}]'
```
# Setting Google Shopping Product Info Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-merchant-google-product-info-task-post
openapi/dataforseo.json POST /dataforseo/merchant/google/product_info/task_post
Queues a lookup of one specific Google Shopping product, returning a task id.
Queues a lookup of one specific Google Shopping product, returning a task `id`. Identify the product with `product_id` and the `gid` or `data_docid` taken from a `get_dataforseo_merchant_google_products_fetch` result. This family is asynchronous throughout: submit returns a task `id` in `tasks[0].id`, and the fetch tool returns the result once it is ready. 💰 The charge lands on the submit, measured at $0.001 to $0.0015; fetching is free, and re-fetching costs nothing. Retrieve with `get_dataforseo_merchant_google_product_info_fetch`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/merchant/google/product_info/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"product_id": "...", "data_docid": "...", "gid": "..."}]'
```
# Setting Google Shopping Products Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-merchant-google-products-task-post
openapi/dataforseo.json POST /dataforseo/merchant/google/products/task_post
Queues a Google Shopping search for a keyword, returning a task id.
Queues a Google Shopping search for a `keyword`, returning a task `id`. `location_code`, `language_code`, `se_domain` and `depth` shape the search. This family is asynchronous throughout: submit returns a task `id` in `tasks[0].id`, and the fetch tool returns the result once it is ready. 💰 The charge lands on the submit, measured at $0.001 to $0.0015; fetching is free, and re-fetching costs nothing. Retrieve with `get_dataforseo_merchant_google_products_fetch`. Measured at \$0.001 to submit.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/merchant/google/products/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "url": "...", "priority": "..."}]'
```
# Setting Google Shopping Reviews Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-merchant-google-reviews-task-post
openapi/dataforseo.json POST /dataforseo/merchant/google/reviews/task_post
Queues the reviews of one Google Shopping product, returning a task id.
Queues the reviews of one Google Shopping product, returning a task `id`. Identify the product with `product_id` plus `gid` or `data_docid` from a products result. This family is asynchronous throughout: submit returns a task `id` in `tasks[0].id`, and the fetch tool returns the result once it is ready. 💰 The charge lands on the submit, measured at $0.001 to $0.0015; fetching is free, and re-fetching costs nothing. Retrieve with `get_dataforseo_merchant_google_reviews_fetch`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/merchant/google/reviews/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"gid": "...", "product_id": "...", "data_docid": "..."}]'
```
# Setting Google Shopping Sellers Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-merchant-google-sellers-task-post
openapi/dataforseo.json POST /dataforseo/merchant/google/sellers/task_post
Queues the list of sellers offering one Google Shopping product, returning a task id.
Queues the list of sellers offering one Google Shopping product, returning a task `id`. This family is asynchronous throughout: submit returns a task `id` in `tasks[0].id`, and the fetch tool returns the result once it is ready. 💰 The charge lands on the submit, measured at $0.001 to $0.0015; fetching is free, and re-fetching costs nothing. Retrieve with `get_dataforseo_merchant_google_sellers_fetch`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/merchant/google/sellers/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"product_id": "...", "data_docid": "...", "gid": "..."}]'
```
# OnPage API Content Parsing
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-on-page-content-parsing
openapi/dataforseo.json POST /dataforseo/on_page/content_parsing
Parses one crawled url into structured content, with markdown_view for a markdown rendering.
Parses one crawled `url` into structured content, with `markdown_view` for a markdown rendering. Measured at 592 bytes. Reads a finished crawl, so it needs the `id` from `post_dataforseo_on_page_submit` and returns `crawl_progress` plus a `crawl_status` of `max_crawl_pages`, `pages_in_queue` and `pages_crawled` - check those before trusting a small result, because a crawl still running simply has less to report. The standalone twin `post_dataforseo_on_page_content_parsing_live` parses any URL without a crawl - prefer that unless the page is already part of one.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/on_page/content_parsing" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"url": "...", "id": "...", "markdown_view": "..."}]'
```
# Live OnPage API Content Parsing
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-on-page-content-parsing-live
openapi/dataforseo.json POST /dataforseo/on_page/content_parsing/live
Parses any url into structured content immediately, with no crawl needed - the only tool in this family that works standalone.
Parses any `url` into structured content immediately, with no crawl needed - the only tool in this family that works standalone. `browser_preset`, `browser_screen_width`, `browser_screen_height` and `custom_user_agent` control the render, `disable_cookie_popup` removes consent overlays, `store_raw_html` keeps the source. Measured at 1.2 KB for example.com and \$0.00015. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. For pages already inside a crawl use `post_dataforseo_on_page_content_parsing`, which is free.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/on_page/content_parsing/live" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"url": "...", "custom_user_agent": "...", "browser_preset": "..."}]'
```
# OnPage API Duplicate Content
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-on-page-duplicate-content
openapi/dataforseo.json POST /dataforseo/on_page/duplicate_content
Pages within a crawl whose content resembles a given url, above a similarity threshold.
Pages within a crawl whose content resembles a given `url`, above a `similarity` threshold. Measured at 606 bytes. Reads a finished crawl, so it needs the `id` from `post_dataforseo_on_page_submit` and returns `crawl_progress` plus a `crawl_status` of `max_crawl_pages`, `pages_in_queue` and `pages_crawled` - check those before trusting a small result, because a crawl still running simply has less to report. For duplicated titles or meta descriptions rather than body text, use `post_dataforseo_on_page_duplicate_tags`. 💰 Free upstream: querying a finished crawl costs nothing, only the crawl itself does. This family is the cheapest in the provider.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/on_page/duplicate_content" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"id": "...", "url": "...", "similarity": "..."}]'
```
# OnPage API Duplicate Tags
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-on-page-duplicate-tags
openapi/dataforseo.json POST /dataforseo/on_page/duplicate_tags
Pages within a crawl sharing a title or meta description.
Pages within a crawl sharing a title or meta description. ⚠️ **`type` accepts exactly `duplicate_title` or `duplicate_description`** - anything else, including the obvious 'title', is rejected with `status_code` 40501 inside an HTTP 200. `accumulator` narrows the result to pages carrying one specific tag value. Returns `total_pages_count`, `pages_count`, `items_count` and `items`. Measured at 850 bytes. Reads a finished crawl, so it needs the `id` from `post_dataforseo_on_page_submit` and returns `crawl_progress` plus a `crawl_status` of `max_crawl_pages`, `pages_in_queue` and `pages_crawled` - check those before trusting a small result, because a crawl still running simply has less to report. For duplicated body content instead, use `post_dataforseo_on_page_duplicate_content`. 💰 Free upstream: querying a finished crawl costs nothing, only the crawl itself does. This family is the cheapest in the provider.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/on_page/duplicate_tags" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"id": "...", "type": "...", "accumulator": "..."}]'
```
# OnPage API Force Stop
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-on-page-force-stop
openapi/dataforseo.json POST /dataforseo/on_page/force_stop
Stops a running crawl by id.
Stops a running crawl by `id`. Returns no results of its own. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. Use it when a crawl was submitted with too high a `max_crawl_pages` and is still consuming budget; what has already been crawled stays queryable through `get_dataforseo_on_page_summary` and the rest of this family.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/on_page/force_stop" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"id": "..."}]'
```
# Keyword Density
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-on-page-keyword-density
openapi/dataforseo.json POST /dataforseo/on_page/keyword_density
Word and phrase frequency across a crawl, with keyword_length choosing n-gram size.
Word and phrase frequency across a crawl, with `keyword_length` choosing n-gram size. Returns `total_items_count`, `items_count` and `items`. Measured at 611 bytes. Reads a finished crawl, so it needs the `id` from `post_dataforseo_on_page_submit` and returns `crawl_progress` plus a `crawl_status` of `max_crawl_pages`, `pages_in_queue` and `pages_crawled` - check those before trusting a small result, because a crawl still running simply has less to report. This describes what a site says about itself; for what the web says about it use `post_dataforseo_backlinks_anchors_live`, and for what people search use `post_dataforseo_keywords_gads_search_volume_live`. 💰 Free upstream: querying a finished crawl costs nothing, only the crawl itself does. This family is the cheapest in the provider.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/on_page/keyword_density" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"id": "...", "keyword_length": "...", "url": "..."}]'
```
# Live OnPage Lighthouse JSON
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-on-page-lighthouse-live-json
openapi/dataforseo.json POST /dataforseo/on_page/lighthouse/live/json
Live OnPage Lighthouse JSON
Runs a Google Lighthouse audit on one `url` and returns the full report: `lighthouseVersion`, `requestedUrl`, `finalUrl`, `fetchTime`, `gatherMode`, `runWarnings` and every audit and category score. `for_mobile` switches the emulated device, `categories` and `audits` narrow the run. Measured at \$0.005. 🔴 **Measured at 245 KB for a single audit of example.com, the largest response in this provider** - a full Lighthouse report is a JSON document, not a metric, and it will dominate an agent's context. Pass `categories` or `audits` to cut it down, and prefer `post_dataforseo_on_page_waterfall` when the question is simply why a page is slow. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/on_page/lighthouse/live/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"url": "...", "for_mobile": "...", "categories": "..."}]'
```
# Setting Lighthouse Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-on-page-lighthouse-task-post
openapi/dataforseo.json POST /dataforseo/on_page/lighthouse/task_post
Queues a Lighthouse audit instead of waiting for one, returning a task id.
Queues a Lighthouse audit instead of waiting for one, returning a task `id`. Use it when the audit would outlast a tool call's patience; retrieve with `get_dataforseo_on_page_lighthouse_task_get_json`, and see what is ready with `get_dataforseo_on_page_lighthouse_ready`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Same 245 KB report at the end, so the context cost is deferred, not avoided - narrow it with `categories` or `audits` here, not later.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/on_page/lighthouse/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"url": "...", "for_mobile": "...", "categories": "..."}]'
```
# Links
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-on-page-links
openapi/dataforseo.json POST /dataforseo/on_page/links
Every link found during a crawl, by id.
Every link found during a crawl, by `id`. Filter with `page_from` and `page_to` to get the links out of or into one page. Returns `total_items_count`, `items_count`, `items`, and a `search_after_token` for paging - use that rather than `offset` past the first pages. Measured at 1.0 KB for one link. Reads a finished crawl, so it needs the `id` from `post_dataforseo_on_page_submit` and returns `crawl_progress` plus a `crawl_status` of `max_crawl_pages`, `pages_in_queue` and `pages_crawled` - check those before trusting a small result, because a crawl still running simply has less to report. 💰 Free upstream: querying a finished crawl costs nothing, only the crawl itself does. This family is the cheapest in the provider.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/on_page/links" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"id": "...", "page_from": "...", "page_to": "..."}]'
```
# OnPage API Microdata
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-on-page-microdata
openapi/dataforseo.json POST /dataforseo/on_page/microdata
Validates the structured data on one crawled url.
Validates the structured data on one crawled `url`. Measured at 493 bytes. Reads a finished crawl, so it needs the `id` from `post_dataforseo_on_page_submit` and returns `crawl_progress` plus a `crawl_status` of `max_crawl_pages`, `pages_in_queue` and `pages_crawled` - check those before trusting a small result, because a crawl still running simply has less to report. ⚠️ The page must have been part of the crawl: asking for a URL that was not returns `status_code` 40406, `Requested page was not submitted for crawling`, inside an HTTP 200. Widen `max_crawl_pages` or set `start_url` on the submit call if the page you want is missing. 💰 Free upstream: querying a finished crawl costs nothing, only the crawl itself does. This family is the cheapest in the provider.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/on_page/microdata" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"id": "...", "url": "...", "tag": "..."}]'
```
# OnPage API Non-indexable Pages
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-on-page-non-indexable
openapi/dataforseo.json POST /dataforseo/on_page/non_indexable
The crawled pages search engines will not index, each with a reason and url.
The crawled pages search engines will not index, each with a `reason` and `url`. Measured at 588 bytes. Reads a finished crawl, so it needs the `id` from `post_dataforseo_on_page_submit` and returns `crawl_progress` plus a `crawl_status` of `max_crawl_pages`, `pages_in_queue` and `pages_crawled` - check those before trusting a small result, because a crawl still running simply has less to report. The reason field is the whole value here - noindex, canonical elsewhere, robots-blocked are very different problems with the same symptom. 💰 Free upstream: querying a finished crawl costs nothing, only the crawl itself does. This family is the cheapest in the provider.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/on_page/non_indexable" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"id": "...", "limit": "...", "offset": "..."}]'
```
# OnPage API Page Screenshot
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-on-page-page-screenshot
openapi/dataforseo.json POST /dataforseo/on_page/page_screenshot
OnPage API Page Screenshot
Renders any `url` and returns a screenshot, with `full_page_screenshot` for the whole scroll height and `browser_screen_width` and `browser_screen_height` setting the viewport. Standalone - no crawl needed. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ An image is a large tool result even before an agent can do anything with it; ask for a screenshot only when the visual is the point, and use `post_dataforseo_on_page_content_parsing_live` when the text is.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/on_page/page_screenshot" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"url": "...", "accept_language": "...", "custom_user_agent": "..."}]'
```
# OnPage API Raw HTML
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-on-page-raw-html
openapi/dataforseo.json POST /dataforseo/on_page/raw_html
The stored HTML of one crawled url.
The stored HTML of one crawled `url`. Measured at 578 bytes for a small page. Reads a finished crawl, so it needs the `id` from `post_dataforseo_on_page_submit` and returns `crawl_progress` plus a `crawl_status` of `max_crawl_pages`, `pages_in_queue` and `pages_crawled` - check those before trusting a small result, because a crawl still running simply has less to report. ⚠️ Only available if the crawl was submitted with `store_raw_html` set - otherwise there is nothing to return, and the crawl cannot be amended after the fact. For parsed content rather than source use `post_dataforseo_on_page_content_parsing`. 💰 Free upstream: querying a finished crawl costs nothing, only the crawl itself does. This family is the cheapest in the provider.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/on_page/raw_html" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"id": "...", "url": "..."}]'
```
# OnPage API Resources
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-on-page-resources
openapi/dataforseo.json POST /dataforseo/on_page/resources
The non-page assets a crawl found - images, scripts, stylesheets - with their status codes and sizes.
The non-page assets a crawl found - images, scripts, stylesheets - with their status codes and sizes. Pages with `search_after_token`. Measured at 625 bytes for one resource. Reads a finished crawl, so it needs the `id` from `post_dataforseo_on_page_submit` and returns `crawl_progress` plus a `crawl_status` of `max_crawl_pages`, `pages_in_queue` and `pages_crawled` - check those before trusting a small result, because a crawl still running simply has less to report. For the assets the crawler could not reach at all use `post_dataforseo_on_page_uncrawlable_resources`. 💰 Free upstream: querying a finished crawl costs nothing, only the crawl itself does. This family is the cheapest in the provider.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/on_page/resources" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"id": "...", "url": "...", "limit": "..."}]'
```
# Setting OnPage Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-on-page-task-post
openapi/dataforseo.json POST /dataforseo/on_page/task_post
Starts a crawl of target and returns a task id in tasks[0].
Starts a crawl of `target` and returns a task `id` in `tasks[0].id` - **that id is the handle every other tool in this family needs**, so keep it. `max_crawl_pages` caps the crawl, `start_url`, `max_crawl_depth`, `priority_urls` and `crawl_delay` shape it, and `store_raw_html` decides whether `post_dataforseo_on_page_raw_html` will have anything to serve later. Measured at \$0.00015 to submit a one-page crawl. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ This is not the usual submit/fetch pair: the crawl is a session that a dozen other tools then query by id. Poll `get_dataforseo_on_page_summary` until `crawl_progress` reads `finished`; a one-page crawl of example.com took well under a minute.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/on_page/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"target": "...", "max_crawl_pages": "...", "start_url": "..."}]'
```
# Uncrawlable Resources
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-on-page-uncrawlable-resources
openapi/dataforseo.json POST /dataforseo/on_page/uncrawlable_resources
The resources a crawl could not fetch, and why.
The resources a crawl could not fetch, and why. Returns `total_items_count`, `items_count` and `items`. Measured at 621 bytes. Reads a finished crawl, so it needs the `id` from `post_dataforseo_on_page_submit` and returns `crawl_progress` plus a `crawl_status` of `max_crawl_pages`, `pages_in_queue` and `pages_crawled` - check those before trusting a small result, because a crawl still running simply has less to report. These are the broken references a site owner would want first; the ones that did load are in `post_dataforseo_on_page_resources`. 💰 Free upstream: querying a finished crawl costs nothing, only the crawl itself does. This family is the cheapest in the provider.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/on_page/uncrawlable_resources" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"id": "...", "limit": "...", "offset": "..."}]'
```
# OnPage API Waterfall
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-on-page-waterfall
openapi/dataforseo.json POST /dataforseo/on_page/waterfall
The load timeline of one crawled url - what was requested, in what order, and how long each took.
The load timeline of one crawled `url` - what was requested, in what order, and how long each took. Measured at 835 bytes. Reads a finished crawl, so it needs the `id` from `post_dataforseo_on_page_submit` and returns `crawl_progress` plus a `crawl_status` of `max_crawl_pages`, `pages_in_queue` and `pages_crawled` - check those before trusting a small result, because a crawl still running simply has less to report. Use it to explain a slow page; for a scored performance audit instead use `post_dataforseo_on_page_lighthouse_live_json`. 💰 Free upstream: querying a finished crawl costs nothing, only the crawl itself does. This family is the cheapest in the provider.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/on_page/waterfall" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"id": "...", "url": "...", "tag": "..."}]'
```
# SERP API AI Summary
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-ai-summary
openapi/dataforseo.json POST /dataforseo/serp/ai_summary
Returns the AI overview Google shows above the results for a query on Google.
Returns the AI overview Google shows above the results for a query on Google. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/ai_summary" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"task_id": "...", "prompt": "...", "support_extra": "..."}]'
```
# Setting Baidu Organic SERP Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-baidu-organic-task-post
openapi/dataforseo.json POST /dataforseo/serp/baidu/organic/task_post
Queues the ranked results for a keyword on Baidu, returning a task id in tasks[0].
Queues the ranked results for a keyword on Baidu, returning a task `id` in `tasks[0].id`. The charge lands here; fetching is free, including re-fetching. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The live twin answers immediately and is simpler for a single query; queue when the batch would outlast a tool call.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/baidu/organic/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Get Bing Organic SERP Results by id(advanced)
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-bing-organic-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/serp/bing/organic/task_get/advanced/{id}
Retrieves a queued Bing organic result by id.
Retrieves a queued Bing organic result by `id`. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/bing/organic/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Bing Organic HTML Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-bing-organic-task-get-html-id
openapi/dataforseo.json GET /dataforseo/serp/bing/organic/task_get/html/{id}
Retrieves a queued Bing organic result by id as raw HTML.
Retrieves a queued Bing organic result by `id` as raw HTML. 🔴 Measured at 2.4 MB against 57 KB parsed on the Google organic pair. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/bing/organic/task_get/html/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Bing Organic SERP Results by id(regular)
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-bing-organic-task-get-regular-id
openapi/dataforseo.json GET /dataforseo/serp/bing/organic/task_get/regular/{id}
Retrieves a queued Bing organic result by id, lightly parsed - measured at 4.
Retrieves a queued Bing organic result by `id`, lightly parsed - measured at 4.8 KB against 57 KB for the advanced form. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/bing/organic/task_get/regular/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Organic SERP Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-bing-organic-tasks-ready
openapi/dataforseo.json GET /dataforseo/serp/bing/organic/tasks_ready
Lists finished Bing organic tasks awaiting collection.
Lists finished Bing organic tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Rarely needed: a caller holds the `id` its own submit returned and can fetch directly. This answers what is ready across the whole account.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/bing/organic/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Google Ads Advertisers Locations for SERP API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-ads-advertisers-locations
openapi/dataforseo.json GET /dataforseo/serp/google/ads_advertisers/locations
Returns the advertisers matching a query in Google's ads transparency data on Google.
Returns the advertisers matching a query in Google's ads transparency data on Google. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/ads_advertisers/locations" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Ads Advertisers Advanced Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-ads-advertisers-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/serp/google/ads_advertisers/task_get/advanced/{id}
Retrieves a queued Google ads advertisers result by id.
Retrieves a queued Google ads advertisers result by `id`. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/ads_advertisers/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Ads Advertisers SERP Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-ads-advertisers-tasks-ready
openapi/dataforseo.json GET /dataforseo/serp/google/ads_advertisers/tasks_ready
Lists finished Google ads advertisers tasks awaiting collection.
Lists finished Google ads advertisers tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Rarely needed: a caller holds the `id` its own submit returned and can fetch directly. This answers what is ready across the whole account.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/ads_advertisers/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Google Ads Search Locations for SERP API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-ads-search-locations
openapi/dataforseo.json GET /dataforseo/serp/google/ads_search/locations
Returns the ads running against a keyword on Google.
Returns the ads running against a keyword on Google. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/ads_search/locations" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Ads Search Advanced Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-ads-search-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/serp/google/ads_search/task_get/advanced/{id}
Retrieves a queued Google ads search result by id.
Retrieves a queued Google ads search result by `id`. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/ads_search/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Ads Search SERP Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-ads-search-tasks-ready
openapi/dataforseo.json GET /dataforseo/serp/google/ads_search/tasks_ready
Lists finished Google ads search tasks awaiting collection.
Lists finished Google ads search tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Rarely needed: a caller holds the `id` its own submit returned and can fetch directly. This answers what is ready across the whole account.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/ads_search/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Google AI Mode Languages for SERP
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-ai-mode-languages
openapi/dataforseo.json GET /dataforseo/serp/google/ai_mode/languages
Returns Google's AI Mode answer for a query, with the sources it cites on Google.
Returns Google's AI Mode answer for a query, with the sources it cites on Google. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/ai_mode/languages" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google AI Mode SERP Advanced Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-ai-mode-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/serp/google/ai_mode/task_get/advanced/{id}
Retrieves a queued Google ai mode result by id.
Retrieves a queued Google ai mode result by `id`. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/ai_mode/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Ai Mode HTML Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-ai-mode-task-get-html-id
openapi/dataforseo.json GET /dataforseo/serp/google/ai_mode/task_get/html/{id}
Retrieves a queued Google ai mode result by id as raw HTML.
Retrieves a queued Google ai mode result by `id` as raw HTML. 🔴 Measured at 2.4 MB against 57 KB parsed on the Google organic pair. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/ai_mode/task_get/html/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Ai Mode SERP Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-ai-mode-tasks-ready
openapi/dataforseo.json GET /dataforseo/serp/google/ai_mode/tasks_ready
Lists finished Google ai mode tasks awaiting collection.
Lists finished Google ai mode tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Rarely needed: a caller holds the `id` its own submit returned and can fetch directly. This answers what is ready across the whole account.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/ai_mode/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Autocomplete Advanced Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-autocomplete-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/serp/google/autocomplete/task_get/advanced/{id}
Retrieves a queued Google autocomplete result by id.
Retrieves a queued Google autocomplete result by `id`. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/autocomplete/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Autocomplete SERP Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-autocomplete-tasks-ready
openapi/dataforseo.json GET /dataforseo/serp/google/autocomplete/tasks_ready
Lists finished Google autocomplete tasks awaiting collection.
Lists finished Google autocomplete tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Rarely needed: a caller holds the `id` its own submit returned and can fetch directly. This answers what is ready across the whole account.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/autocomplete/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Dataset Info Advanced Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-dataset-info-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/serp/google/dataset_info/task_get/advanced/{id}
Retrieves a queued Google dataset info result by id.
Retrieves a queued Google dataset info result by `id`. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/dataset_info/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Dataset Info SERP Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-dataset-info-tasks-ready
openapi/dataforseo.json GET /dataforseo/serp/google/dataset_info/tasks_ready
Lists finished Google dataset info tasks awaiting collection.
Lists finished Google dataset info tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Rarely needed: a caller holds the `id` its own submit returned and can fetch directly. This answers what is ready across the whole account.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/dataset_info/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Dataset Search Advanced Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-dataset-search-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/serp/google/dataset_search/task_get/advanced/{id}
Retrieves a queued Google dataset search result by id.
Retrieves a queued Google dataset search result by `id`. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/dataset_search/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Dataset Search SERP Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-dataset-search-tasks-ready
openapi/dataforseo.json GET /dataforseo/serp/google/dataset_search/tasks_ready
Lists finished Google dataset search tasks awaiting collection.
Lists finished Google dataset search tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Rarely needed: a caller holds the `id` its own submit returned and can fetch directly. This answers what is ready across the whole account.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/dataset_search/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Google Events Locations for SERP API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-events-locations
openapi/dataforseo.json GET /dataforseo/serp/google/events/locations
Returns the events Google surfaces for a query on Google.
Returns the events Google surfaces for a query on Google. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/events/locations" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Events SERP Advanced Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-events-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/serp/google/events/task_get/advanced/{id}
Retrieves a queued Google events result by id.
Retrieves a queued Google events result by `id`. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/events/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Events SERP Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-events-tasks-ready
openapi/dataforseo.json GET /dataforseo/serp/google/events/tasks_ready
Lists finished Google events tasks awaiting collection.
Lists finished Google events tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Rarely needed: a caller holds the `id` its own submit returned and can fetch directly. This answers what is ready across the whole account.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/events/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Finance Explore Advanced Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-finance-explore-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/serp/google/finance_explore/task_get/advanced/{id}
Retrieves a queued Google finance explore result by id.
Retrieves a queued Google finance explore result by `id`. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/finance_explore/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Finance Explore HTML Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-finance-explore-task-get-html-id
openapi/dataforseo.json GET /dataforseo/serp/google/finance_explore/task_get/html/{id}
Retrieves a queued Google finance explore result by id as raw HTML.
Retrieves a queued Google finance explore result by `id` as raw HTML. 🔴 Measured at 2.4 MB against 57 KB parsed on the Google organic pair. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/finance_explore/task_get/html/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Finance Explore SERP Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-finance-explore-tasks-ready
openapi/dataforseo.json GET /dataforseo/serp/google/finance_explore/tasks_ready
Lists finished Google finance explore tasks awaiting collection.
Lists finished Google finance explore tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Rarely needed: a caller holds the `id` its own submit returned and can fetch directly. This answers what is ready across the whole account.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/finance_explore/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Finance Markets Advanced Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-finance-markets-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/serp/google/finance_markets/task_get/advanced/{id}
Retrieves a queued Google finance markets result by id.
Retrieves a queued Google finance markets result by `id`. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/finance_markets/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Finance Markets HTML Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-finance-markets-task-get-html-id
openapi/dataforseo.json GET /dataforseo/serp/google/finance_markets/task_get/html/{id}
Retrieves a queued Google finance markets result by id as raw HTML.
Retrieves a queued Google finance markets result by `id` as raw HTML. 🔴 Measured at 2.4 MB against 57 KB parsed on the Google organic pair. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/finance_markets/task_get/html/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Finance Markets SERP Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-finance-markets-tasks-ready
openapi/dataforseo.json GET /dataforseo/serp/google/finance_markets/tasks_ready
Lists finished Google finance markets tasks awaiting collection.
Lists finished Google finance markets tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Rarely needed: a caller holds the `id` its own submit returned and can fetch directly. This answers what is ready across the whole account.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/finance_markets/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Finance Quote Advanced Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-finance-quote-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/serp/google/finance_quote/task_get/advanced/{id}
Retrieves a queued Google finance quote result by id.
Retrieves a queued Google finance quote result by `id`. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/finance_quote/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Finance Quote HTML Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-finance-quote-task-get-html-id
openapi/dataforseo.json GET /dataforseo/serp/google/finance_quote/task_get/html/{id}
Retrieves a queued Google finance quote result by id as raw HTML.
Retrieves a queued Google finance quote result by `id` as raw HTML. 🔴 Measured at 2.4 MB against 57 KB parsed on the Google organic pair. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/finance_quote/task_get/html/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Finance Quote SERP Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-finance-quote-tasks-ready
openapi/dataforseo.json GET /dataforseo/serp/google/finance_quote/tasks_ready
Lists finished Google finance quote tasks awaiting collection.
Lists finished Google finance quote tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Rarely needed: a caller holds the `id` its own submit returned and can fetch directly. This answers what is ready across the whole account.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/finance_quote/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Finance Ticker Search Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-finance-ticker-search-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/serp/google/finance_ticker_search/task_get/advanced/{id}
Retrieves a queued Google finance ticker search result by id.
Retrieves a queued Google finance ticker search result by `id`. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/finance_ticker_search/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Finance Ticker Search SERP Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-finance-ticker-search-tasks-ready
openapi/dataforseo.json GET /dataforseo/serp/google/finance_ticker_search/tasks_ready
Lists finished Google finance ticker search tasks awaiting collection.
Lists finished Google finance ticker search tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Rarely needed: a caller holds the `id` its own submit returned and can fetch directly. This answers what is ready across the whole account.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/finance_ticker_search/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Images HTML Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-images-task-get-html-id
openapi/dataforseo.json GET /dataforseo/serp/google/images/task_get/html/{id}
Retrieves a queued Google images result by id as raw HTML.
Retrieves a queued Google images result by `id` as raw HTML. 🔴 Measured at 2.4 MB against 57 KB parsed on the Google organic pair. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/images/task_get/html/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Images SERP Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-images-task-get-regular-id
openapi/dataforseo.json GET /dataforseo/serp/google/images/task_get/regular/{id}
Retrieves a queued Google images result by id, lightly parsed - measured at 4.
Retrieves a queued Google images result by `id`, lightly parsed - measured at 4.8 KB against 57 KB for the advanced form. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/images/task_get/regular/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Images SERP Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-images-tasks-ready
openapi/dataforseo.json GET /dataforseo/serp/google/images/tasks_ready
Lists finished Google images tasks awaiting collection.
Lists finished Google images tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Rarely needed: a caller holds the `id` its own submit returned and can fetch directly. This answers what is ready across the whole account.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/images/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Google Jobs Locations for SERP API
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-jobs-locations
openapi/dataforseo.json GET /dataforseo/serp/google/jobs/locations
Returns the job listings Google surfaces for a query on Google.
Returns the job listings Google surfaces for a query on Google. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/jobs/locations" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Jobs Advanced Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-jobs-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/serp/google/jobs/task_get/advanced/{id}
Retrieves a queued Google jobs result by id.
Retrieves a queued Google jobs result by `id`. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/jobs/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Jobs HTML Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-jobs-task-get-html-id
openapi/dataforseo.json GET /dataforseo/serp/google/jobs/task_get/html/{id}
Retrieves a queued Google jobs result by id as raw HTML.
Retrieves a queued Google jobs result by `id` as raw HTML. 🔴 Measured at 2.4 MB against 57 KB parsed on the Google organic pair. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/jobs/task_get/html/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Jobs SERP Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-jobs-tasks-ready
openapi/dataforseo.json GET /dataforseo/serp/google/jobs/tasks_ready
Lists finished Google jobs tasks awaiting collection.
Lists finished Google jobs tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Rarely needed: a caller holds the `id` its own submit returned and can fetch directly. This answers what is ready across the whole account.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/jobs/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Local Finder SERP Advanced Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-local-finder-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/serp/google/local_finder/task_get/advanced/{id}
Retrieves a queued Google local finder result by id.
Retrieves a queued Google local finder result by `id`. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/local_finder/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Local Finder HTML Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-local-finder-task-get-html-id
openapi/dataforseo.json GET /dataforseo/serp/google/local_finder/task_get/html/{id}
Retrieves a queued Google local finder result by id as raw HTML.
Retrieves a queued Google local finder result by `id` as raw HTML. 🔴 Measured at 2.4 MB against 57 KB parsed on the Google organic pair. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/local_finder/task_get/html/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Local Finder SERP Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-local-finder-tasks-ready
openapi/dataforseo.json GET /dataforseo/serp/google/local_finder/tasks_ready
Lists finished Google local finder tasks awaiting collection.
Lists finished Google local finder tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Rarely needed: a caller holds the `id` its own submit returned and can fetch directly. This answers what is ready across the whole account.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/local_finder/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Maps SERP Advanced Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-maps-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/serp/google/maps/task_get/advanced/{id}
Retrieves a queued Google maps result by id.
Retrieves a queued Google maps result by `id`. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/maps/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Maps SERP Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-maps-tasks-ready
openapi/dataforseo.json GET /dataforseo/serp/google/maps/tasks_ready
Lists finished Google maps tasks awaiting collection.
Lists finished Google maps tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Rarely needed: a caller holds the `id` its own submit returned and can fetch directly. This answers what is ready across the whole account.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/maps/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google News SERP Advanced Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-news-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/serp/google/news/task_get/advanced/{id}
Retrieves a queued Google news result by id.
Retrieves a queued Google news result by `id`. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/news/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google News HTML Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-news-task-get-html-id
openapi/dataforseo.json GET /dataforseo/serp/google/news/task_get/html/{id}
Retrieves a queued Google news result by id as raw HTML.
Retrieves a queued Google news result by `id` as raw HTML. 🔴 Measured at 2.4 MB against 57 KB parsed on the Google organic pair. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/news/task_get/html/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get News SERP Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-news-tasks-ready
openapi/dataforseo.json GET /dataforseo/serp/google/news/tasks_ready
Lists finished Google news tasks awaiting collection.
Lists finished Google news tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Rarely needed: a caller holds the `id` its own submit returned and can fetch directly. This answers what is ready across the whole account.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/news/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Organic SERP Advanced Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-organic-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/serp/google/organic/task_get/advanced/{id}
Retrieves a queued Google organic result by id.
Retrieves a queued Google organic result by `id`. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/organic/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Organic HTML Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-organic-task-get-html-id
openapi/dataforseo.json GET /dataforseo/serp/google/organic/task_get/html/{id}
Retrieves a queued Google organic result by id as raw HTML.
Retrieves a queued Google organic result by `id` as raw HTML. 🔴 Measured at 2.4 MB against 57 KB parsed on the Google organic pair. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/organic/task_get/html/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Organic SERP Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-organic-task-get-regular-id
openapi/dataforseo.json GET /dataforseo/serp/google/organic/task_get/regular/{id}
Retrieves a queued Google organic result by id, lightly parsed - measured at 4.
Retrieves a queued Google organic result by `id`, lightly parsed - measured at 4.8 KB against 57 KB for the advanced form. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/organic/task_get/regular/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Organic SERP Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-organic-tasks-ready
openapi/dataforseo.json GET /dataforseo/serp/google/organic/tasks_ready
Lists finished Google organic tasks awaiting collection.
Lists finished Google organic tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Rarely needed: a caller holds the `id` its own submit returned and can fetch directly. This answers what is ready across the whole account.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/organic/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Google Search By Image SERP Advanced Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-search-by-image-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/serp/google/search_by_image/task_get/advanced/{id}
Retrieves a queued Google search by image result by id.
Retrieves a queued Google search by image result by `id`. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/search_by_image/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Live Bing Organic SERP Advanced
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-bing-organic-live-advanced
openapi/dataforseo.json POST /dataforseo/serp/bing/organic/live/advanced
Returns the ranked results for a keyword on Bing, synchronously.
Returns the ranked results for a keyword on Bing, synchronously. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Measured at 57 KB for a ten-result Google query. ⚠️ Three result depths exist for the same query and differ by two orders of magnitude: `regular` measured 4.8 KB, `advanced` 57 KB, and `html` **2.4 MB**. `advanced` is the default choice; take `regular` when only the ranked list matters and `html` only to check what the parser dropped. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/bing/organic/live/advanced" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Live Bing Organic SERP HTML
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-bing-organic-live-html
openapi/dataforseo.json POST /dataforseo/serp/bing/organic/live/html
Returns the ranked results for a keyword on Bing, synchronously.
Returns the ranked results for a keyword on Bing, synchronously. Raw page source rather than parsed results. 🔴 **Measured at 2.4 MB for a ten-result Google query, against 57 KB parsed** - take it only to check what the parser dropped. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/bing/organic/live/html" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Live Bing Organic SERP Regular
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-bing-organic-live-regular
openapi/dataforseo.json POST /dataforseo/serp/bing/organic/live/regular
Returns the ranked results for a keyword on Bing, synchronously.
Returns the ranked results for a keyword on Bing, synchronously. The lighter parse: measured at 4.8 KB against 57 KB for `advanced`, carrying the ranked list without the surrounding SERP features. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/bing/organic/live/regular" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Setting Bing Organic SERP Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-bing-organic-task-post
openapi/dataforseo.json POST /dataforseo/serp/bing/organic/task_post
Queues the ranked results for a keyword on Bing, returning a task id in tasks[0].
Queues the ranked results for a keyword on Bing, returning a task `id` in `tasks[0].id`. The charge lands here; fetching is free, including re-fetching. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The live twin answers immediately and is simpler for a single query; queue when the batch would outlast a tool call.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/bing/organic/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Live Google Ads Advertisers Advanced
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-ads-advertisers-live-advanced
openapi/dataforseo.json POST /dataforseo/serp/google/ads_advertisers/live/advanced
Returns the advertisers matching a query in Google's ads transparency data on Google, synchronously.
Returns the advertisers matching a query in Google's ads transparency data on Google, synchronously. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Measured at 57 KB for a ten-result Google query. ⚠️ Three result depths exist for the same query and differ by two orders of magnitude: `regular` measured 4.8 KB, `advanced` 57 KB, and `html` **2.4 MB**. `advanced` is the default choice; take `regular` when only the ranked list matters and `html` only to check what the parser dropped. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/ads_advertisers/live/advanced" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Setting Google Ads Advertisers SERP Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-ads-advertisers-task-post
openapi/dataforseo.json POST /dataforseo/serp/google/ads_advertisers/task_post
Queues the advertisers matching a query in Google's ads transparency data on Google, returning a task id in tasks[0].
Queues the advertisers matching a query in Google's ads transparency data on Google, returning a task `id` in `tasks[0].id`. The charge lands here; fetching is free, including re-fetching. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The live twin answers immediately and is simpler for a single query; queue when the batch would outlast a tool call.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/ads_advertisers/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Live Google Ads Search Advanced
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-ads-search-live-advanced
openapi/dataforseo.json POST /dataforseo/serp/google/ads_search/live/advanced
Returns the ads running against a keyword on Google, synchronously.
Returns the ads running against a keyword on Google, synchronously. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Measured at 57 KB for a ten-result Google query. ⚠️ Three result depths exist for the same query and differ by two orders of magnitude: `regular` measured 4.8 KB, `advanced` 57 KB, and `html` **2.4 MB**. `advanced` is the default choice; take `regular` when only the ranked list matters and `html` only to check what the parser dropped. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/ads_search/live/advanced" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"advertiser_ids": "...", "target": "...", "location_name": "..."}]'
```
# Setting Google Ads Search SERP Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-ads-search-task-post
openapi/dataforseo.json POST /dataforseo/serp/google/ads_search/task_post
Queues the ads running against a keyword on Google, returning a task id in tasks[0].
Queues the ads running against a keyword on Google, returning a task `id` in `tasks[0].id`. The charge lands here; fetching is free, including re-fetching. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The live twin answers immediately and is simpler for a single query; queue when the batch would outlast a tool call.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/ads_search/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"advertiser_ids": "...", "target": "...", "location_name": "..."}]'
```
# Live Google AI Mode SERP
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-ai-mode-live-advanced
openapi/dataforseo.json POST /dataforseo/serp/google/ai_mode/live/advanced
Returns Google's AI Mode answer for a query, with the sources it cites on Google, synchronously.
Returns Google's AI Mode answer for a query, with the sources it cites on Google, synchronously. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Measured at 57 KB for a ten-result Google query. ⚠️ Three result depths exist for the same query and differ by two orders of magnitude: `regular` measured 4.8 KB, `advanced` 57 KB, and `html` **2.4 MB**. `advanced` is the default choice; take `regular` when only the ranked list matters and `html` only to check what the parser dropped. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/ai_mode/live/advanced" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_code": "...", "location_name": "..."}]'
```
# Live Google Ai Mode SERP HTML
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-ai-mode-live-html
openapi/dataforseo.json POST /dataforseo/serp/google/ai_mode/live/html
Returns Google's AI Mode answer for a query, with the sources it cites on Google, synchronously.
Returns Google's AI Mode answer for a query, with the sources it cites on Google, synchronously. Raw page source rather than parsed results. 🔴 **Measured at 2.4 MB for a ten-result Google query, against 57 KB parsed** - take it only to check what the parser dropped. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/ai_mode/live/html" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Setting Google AI Mode SERP Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-ai-mode-task-post
openapi/dataforseo.json POST /dataforseo/serp/google/ai_mode/task_post
Queues Google's AI Mode answer for a query, with the sources it cites on Google, returning a task id in tasks[0].
Queues Google's AI Mode answer for a query, with the sources it cites on Google, returning a task `id` in `tasks[0].id`. The charge lands here; fetching is free, including re-fetching. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The live twin answers immediately and is simpler for a single query; queue when the batch would outlast a tool call.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/ai_mode/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_code": "...", "location_name": "..."}]'
```
# Live Google Autocomplete Advanced
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-autocomplete-live-advanced
openapi/dataforseo.json POST /dataforseo/serp/google/autocomplete/live/advanced
Returns the suggestions Google offers as a query is typed on Google, synchronously.
Returns the suggestions Google offers as a query is typed on Google, synchronously. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Measured at 57 KB for a ten-result Google query. ⚠️ Three result depths exist for the same query and differ by two orders of magnitude: `regular` measured 4.8 KB, `advanced` 57 KB, and `html` **2.4 MB**. `advanced` is the default choice; take `regular` when only the ranked list matters and `html` only to check what the parser dropped. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/autocomplete/live/advanced" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "client": "...", "location_name": "..."}]'
```
# Setting Google Autocomplete Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-autocomplete-task-post
openapi/dataforseo.json POST /dataforseo/serp/google/autocomplete/task_post
Queues the suggestions Google offers as a query is typed on Google, returning a task id in tasks[0].
Queues the suggestions Google offers as a query is typed on Google, returning a task `id` in `tasks[0].id`. The charge lands here; fetching is free, including re-fetching. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The live twin answers immediately and is simpler for a single query; queue when the batch would outlast a tool call.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/autocomplete/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "client": "...", "location_name": "..."}]'
```
# Live Google Dataset Info Advanced
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-dataset-info-live-advanced
openapi/dataforseo.json POST /dataforseo/serp/google/dataset_info/live/advanced
Returns one dataset's record in Google Dataset Search on Google, synchronously.
Returns one dataset's record in Google Dataset Search on Google, synchronously. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Measured at 57 KB for a ten-result Google query. ⚠️ Three result depths exist for the same query and differ by two orders of magnitude: `regular` measured 4.8 KB, `advanced` 57 KB, and `html` **2.4 MB**. `advanced` is the default choice; take `regular` when only the ranked list matters and `html` only to check what the parser dropped. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/dataset_info/live/advanced" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"dataset_id": "...", "language_name": "...", "language_code": "..."}]'
```
# Setting Google Dataset Info Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-dataset-info-task-post
openapi/dataforseo.json POST /dataforseo/serp/google/dataset_info/task_post
Queues one dataset's record in Google Dataset Search on Google, returning a task id in tasks[0].
Queues one dataset's record in Google Dataset Search on Google, returning a task `id` in `tasks[0].id`. The charge lands here; fetching is free, including re-fetching. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The live twin answers immediately and is simpler for a single query; queue when the batch would outlast a tool call.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/dataset_info/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"dataset_id": "...", "language_name": "...", "language_code": "..."}]'
```
# Live Google Dataset Search Advanced
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-dataset-search-live-advanced
openapi/dataforseo.json POST /dataforseo/serp/google/dataset_search/live/advanced
Returns datasets matching a query in Google Dataset Search on Google, synchronously.
Returns datasets matching a query in Google Dataset Search on Google, synchronously. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Measured at 57 KB for a ten-result Google query. ⚠️ Three result depths exist for the same query and differ by two orders of magnitude: `regular` measured 4.8 KB, `advanced` 57 KB, and `html` **2.4 MB**. `advanced` is the default choice; take `regular` when only the ranked list matters and `html` only to check what the parser dropped. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/dataset_search/live/advanced" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "language_name": "...", "language_code": "..."}]'
```
# Setting Google Dataset Search Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-dataset-search-task-post
openapi/dataforseo.json POST /dataforseo/serp/google/dataset_search/task_post
Queues datasets matching a query in Google Dataset Search on Google, returning a task id in tasks[0].
Queues datasets matching a query in Google Dataset Search on Google, returning a task `id` in `tasks[0].id`. The charge lands here; fetching is free, including re-fetching. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The live twin answers immediately and is simpler for a single query; queue when the batch would outlast a tool call.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/dataset_search/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "language_name": "...", "language_code": "..."}]'
```
# Live Google Events SERP Advanced
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-events-live-advanced
openapi/dataforseo.json POST /dataforseo/serp/google/events/live/advanced
Returns the events Google surfaces for a query on Google, synchronously.
Returns the events Google surfaces for a query on Google, synchronously. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Measured at 57 KB for a ten-result Google query. ⚠️ Three result depths exist for the same query and differ by two orders of magnitude: `regular` measured 4.8 KB, `advanced` 57 KB, and `html` **2.4 MB**. `advanced` is the default choice; take `regular` when only the ranked list matters and `html` only to check what the parser dropped. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/events/live/advanced" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_code": "...", "location_name": "..."}]'
```
# Setting Google Events SERP Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-events-task-post
openapi/dataforseo.json POST /dataforseo/serp/google/events/task_post
Queues the events Google surfaces for a query on Google, returning a task id in tasks[0].
Queues the events Google surfaces for a query on Google, returning a task `id` in `tasks[0].id`. The charge lands here; fetching is free, including re-fetching. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The live twin answers immediately and is simpler for a single query; queue when the batch would outlast a tool call.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/events/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_code": "...", "location_name": "..."}]'
```
# Live Google Finance Explore Advanced
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-finance-explore-live-advanced
openapi/dataforseo.json POST /dataforseo/serp/google/finance_explore/live/advanced
Returns the instruments Google Finance groups under a theme on Google, synchronously.
Returns the instruments Google Finance groups under a theme on Google, synchronously. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Measured at 57 KB for a ten-result Google query. ⚠️ Three result depths exist for the same query and differ by two orders of magnitude: `regular` measured 4.8 KB, `advanced` 57 KB, and `html` **2.4 MB**. `advanced` is the default choice; take `regular` when only the ranked list matters and `html` only to check what the parser dropped. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/finance_explore/live/advanced" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"location_name": "...", "location_code": "...", "language_name": "..."}]'
```
# Live Google Finance Explore SERP HTML
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-finance-explore-live-html
openapi/dataforseo.json POST /dataforseo/serp/google/finance_explore/live/html
Returns the instruments Google Finance groups under a theme on Google, synchronously.
Returns the instruments Google Finance groups under a theme on Google, synchronously. Raw page source rather than parsed results. 🔴 **Measured at 2.4 MB for a ten-result Google query, against 57 KB parsed** - take it only to check what the parser dropped. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/finance_explore/live/html" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"location_name": "...", "location_code": "...", "language_name": "..."}]'
```
# Setting Google Finance Explore SERP Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-finance-explore-task-post
openapi/dataforseo.json POST /dataforseo/serp/google/finance_explore/task_post
Queues the instruments Google Finance groups under a theme on Google, returning a task id in tasks[0].
Queues the instruments Google Finance groups under a theme on Google, returning a task `id` in `tasks[0].id`. The charge lands here; fetching is free, including re-fetching. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The live twin answers immediately and is simpler for a single query; queue when the batch would outlast a tool call.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/finance_explore/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"location_name": "...", "location_code": "...", "language_name": "..."}]'
```
# Live Google Finance Markets Advanced
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-finance-markets-live-advanced
openapi/dataforseo.json POST /dataforseo/serp/google/finance_markets/live/advanced
Returns the market indexes and movers Google Finance lists on Google, synchronously.
Returns the market indexes and movers Google Finance lists on Google, synchronously. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Measured at 57 KB for a ten-result Google query. ⚠️ Three result depths exist for the same query and differ by two orders of magnitude: `regular` measured 4.8 KB, `advanced` 57 KB, and `html` **2.4 MB**. `advanced` is the default choice; take `regular` when only the ranked list matters and `html` only to check what the parser dropped. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/finance_markets/live/advanced" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"location_name": "...", "location_code": "...", "language_name": "..."}]'
```
# Live Google Finance Markets SERP HTML
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-finance-markets-live-html
openapi/dataforseo.json POST /dataforseo/serp/google/finance_markets/live/html
Returns the market indexes and movers Google Finance lists on Google, synchronously.
Returns the market indexes and movers Google Finance lists on Google, synchronously. Raw page source rather than parsed results. 🔴 **Measured at 2.4 MB for a ten-result Google query, against 57 KB parsed** - take it only to check what the parser dropped. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/finance_markets/live/html" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"location_name": "...", "location_code": "...", "language_name": "..."}]'
```
# Setting Google Finance Markets SERP Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-finance-markets-task-post
openapi/dataforseo.json POST /dataforseo/serp/google/finance_markets/task_post
Queues the market indexes and movers Google Finance lists on Google, returning a task id in tasks[0].
Queues the market indexes and movers Google Finance lists on Google, returning a task `id` in `tasks[0].id`. The charge lands here; fetching is free, including re-fetching. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The live twin answers immediately and is simpler for a single query; queue when the batch would outlast a tool call.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/finance_markets/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"location_name": "...", "location_code": "...", "language_name": "..."}]'
```
# Live Google Finance Quote Advanced
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-finance-quote-live-advanced
openapi/dataforseo.json POST /dataforseo/serp/google/finance_quote/live/advanced
Returns a ticker's quote as Google Finance shows it on Google, synchronously.
Returns a ticker's quote as Google Finance shows it on Google, synchronously. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Measured at 57 KB for a ten-result Google query. ⚠️ Three result depths exist for the same query and differ by two orders of magnitude: `regular` measured 4.8 KB, `advanced` 57 KB, and `html` **2.4 MB**. `advanced` is the default choice; take `regular` when only the ranked list matters and `html` only to check what the parser dropped. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/finance_quote/live/advanced" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Live Google Finance Quote SERP HTML
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-finance-quote-live-html
openapi/dataforseo.json POST /dataforseo/serp/google/finance_quote/live/html
Returns a ticker's quote as Google Finance shows it on Google, synchronously.
Returns a ticker's quote as Google Finance shows it on Google, synchronously. Raw page source rather than parsed results. 🔴 **Measured at 2.4 MB for a ten-result Google query, against 57 KB parsed** - take it only to check what the parser dropped. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/finance_quote/live/html" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Setting Google Finance Quote SERP Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-finance-quote-task-post
openapi/dataforseo.json POST /dataforseo/serp/google/finance_quote/task_post
Queues a ticker's quote as Google Finance shows it on Google, returning a task id in tasks[0].
Queues a ticker's quote as Google Finance shows it on Google, returning a task `id` in `tasks[0].id`. The charge lands here; fetching is free, including re-fetching. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The live twin answers immediately and is simpler for a single query; queue when the batch would outlast a tool call.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/finance_quote/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Live Google Finance Ticker Search Advanced
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-finance-ticker-search-live-advanced
openapi/dataforseo.json POST /dataforseo/serp/google/finance_ticker_search/live/advanced
Returns tickers matching a query in Google Finance on Google, synchronously.
Returns tickers matching a query in Google Finance on Google, synchronously. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Measured at 57 KB for a ten-result Google query. ⚠️ Three result depths exist for the same query and differ by two orders of magnitude: `regular` measured 4.8 KB, `advanced` 57 KB, and `html` **2.4 MB**. `advanced` is the default choice; take `regular` when only the ranked list matters and `html` only to check what the parser dropped. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/finance_ticker_search/live/advanced" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Setting Google Finance Ticker Search Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-finance-ticker-search-task-post
openapi/dataforseo.json POST /dataforseo/serp/google/finance_ticker_search/task_post
Queues tickers matching a query in Google Finance on Google, returning a task id in tasks[0].
Queues tickers matching a query in Google Finance on Google, returning a task `id` in `tasks[0].id`. The charge lands here; fetching is free, including re-fetching. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The live twin answers immediately and is simpler for a single query; queue when the batch would outlast a tool call.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/finance_ticker_search/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Live Google Images SERP
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-images-live-advanced
openapi/dataforseo.json POST /dataforseo/serp/google/images/live/advanced
Returns the image results for a keyword on Google, synchronously.
Returns the image results for a keyword on Google, synchronously. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Measured at 57 KB for a ten-result Google query. ⚠️ Three result depths exist for the same query and differ by two orders of magnitude: `regular` measured 4.8 KB, `advanced` 57 KB, and `html` **2.4 MB**. `advanced` is the default choice; take `regular` when only the ranked list matters and `html` only to check what the parser dropped. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/images/live/advanced" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_code": "...", "location_name": "..."}]'
```
# Live Google Images SERP HTML
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-images-live-html
openapi/dataforseo.json POST /dataforseo/serp/google/images/live/html
Returns the image results for a keyword on Google, synchronously.
Returns the image results for a keyword on Google, synchronously. Raw page source rather than parsed results. 🔴 **Measured at 2.4 MB for a ten-result Google query, against 57 KB parsed** - take it only to check what the parser dropped. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/images/live/html" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_code": "...", "location_name": "..."}]'
```
# Setting Google Images SERP Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-images-task-post
openapi/dataforseo.json POST /dataforseo/serp/google/images/task_post
Queues the image results for a keyword on Google, returning a task id in tasks[0].
Queues the image results for a keyword on Google, returning a task `id` in `tasks[0].id`. The charge lands here; fetching is free, including re-fetching. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The live twin answers immediately and is simpler for a single query; queue when the batch would outlast a tool call.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/images/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_code": "...", "location_name": "..."}]'
```
# Setting Google Jobs Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-jobs-task-post
openapi/dataforseo.json POST /dataforseo/serp/google/jobs/task_post
Queues the job listings Google surfaces for a query on Google, returning a task id in tasks[0].
Queues the job listings Google surfaces for a query on Google, returning a task `id` in `tasks[0].id`. The charge lands here; fetching is free, including re-fetching. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The live twin answers immediately and is simpler for a single query; queue when the batch would outlast a tool call.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/jobs/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_code": "...", "location_name": "..."}]'
```
# Live Google Local Finder SERP
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-local-finder-live-advanced
openapi/dataforseo.json POST /dataforseo/serp/google/local_finder/live/advanced
Returns the expanded local results Google shows when a query is clearly local on Google, synchronously.
Returns the expanded local results Google shows when a query is clearly local on Google, synchronously. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Measured at 57 KB for a ten-result Google query. ⚠️ Three result depths exist for the same query and differ by two orders of magnitude: `regular` measured 4.8 KB, `advanced` 57 KB, and `html` **2.4 MB**. `advanced` is the default choice; take `regular` when only the ranked list matters and `html` only to check what the parser dropped. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/local_finder/live/advanced" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_code": "...", "location_name": "..."}]'
```
# Live Google Local Finder SERP HTML
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-local-finder-live-html
openapi/dataforseo.json POST /dataforseo/serp/google/local_finder/live/html
Returns the expanded local results Google shows when a query is clearly local on Google, synchronously.
Returns the expanded local results Google shows when a query is clearly local on Google, synchronously. Raw page source rather than parsed results. 🔴 **Measured at 2.4 MB for a ten-result Google query, against 57 KB parsed** - take it only to check what the parser dropped. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/local_finder/live/html" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_code": "...", "location_name": "..."}]'
```
# Setting Google Local Finder SERP Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-local-finder-task-post
openapi/dataforseo.json POST /dataforseo/serp/google/local_finder/task_post
Queues the expanded local results Google shows when a query is clearly local on Google, returning a task id in tasks[0].
Queues the expanded local results Google shows when a query is clearly local on Google, returning a task `id` in `tasks[0].id`. The charge lands here; fetching is free, including re-fetching. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The live twin answers immediately and is simpler for a single query; queue when the batch would outlast a tool call.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/local_finder/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_code": "...", "location_name": "..."}]'
```
# Live Google Maps SERP
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-maps-live-advanced
openapi/dataforseo.json POST /dataforseo/serp/google/maps/live/advanced
Returns the map pack for a local query, with each business's rating, address and place id on Google, synchronously.
Returns the map pack for a local query, with each business's rating, address and place id on Google, synchronously. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Measured at 57 KB for a ten-result Google query. ⚠️ Three result depths exist for the same query and differ by two orders of magnitude: `regular` measured 4.8 KB, `advanced` 57 KB, and `html` **2.4 MB**. `advanced` is the default choice; take `regular` when only the ranked list matters and `html` only to check what the parser dropped. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/maps/live/advanced" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_code": "...", "location_name": "..."}]'
```
# Setting Google Maps SERP Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-maps-task-post
openapi/dataforseo.json POST /dataforseo/serp/google/maps/task_post
Queues the map pack for a local query, with each business's rating, address and place id on Google, returning a task id in tasks[0].
Queues the map pack for a local query, with each business's rating, address and place id on Google, returning a task `id` in `tasks[0].id`. The charge lands here; fetching is free, including re-fetching. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The live twin answers immediately and is simpler for a single query; queue when the batch would outlast a tool call.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/maps/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_code": "...", "location_name": "..."}]'
```
# Live Google News SERP
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-news-live-advanced
openapi/dataforseo.json POST /dataforseo/serp/google/news/live/advanced
Returns the news results for a keyword on Google, synchronously.
Returns the news results for a keyword on Google, synchronously. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Measured at 57 KB for a ten-result Google query. ⚠️ Three result depths exist for the same query and differ by two orders of magnitude: `regular` measured 4.8 KB, `advanced` 57 KB, and `html` **2.4 MB**. `advanced` is the default choice; take `regular` when only the ranked list matters and `html` only to check what the parser dropped. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/news/live/advanced" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_code": "...", "location_name": "..."}]'
```
# Live Google News SERP HTML
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-news-live-html
openapi/dataforseo.json POST /dataforseo/serp/google/news/live/html
Returns the news results for a keyword on Google, synchronously.
Returns the news results for a keyword on Google, synchronously. Raw page source rather than parsed results. 🔴 **Measured at 2.4 MB for a ten-result Google query, against 57 KB parsed** - take it only to check what the parser dropped. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/news/live/html" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_code": "...", "location_name": "..."}]'
```
# Setting Google News SERP Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-news-task-post
openapi/dataforseo.json POST /dataforseo/serp/google/news/task_post
Queues the news results for a keyword on Google, returning a task id in tasks[0].
Queues the news results for a keyword on Google, returning a task `id` in `tasks[0].id`. The charge lands here; fetching is free, including re-fetching. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The live twin answers immediately and is simpler for a single query; queue when the batch would outlast a tool call.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/news/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_code": "...", "location_name": "..."}]'
```
# Live Google Organic SERP Advanced
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-organic-live-advanced
openapi/dataforseo.json POST /dataforseo/serp/google/organic/live/advanced
Returns the ranked results for a keyword on Google, synchronously.
Returns the ranked results for a keyword on Google, synchronously. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Measured at 57 KB for a ten-result Google query. ⚠️ Three result depths exist for the same query and differ by two orders of magnitude: `regular` measured 4.8 KB, `advanced` 57 KB, and `html` **2.4 MB**. `advanced` is the default choice; take `regular` when only the ranked list matters and `html` only to check what the parser dropped. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/organic/live/advanced" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Live Google Organic SERP HTML
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-organic-live-html
openapi/dataforseo.json POST /dataforseo/serp/google/organic/live/html
Returns the ranked results for a keyword on Google, synchronously.
Returns the ranked results for a keyword on Google, synchronously. Raw page source rather than parsed results. 🔴 **Measured at 2.4 MB for a ten-result Google query, against 57 KB parsed** - take it only to check what the parser dropped. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/organic/live/html" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"url": "...", "location_name": "...", "location_code": "..."}]'
```
# Live Google Organic SERP Regular
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-organic-live-regular
openapi/dataforseo.json POST /dataforseo/serp/google/organic/live/regular
Returns the ranked results for a keyword on Google, synchronously.
Returns the ranked results for a keyword on Google, synchronously. The lighter parse: measured at 4.8 KB against 57 KB for `advanced`, carrying the ranked list without the surrounding SERP features. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/organic/live/regular" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Setting Google Organic SERP Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-organic-task-post
openapi/dataforseo.json POST /dataforseo/serp/google/organic/task_post
Queues the ranked results for a keyword on Google, returning a task id in tasks[0].
Queues the ranked results for a keyword on Google, returning a task `id` in `tasks[0].id`. The charge lands here; fetching is free, including re-fetching. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The live twin answers immediately and is simpler for a single query; queue when the batch would outlast a tool call.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/organic/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Delete Inbox
Source: https://aisa.one/docs/api-reference/agentmail/delete_agentmail-inboxes-inbox-id
openapi/agentmail.json DELETE /agentmail/inboxes/{inbox_id}
Permanently deletes an inbox and the mail in it.
Permanently deletes an inbox and the mail in it. Returns no body. **This cannot be undone, and the inbox may not be yours** — Every AIsa caller shares one AgentMail account, so this reaches inboxes other callers created, so confirm ownership from `get_agentmail_inbox` before calling. To stop using an inbox without destroying it, simply leave it alone.
## Example
```bash theme={null}
curl -X DELETE "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Delete Draft
Source: https://aisa.one/docs/api-reference/agentmail/delete_agentmail-inboxes-inbox-id-drafts-draft-id
openapi/agentmail.json DELETE /agentmail/inboxes/{inbox_id}/drafts/{draft_id}
Permanently deletes an unsent draft.
Permanently deletes an unsent draft. Returns no body. Nothing was ever sent, so this is the least destructive delete in this API — but it cannot be undone and Every AIsa caller shares one AgentMail account, so this reaches inboxes other callers created. Read it first with `get_agentmail_inbox_draft` if unsure.
## Example
```bash theme={null}
curl -X DELETE "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/drafts/{draft_id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Delete Inbox List Entry
Source: https://aisa.one/docs/api-reference/agentmail/delete_agentmail-inboxes-inbox-id-lists-direction-type-entry
openapi/agentmail.json DELETE /agentmail/inboxes/{inbox_id}/lists/{direction}/{type}/{entry}
Removes one entry from an inbox's allow or block list.
Removes one entry from an inbox's allow or block list. Returns no body. This changes what the inbox will accept or send from that point on. Entries whose `read_only` is true are platform managed and cannot be removed — check with `get_agentmail_inbox_list_entry` first. Writes to the shared AgentMail workspace: Every AIsa caller shares one AgentMail account, so this reaches inboxes other callers created, and what you write here is visible and editable by the next caller.
## Example
```bash theme={null}
curl -X DELETE "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/lists/{direction}/{type}/{entry}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Delete Message
Source: https://aisa.one/docs/api-reference/agentmail/delete_agentmail-inboxes-inbox-id-messages-message-id
openapi/agentmail.json DELETE /agentmail/inboxes/{inbox_id}/messages/{message_id}
Permanently deletes one message.
Permanently deletes one message. Returns no body. **This cannot be undone** and Every AIsa caller shares one AgentMail account, so this reaches inboxes other callers created, so the message may not be yours. To hide a message from a workflow without destroying it, relabel it with `patch_agentmail_inbox_message` instead.
## Example
```bash theme={null}
curl -X DELETE "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/{message_id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Delete Thread
Source: https://aisa.one/docs/api-reference/agentmail/delete_agentmail-inboxes-inbox-id-threads-thread-id
openapi/agentmail.json DELETE /agentmail/inboxes/{inbox_id}/threads/{thread_id}
Permanently deletes a thread and every message in it.
Permanently deletes a thread and every message in it. Returns no body. **This cannot be undone and it removes more than one message** — Every AIsa caller shares one AgentMail account, so this reaches inboxes other callers created, so read the thread with `get_agentmail_inbox_thread` first. To hide it instead, relabel with `patch_agentmail_inbox_thread`.
## Example
```bash theme={null}
curl -X DELETE "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/threads/{thread_id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Delete Account List Entry
Source: https://aisa.one/docs/api-reference/agentmail/delete_agentmail-lists-direction-type-entry
openapi/agentmail.json DELETE /agentmail/lists/{direction}/{type}/{entry}
Removes one entry from an account-wide allow or block list.
Removes one entry from an **account-wide** allow or block list. Returns no body. 🔴 This changes mail handling for **every inbox in the account, including other callers'**; the inbox-scoped `delete_agentmail_inbox_list_entry` is the narrower action. Entries whose `read_only` is true are platform managed and cannot be removed — check with `get_agentmail_list_entry` first.
## Example
```bash theme={null}
curl -X DELETE "https://api.aisa.one/apis/v1/agentmail/lists/{direction}/{type}/{entry}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Delete Any Thread
Source: https://aisa.one/docs/api-reference/agentmail/delete_agentmail-threads-thread-id
openapi/agentmail.json DELETE /agentmail/threads/{thread_id}
Permanently deletes a thread addressed by id alone, and every message in it.
Permanently deletes a thread addressed by id alone, and every message in it. Returns no body. **This cannot be undone, deletes more than one message, and names no inbox** — Every AIsa caller shares one AgentMail account, so this reaches inboxes other callers created, so it can destroy a conversation belonging to another caller. Read it first with `get_agentmail_thread`; the scoped twin is `delete_agentmail_inbox_thread`.
## Example
```bash theme={null}
curl -X DELETE "https://api.aisa.one/apis/v1/agentmail/threads/{thread_id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List Account API Keys
Source: https://aisa.one/docs/api-reference/agentmail/get_agentmail-api-keys
openapi/agentmail.json GET /agentmail/api-keys
List Account API Keys
Lists API key metadata for the AgentMail account: `count`, `next_page_token` and `api_keys`, each with `api_key_id`, `prefix`, `name`, `pod_id`, `inbox_id`, `used_at`, `permissions` and `created_at`. The key secret itself is never returned, only its `prefix`. 🔴 **This is the account-management surface, not a per-caller one.** Every AIsa caller shares one AgentMail account, so this reaches inboxes other callers created, so the keys listed are the AIsa platform's own, not yours. Nothing in normal mail workflows needs this — use `get_agentmail_inboxes` to find inboxes and `get_agentmail_inbox_messages` to read mail.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/agentmail/api-keys" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List Account Domains
Source: https://aisa.one/docs/api-reference/agentmail/get_agentmail-domains
openapi/agentmail.json GET /agentmail/domains
Lists custom sending domains configured on the AgentMail account: count, limit, next_page_token and domains.
Lists custom sending domains configured on the AgentMail account: `count`, `limit`, `next_page_token` and `domains`. 🔴 **This is the account-management surface, not a per-caller one.** Every AIsa caller shares one AgentMail account, so this reaches inboxes other callers created, so the domains listed belong to the AIsa platform. Inboxes created through AIsa always use `agentmail.to`, so this list does not change what `post_agentmail_inbox` can do.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/agentmail/domains" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List All Drafts
Source: https://aisa.one/docs/api-reference/agentmail/get_agentmail-drafts
openapi/agentmail.json GET /agentmail/drafts
Lists unsent drafts across every inbox in the account.
Lists unsent drafts across **every inbox in the account**. Returns `count`, `limit`, `next_page_token` and `drafts`; page with `next_page_token`. Each draft carries `draft_id`, `inbox_id`, `to`, `cc`, `bcc`, `subject`, `preview`, `attachments`, `send_status` and `send_at`. List items carry `preview` only — `text` and `html` come from `get_agentmail_draft`. This is the organization-wide view spanning every inbox in the account. Every AIsa caller shares one AgentMail account, so this reaches inboxes other callers created; the inbox-scoped twin `get_agentmail_inbox_drafts` is the one to use when a single inbox is meant.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/agentmail/drafts" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Any Draft
Source: https://aisa.one/docs/api-reference/agentmail/get_agentmail-drafts-draft-id
openapi/agentmail.json GET /agentmail/drafts/{draft_id}
Get Any Draft
Fetches one unsent draft by id without naming an inbox: `draft_id`, `inbox_id`, `client_id`, `labels`, `reply_to`, `to`, `cc`, `bcc`, `subject`, `preview`, `text`, `html`, `attachments`, `in_reply_to` and `references`. This is the organization-wide view spanning every inbox in the account. Every AIsa caller shares one AgentMail account, so this reaches inboxes other callers created; the inbox-scoped twin `get_agentmail_inbox_draft` is the one to use when a single inbox is meant.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/agentmail/drafts/{draft_id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Any Draft Attachment
Source: https://aisa.one/docs/api-reference/agentmail/get_agentmail-drafts-draft-id-attachments-attachment-id
openapi/agentmail.json GET /agentmail/drafts/{draft_id}/attachments/{attachment_id}
Fetches metadata for one attachment on a draft addressed by id alone.
Fetches metadata for one attachment on a draft addressed by id alone. Returns `attachment_id`, `filename`, `size`, `content_type`, `content_disposition`, `content_id` and a short-lived `download_url` with `expires_at`. The bytes are not inlined — fetch `download_url` before it expires. This is the organization-wide view spanning every inbox in the account. Every AIsa caller shares one AgentMail account, so this reaches inboxes other callers created; the inbox-scoped twin `get_agentmail_inbox_draft_attachment` is the one to use when a single inbox is meant.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/agentmail/drafts/{draft_id}/attachments/{attachment_id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List Inboxes
Source: https://aisa.one/docs/api-reference/agentmail/get_agentmail-inboxes
openapi/agentmail.json GET /agentmail/inboxes
Lists every inbox in the AgentMail account.
Lists every inbox in the AgentMail account. Returns `count`, `limit`, `next_page_token` and `inboxes`; page with `next_page_token`. Each inbox carries `inbox_id`, `email`, `display_name`, `client_id`, `pod_id`, `metadata`, `created_at` and `updated_at`. Every AIsa caller shares one AgentMail account, so this reaches inboxes other callers created, so this list is not scoped to you and the inboxes it returns may belong to someone else. Use `get_agentmail_inbox` for one inbox you already know the id of, and `post_agentmail_inbox` to create one.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/agentmail/inboxes" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Inbox
Source: https://aisa.one/docs/api-reference/agentmail/get_agentmail-inboxes-inbox-id
openapi/agentmail.json GET /agentmail/inboxes/{inbox_id}
Fetches one inbox by inbox_id.
Fetches one inbox by `inbox_id`. Returns `inbox_id`, `email`, `display_name`, `client_id`, `pod_id`, `metadata`, `created_at` and `updated_at` — settings only, no mail. For the messages in it use `get_agentmail_inbox_messages`, for conversations `get_agentmail_inbox_threads`. Discover ids with `get_agentmail_inboxes`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List Drafts
Source: https://aisa.one/docs/api-reference/agentmail/get_agentmail-inboxes-inbox-id-drafts
openapi/agentmail.json GET /agentmail/inboxes/{inbox_id}/drafts
Lists unsent drafts in one inbox.
Lists unsent drafts in one inbox. Returns `count`, `limit`, `next_page_token` and `drafts`; page with `next_page_token`. Each draft carries `draft_id`, `labels`, `to`, `cc`, `bcc`, `subject`, `preview`, `attachments`, `in_reply_to`, `send_status`, `send_at` and `updated_at`. List items carry `preview` only — `text` and `html` come from `get_agentmail_inbox_draft`. Drafts are not sent until `post_agentmail_inbox_draft_send`. The account-wide view is `get_agentmail_drafts`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/drafts" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Draft
Source: https://aisa.one/docs/api-reference/agentmail/get_agentmail-inboxes-inbox-id-drafts-draft-id
openapi/agentmail.json GET /agentmail/inboxes/{inbox_id}/drafts/{draft_id}
Get Draft
Fetches one unsent draft in full: `draft_id`, `inbox_id`, `client_id`, `labels`, `reply_to`, `to`, `cc`, `bcc`, `subject`, `preview`, `text`, `html`, `attachments`, `in_reply_to` and `references`. Edit it with `patch_agentmail_inbox_draft`, send it with `post_agentmail_inbox_draft_send`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/drafts/{draft_id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Draft Attachment
Source: https://aisa.one/docs/api-reference/agentmail/get_agentmail-inboxes-inbox-id-drafts-draft-id-attachments-attachment-id
openapi/agentmail.json GET /agentmail/inboxes/{inbox_id}/drafts/{draft_id}/attachments/{attachment_id}
Fetches metadata for one attachment on an unsent draft.
Fetches metadata for one attachment on an unsent draft. Returns `attachment_id`, `filename`, `size`, `content_type`, `content_disposition`, `content_id` and a short-lived `download_url` with `expires_at`. The bytes are not inlined — fetch `download_url` before it expires. Ids come from the draft's `attachments` array on `get_agentmail_inbox_draft`. The sent-message twin is `get_agentmail_inbox_message_attachment`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/drafts/{draft_id}/attachments/{attachment_id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List Inbox Events
Source: https://aisa.one/docs/api-reference/agentmail/get_agentmail-inboxes-inbox-id-events
openapi/agentmail.json GET /agentmail/inboxes/{inbox_id}/events
Lists delivery and activity events for one inbox — the audit trail behind sends and receipts.
Lists delivery and activity events for one inbox — the audit trail behind sends and receipts. Returns `count`, `limit`, `next_page_token` and `events`; page with `next_page_token`. Each event carries `event_id`, `event_type`, `message_id`, `label`, `event_at` and `inbox_id`. Use this to find out what happened to a message after `post_agentmail_inbox_message_send` returned, which the send call itself cannot tell you. For aggregate counts rather than individual events use `get_agentmail_inbox_metrics`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/events" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List Inbox List Entries
Source: https://aisa.one/docs/api-reference/agentmail/get_agentmail-inboxes-inbox-id-lists-direction-type
openapi/agentmail.json GET /agentmail/inboxes/{inbox_id}/lists/{direction}/{type}
Lists one inbox's allow or block entries.
Lists one inbox's allow or block entries. `direction` selects inbound or outbound and `type` the list kind. Returns `count`, `limit`, `next_page_token` and `entries`; page with `next_page_token`. Each entry carries `entry`, `entry_type`, `reason`, `direction`, `list_type`, `created_at`, `read_only`, `inbox_id` and `pod_id`. The account-wide twin is `get_agentmail_list_entries`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/lists/{direction}/{type}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Inbox List Entry
Source: https://aisa.one/docs/api-reference/agentmail/get_agentmail-inboxes-inbox-id-lists-direction-type-entry
openapi/agentmail.json GET /agentmail/inboxes/{inbox_id}/lists/{direction}/{type}/{entry}
Get Inbox List Entry
Fetches one allow or block entry on an inbox: `entry`, `entry_type`, `reason`, `direction`, `list_type`, `created_at`, `read_only`, `inbox_id`, `pod_id` and `organization_id`. `read_only` marks entries the platform manages, which cannot be deleted. List them all with `get_agentmail_inbox_list_entries`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/lists/{direction}/{type}/{entry}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List Messages
Source: https://aisa.one/docs/api-reference/agentmail/get_agentmail-inboxes-inbox-id-messages
openapi/agentmail.json GET /agentmail/inboxes/{inbox_id}/messages
Lists messages in one inbox, newest first.
Lists messages in one inbox, newest first. Returns `count`, `limit`, `next_page_token` and `messages`; page with `next_page_token`. Each message carries `message_id`, `thread_id`, `labels`, `timestamp`, `from`, `to`, `cc`, `bcc`, `subject` and a `preview`; full bodies come from `get_agentmail_inbox_message`. To search rather than page, use `get_agentmail_inbox_messages_search`; to group by conversation, `get_agentmail_inbox_threads`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Message
Source: https://aisa.one/docs/api-reference/agentmail/get_agentmail-inboxes-inbox-id-messages-message-id
openapi/agentmail.json GET /agentmail/inboxes/{inbox_id}/messages/{message_id}
Get Message
Fetches one message in full: `message_id`, `thread_id`, `labels`, `timestamp`, `from`, `reply_to`, `to`, `cc`, `bcc`, `subject`, `preview`, `text`, `html`, `extracted_text` and attachment metadata. For the original MIME source use `get_agentmail_inbox_message_raw`; for an attachment's download URL, `get_agentmail_inbox_message_attachment`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/{message_id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Message Attachment
Source: https://aisa.one/docs/api-reference/agentmail/get_agentmail-inboxes-inbox-id-messages-message-id-attachments-attachment-id
openapi/agentmail.json GET /agentmail/inboxes/{inbox_id}/messages/{message_id}/attachments/{attachment_id}
Fetches metadata for one attachment on a message.
Fetches metadata for one attachment on a message. Returns `attachment_id`, `filename`, `size`, `content_type`, `content_disposition`, `content_id` and a short-lived `download_url` with `expires_at`. The bytes are not inlined — fetch `download_url` before it expires. Attachment ids come from the `attachments` array on `get_agentmail_inbox_message`. The thread-level and draft-level twins are `get_agentmail_inbox_thread_attachment` and `get_agentmail_inbox_draft_attachment`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/{message_id}/attachments/{attachment_id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Raw Message
Source: https://aisa.one/docs/api-reference/agentmail/get_agentmail-inboxes-inbox-id-messages-message-id-raw
openapi/agentmail.json GET /agentmail/inboxes/{inbox_id}/messages/{message_id}/raw
Returns the original RFC 822 source of one message as message_id, size, a short-lived download_url and expires_at.
Returns the original RFC 822 source of one message as `message_id`, `size`, a short-lived `download_url` and `expires_at`. The bytes are not inlined — fetch `download_url` before it expires. Use this for headers, DKIM or exact MIME structure; for parsed text and HTML use `get_agentmail_inbox_message`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/{message_id}/raw" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Search Messages
Source: https://aisa.one/docs/api-reference/agentmail/get_agentmail-inboxes-inbox-id-messages-search
openapi/agentmail.json GET /agentmail/inboxes/{inbox_id}/messages/search
Full-text search across one inbox's messages.
Full-text search across one inbox's messages. Returns `count`, `limit`, `next_page_token` and `messages`; page with `next_page_token`. Same message fields as `get_agentmail_inbox_messages`, which is the one to use when you want everything in date order rather than a query. Searching conversations instead of individual messages is `get_agentmail_inbox_threads_search`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/search" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Query Inbox Metrics
Source: https://aisa.one/docs/api-reference/agentmail/get_agentmail-inboxes-inbox-id-metrics
openapi/agentmail.json GET /agentmail/inboxes/{inbox_id}/metrics
Query Inbox Metrics
Returns the same aggregate counters as `get_agentmail_metrics` but for one inbox: a flat map of counter name to an array of data points, keyed by `message.received`, `message.received.spam`, `message.received.blocked`, `message.received.unauthenticated`, `message.sent`, `message.delivered`, `message.bounced`, `message.complained`, `message.rejected`, `message.opened` and `domain.verified`. An empty array means no activity, not an error. The shape is not pinned in this spec, so read the keys actually returned. For individual events rather than counts use `get_agentmail_inbox_events`; for the account-wide totals, `get_agentmail_metrics`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/metrics" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List Threads
Source: https://aisa.one/docs/api-reference/agentmail/get_agentmail-inboxes-inbox-id-threads
openapi/agentmail.json GET /agentmail/inboxes/{inbox_id}/threads
Lists conversation threads in one inbox, newest first.
Lists conversation threads in one inbox, newest first. Returns `count`, `limit`, `next_page_token` and `threads`; page with `next_page_token`. Each thread carries `thread_id`, `labels`, `timestamp`, `senders`, `recipients`, `subject`, `preview`, `message_count`, `last_message_id`, `size` and attachment metadata. Threads group messages; for the individual messages use `get_agentmail_inbox_messages`. To query rather than page, `get_agentmail_inbox_threads_search`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/threads" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Search Threads
Source: https://aisa.one/docs/api-reference/agentmail/get_agentmail-inboxes-inbox-id-threads-search
openapi/agentmail.json GET /agentmail/inboxes/{inbox_id}/threads/search
Full-text search across one inbox's threads.
Full-text search across one inbox's threads. Returns `count`, `limit`, `next_page_token` and `threads`; page with `next_page_token`. Same thread fields as `get_agentmail_inbox_threads`, which is the one to use for everything in date order. To search individual messages rather than conversations use `get_agentmail_inbox_messages_search`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/threads/search" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Thread
Source: https://aisa.one/docs/api-reference/agentmail/get_agentmail-inboxes-inbox-id-threads-thread-id
openapi/agentmail.json GET /agentmail/inboxes/{inbox_id}/threads/{thread_id}
Get Thread
Fetches one thread with its full message list: `thread_id`, `inbox_id`, `labels`, `timestamp`, `received_timestamp`, `sent_timestamp`, `senders`, `recipients`, `subject`, `preview`, attachments and the messages themselves. For a single message use `get_agentmail_inbox_message`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/threads/{thread_id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Thread Attachment
Source: https://aisa.one/docs/api-reference/agentmail/get_agentmail-inboxes-inbox-id-threads-thread-id-attachments-attachment-id
openapi/agentmail.json GET /agentmail/inboxes/{inbox_id}/threads/{thread_id}/attachments/{attachment_id}
Fetches metadata for one attachment anywhere in a thread.
Fetches metadata for one attachment anywhere in a thread. Returns `attachment_id`, `filename`, `size`, `content_type`, `content_disposition`, `content_id` and a short-lived `download_url` with `expires_at`. The bytes are not inlined — fetch `download_url` before it expires. Ids come from the thread's `attachments` array on `get_agentmail_inbox_thread`. The message-level twin is `get_agentmail_inbox_message_attachment`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/threads/{thread_id}/attachments/{attachment_id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List Account List Entries
Source: https://aisa.one/docs/api-reference/agentmail/get_agentmail-lists-direction-type
openapi/agentmail.json GET /agentmail/lists/{direction}/{type}
Lists the account-wide allow or block entries that apply to every inbox.
Lists the account-wide allow or block entries that apply to every inbox. `direction` selects inbound or outbound and `type` the list kind. Returns `count`, `limit`, `next_page_token` and `entries`; page with `next_page_token`. Each entry carries `entry`, `entry_type`, `reason`, `direction`, `list_type`, `created_at` and `read_only`. This is the organization-wide view spanning every inbox in the account. Every AIsa caller shares one AgentMail account, so this reaches inboxes other callers created; the inbox-scoped twin `get_agentmail_inbox_list_entries` is the one to use when a single inbox is meant.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/agentmail/lists/{direction}/{type}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Account List Entry
Source: https://aisa.one/docs/api-reference/agentmail/get_agentmail-lists-direction-type-entry
openapi/agentmail.json GET /agentmail/lists/{direction}/{type}/{entry}
Fetches one account-wide allow or block entry: entry, entry_type, reason, direction, list_type, created_at, read_only and organization_id.
Fetches one account-wide allow or block entry: `entry`, `entry_type`, `reason`, `direction`, `list_type`, `created_at`, `read_only` and `organization_id`. `read_only` marks platform-managed entries, which cannot be deleted. This is the organization-wide view spanning every inbox in the account. Every AIsa caller shares one AgentMail account, so this reaches inboxes other callers created; the inbox-scoped twin `get_agentmail_inbox_list_entry` is the one to use when a single inbox is meant.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/agentmail/lists/{direction}/{type}/{entry}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Query Account Metrics
Source: https://aisa.one/docs/api-reference/agentmail/get_agentmail-metrics
openapi/agentmail.json GET /agentmail/metrics
Returns aggregate counters for the whole account as a flat map of counter name to an array of data points.
Returns aggregate counters for the whole account as a flat map of counter name to an array of data points. Measured live on 2026-08-24 the keys are `message.received`, `message.received.spam`, `message.received.blocked`, `message.received.unauthenticated`, `message.sent`, `message.delivered`, `message.bounced`, `message.complained`, `message.rejected`, `message.opened` and `domain.verified`, each an empty array on an account with no traffic — an empty array means no activity, not an error. The shape is not pinned in this spec, so read the keys actually returned rather than assuming this list is closed. This is the organization-wide view spanning every inbox in the account. Every AIsa caller shares one AgentMail account, so this reaches inboxes other callers created; the inbox-scoped twin `get_agentmail_inbox_metrics` is the one to use when a single inbox is meant.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/agentmail/metrics" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List All Threads
Source: https://aisa.one/docs/api-reference/agentmail/get_agentmail-threads
openapi/agentmail.json GET /agentmail/threads
Lists conversation threads across every inbox in the account.
Lists conversation threads across **every inbox in the account**. Returns `count`, `limit`, `next_page_token` and `threads`; page with `next_page_token`. Each thread carries `thread_id`, `inbox_id`, `labels`, `timestamp`, `senders`, `recipients`, `subject`, `preview`, `message_count` and `last_message_id`. This is the organization-wide view spanning every inbox in the account. Every AIsa caller shares one AgentMail account, so this reaches inboxes other callers created; the inbox-scoped twin `get_agentmail_inbox_threads` is the one to use when a single inbox is meant.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/agentmail/threads" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Search All Threads
Source: https://aisa.one/docs/api-reference/agentmail/get_agentmail-threads-search
openapi/agentmail.json GET /agentmail/threads/search
Full-text search over threads in every inbox in the account.
Full-text search over threads in **every inbox in the account**. Returns `count`, `limit`, `next_page_token` and `threads`; page with `next_page_token`. Same fields as `get_agentmail_threads`, which is the one to use for everything in date order. This is the organization-wide view spanning every inbox in the account. Every AIsa caller shares one AgentMail account, so this reaches inboxes other callers created; the inbox-scoped twin `get_agentmail_inbox_threads_search` is the one to use when a single inbox is meant.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/agentmail/threads/search" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Any Thread
Source: https://aisa.one/docs/api-reference/agentmail/get_agentmail-threads-thread-id
openapi/agentmail.json GET /agentmail/threads/{thread_id}
Get Any Thread
Fetches one thread by id without naming an inbox: `thread_id`, `inbox_id`, `labels`, `timestamp`, `received_timestamp`, `sent_timestamp`, `senders`, `recipients`, `subject`, `preview`, attachments and messages. Because no inbox is named, this resolves against the whole account. Every AIsa caller shares one AgentMail account, so this reaches inboxes other callers created, so a thread id that is not yours still resolves — check the returned `inbox_id`. The scoped twin is `get_agentmail_inbox_thread`.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/agentmail/threads/{thread_id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Any Thread Attachment
Source: https://aisa.one/docs/api-reference/agentmail/get_agentmail-threads-thread-id-attachments-attachment-id
openapi/agentmail.json GET /agentmail/threads/{thread_id}/attachments/{attachment_id}
Fetches metadata for one attachment in a thread addressed by id alone.
Fetches metadata for one attachment in a thread addressed by id alone. Returns `attachment_id`, `filename`, `size`, `content_type`, `content_disposition`, `content_id` and a short-lived `download_url` with `expires_at`. The bytes are not inlined — fetch `download_url` before it expires. This is the organization-wide view spanning every inbox in the account. Every AIsa caller shares one AgentMail account, so this reaches inboxes other callers created; the inbox-scoped twin `get_agentmail_inbox_thread_attachment` is the one to use when a single inbox is meant.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/agentmail/threads/{thread_id}/attachments/{attachment_id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Update Inbox
Source: https://aisa.one/docs/api-reference/agentmail/patch_agentmail-inboxes-inbox-id
openapi/agentmail.json PATCH /agentmail/inboxes/{inbox_id}
Updates one inbox's display_name and metadata; the address itself cannot change.
Updates one inbox's `display_name` and `metadata`; the address itself cannot change. Returns the full inbox after the update. Writes to the shared AgentMail workspace: Every AIsa caller shares one AgentMail account, so this reaches inboxes other callers created, and what you write here is visible and editable by the next caller. To read without changing anything use `get_agentmail_inbox`.
## Example
```bash theme={null}
curl -X PATCH "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Update Draft
Source: https://aisa.one/docs/api-reference/agentmail/patch_agentmail-inboxes-inbox-id-drafts-draft-id
openapi/agentmail.json PATCH /agentmail/inboxes/{inbox_id}/drafts/{draft_id}
Rewrites an unsent draft's recipients, subject, body or attachments and returns the full draft after the change.
Rewrites an unsent draft's recipients, subject, body or attachments and returns the full draft after the change. Still sends nothing — `post_agentmail_inbox_draft_send` does that. Writes to the shared AgentMail workspace: Every AIsa caller shares one AgentMail account, so this reaches inboxes other callers created, and what you write here is visible and editable by the next caller.
## Example
```bash theme={null}
curl -X PATCH "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/drafts/{draft_id}" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Update Message Labels
Source: https://aisa.one/docs/api-reference/agentmail/patch_agentmail-inboxes-inbox-id-messages-message-id
openapi/agentmail.json PATCH /agentmail/inboxes/{inbox_id}/messages/{message_id}
Adds or removes labels on one message and returns message_id with the resulting labels.
Adds or removes labels on one message and returns `message_id` with the resulting `labels`. Labels are the only mutable part of a received message. Writes to the shared AgentMail workspace: Every AIsa caller shares one AgentMail account, so this reaches inboxes other callers created, and what you write here is visible and editable by the next caller. Read the current labels with `get_agentmail_inbox_message`.
## Example
```bash theme={null}
curl -X PATCH "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/{message_id}" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Update Thread Labels
Source: https://aisa.one/docs/api-reference/agentmail/patch_agentmail-inboxes-inbox-id-threads-thread-id
openapi/agentmail.json PATCH /agentmail/inboxes/{inbox_id}/threads/{thread_id}
Adds or removes labels on a whole thread and returns thread_id with the resulting labels.
Adds or removes labels on a whole thread and returns `thread_id` with the resulting `labels`. Applies to every message in the thread at once; the per-message twin is `patch_agentmail_inbox_message`. Writes to the shared AgentMail workspace: Every AIsa caller shares one AgentMail account, so this reaches inboxes other callers created, and what you write here is visible and editable by the next caller.
## Example
```bash theme={null}
curl -X PATCH "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/threads/{thread_id}" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Update Any Thread Labels
Source: https://aisa.one/docs/api-reference/agentmail/patch_agentmail-threads-thread-id
openapi/agentmail.json PATCH /agentmail/threads/{thread_id}
Adds or removes labels on a thread addressed by id alone, returning thread_id and the resulting labels.
Adds or removes labels on a thread addressed by id alone, returning `thread_id` and the resulting `labels`. No inbox is named, so it resolves account-wide. Writes to the shared AgentMail workspace: Every AIsa caller shares one AgentMail account, so this reaches inboxes other callers created, and what you write here is visible and editable by the next caller. The scoped twin is `patch_agentmail_inbox_thread`.
## Example
```bash theme={null}
curl -X PATCH "https://api.aisa.one/apis/v1/agentmail/threads/{thread_id}" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Create Inbox
Source: https://aisa.one/docs/api-reference/agentmail/post_agentmail-inboxes
openapi/agentmail.json POST /agentmail/inboxes
Creates a new inbox — a real address that can send and receive.
Creates a new inbox — a real address that can send and receive. Optional `username` picks the local part (`support@agentmail.to`); omit it for a generated one such as `livelyspirit481@agentmail.to`. The domain is always `agentmail.to` here because AIsa does not expose domain management. Returns `inbox_id`, `email`, `display_name`, `client_id`, `pod_id`, `metadata` and timestamps. Writes to the shared AgentMail workspace: Every AIsa caller shares one AgentMail account, so this reaches inboxes other callers created, and what you write here is visible and editable by the next caller. Read one back with `get_agentmail_inbox`, list them with `get_agentmail_inboxes`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/agentmail/inboxes" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Create Draft
Source: https://aisa.one/docs/api-reference/agentmail/post_agentmail-inboxes-inbox-id-drafts
openapi/agentmail.json POST /agentmail/inboxes/{inbox_id}/drafts
Composes a draft in one inbox without sending it.
Composes a draft in one inbox without sending it. Takes `to`, `cc`, `bcc`, `subject`, `text`, `html`, `labels`, `attachments`, and `in_reply_to` / `references` to thread it. Returns the full draft including `draft_id`. Nothing leaves the account until you call `post_agentmail_inbox_draft_send`, which makes this the safe way to stage outbound mail for review. Writes to the shared AgentMail workspace: Every AIsa caller shares one AgentMail account, so this reaches inboxes other callers created, and what you write here is visible and editable by the next caller.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/drafts" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Send Draft
Source: https://aisa.one/docs/api-reference/agentmail/post_agentmail-inboxes-inbox-id-drafts-draft-id-send
openapi/agentmail.json POST /agentmail/inboxes/{inbox_id}/drafts/{draft_id}/send
Sends an existing draft and returns message_id and thread_id.
Sends an existing draft and returns `message_id` and `thread_id`. 🔴 **This sends real email and it cannot be recalled** — review the draft with `get_agentmail_inbox_draft` first, since this call takes no content of its own and sends whatever the draft currently holds. Every AIsa caller shares one AgentMail account, so this reaches inboxes other callers created.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/drafts/{draft_id}/send" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Create Inbox List Entry
Source: https://aisa.one/docs/api-reference/agentmail/post_agentmail-inboxes-inbox-id-lists-direction-type
openapi/agentmail.json POST /agentmail/inboxes/{inbox_id}/lists/{direction}/{type}
Adds one address or domain to an inbox's allow or block list and returns the created entry.
Adds one address or domain to an inbox's allow or block list and returns the created entry. This changes which mail the inbox will accept or send from that point on, so it is a standing rule rather than a one-off action. Writes to the shared AgentMail workspace: Every AIsa caller shares one AgentMail account, so this reaches inboxes other callers created, and what you write here is visible and editable by the next caller. Remove one with `delete_agentmail_inbox_list_entry`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/lists/{direction}/{type}" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Forward Message
Source: https://aisa.one/docs/api-reference/agentmail/post_agentmail-inboxes-inbox-id-messages-message-id-forward
openapi/agentmail.json POST /agentmail/inboxes/{inbox_id}/messages/{message_id}/forward
Forwards one message to new recipients and returns message_id and thread_id.
Forwards one message to new recipients and returns `message_id` and `thread_id`. 🔴 **This sends real email and it cannot be recalled, and it passes along the original content including attachments** — check what you are forwarding with `get_agentmail_inbox_message` first. Every AIsa caller shares one AgentMail account, so this reaches inboxes other callers created. To answer instead of forward, use `post_agentmail_inbox_message_reply`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/{message_id}/forward" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Reply To Message
Source: https://aisa.one/docs/api-reference/agentmail/post_agentmail-inboxes-inbox-id-messages-message-id-reply
openapi/agentmail.json POST /agentmail/inboxes/{inbox_id}/messages/{message_id}/reply
Replies to one message, threading the response correctly, and returns message_id and thread_id.
Replies to one message, threading the response correctly, and returns `message_id` and `thread_id`. 🔴 **This sends real email and it cannot be recalled.** It answers the sender only — `post_agentmail_inbox_message_reply_all` answers every recipient, which is a materially different blast radius, so pick deliberately. Every AIsa caller shares one AgentMail account, so this reaches inboxes other callers created. To send to a fresh set of recipients use `post_agentmail_inbox_message_send`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/{message_id}/reply" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Reply All To Message
Source: https://aisa.one/docs/api-reference/agentmail/post_agentmail-inboxes-inbox-id-messages-message-id-reply-all
openapi/agentmail.json POST /agentmail/inboxes/{inbox_id}/messages/{message_id}/reply-all
Replies to one message and every other recipient on it, returning message_id and thread_id.
Replies to one message and **every other recipient on it**, returning `message_id` and `thread_id`. 🔴 **This sends real email to everyone in the thread and it cannot be recalled.** Use `post_agentmail_inbox_message_reply` when only the sender should receive the answer — that is the safer default and the two differ only in recipients. Every AIsa caller shares one AgentMail account, so this reaches inboxes other callers created.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/{message_id}/reply-all" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Send Message
Source: https://aisa.one/docs/api-reference/agentmail/post_agentmail-inboxes-inbox-id-messages-send
openapi/agentmail.json POST /agentmail/inboxes/{inbox_id}/messages/send
Sends a new email from one inbox and returns message_id and thread_id.
Sends a new email from one inbox and returns `message_id` and `thread_id`. Takes `to`, `cc`, `bcc`, `subject`, `text`, `html`, `labels` and `attachments`. 🔴 **This sends real email and it cannot be recalled.** Every AIsa caller shares one AgentMail account, so this reaches inboxes other callers created, so the sending address may not be one you created — check `get_agentmail_inbox` first. To answer an existing message use `post_agentmail_inbox_message_reply`; to write without sending, `post_agentmail_inbox_draft`.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/agentmail/inboxes/{inbox_id}/messages/send" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Create Account List Entry
Source: https://aisa.one/docs/api-reference/agentmail/post_agentmail-lists-direction-type
openapi/agentmail.json POST /agentmail/lists/{direction}/{type}
Adds one address or domain to an account-wide allow or block list and returns the created entry.
Adds one address or domain to an **account-wide** allow or block list and returns the created entry. 🔴 This is a standing rule that changes mail handling for **every inbox in the account, including other callers'** — the inbox-scoped `post_agentmail_inbox_list_entry` affects only one inbox and is almost always the one you want. Every AIsa caller shares one AgentMail account, so this reaches inboxes other callers created.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/agentmail/lists/{direction}/{type}" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List Account Stages
Source: https://aisa.one/docs/api-reference/apollo/get_apollo-account-stages
openapi/apollo.json GET /apollo/account_stages
The account stages configured in this workspace, as an account_stages array of id, name, display_name, display_order, category and is_meeting_set.
The account stages configured in this workspace, as an `account_stages` array of `id`, `name`, `display_name`, `display_order`, `category` and `is_meeting_set`. Takes no parameters. Call it before creating or updating accounts: stage fields expect a stage id, and the set is workspace-specific rather than a fixed enum.
# View an Account
Source: https://aisa.one/docs/api-reference/apollo/get_apollo-accounts-id
openapi/apollo.json GET /apollo/accounts/{id}
One saved account by its Apollo id, with its full field set including custom fields and owner.
One saved account by its Apollo id, with its full field set including custom fields and owner. Find the id with [`post_apollo_accounts_search`](/docs/api-reference/apollo/post_apollo-accounts-search). This reads the shared AIsa workspace, not Apollo's global database — for a company you have not saved, use [`get_apollo_organizations_enrich`](/docs/api-reference/apollo/get_apollo-organizations-enrich).
# Update an Account
Source: https://aisa.one/docs/api-reference/apollo/patch_apollo-accounts-account-id
openapi/apollo.json PATCH /apollo/accounts/{account_id}
Update one account by its Apollo id.
Update one account by its Apollo id. Send only the fields you intend to change; anything you omit keeps its current value. Stage fields expect an id from [`get_apollo_account_stages`](/docs/api-reference/apollo/get_apollo-account-stages). Writes land in the AIsa workspace, which every caller shares: the record becomes visible and editable by others, and there is no per-caller isolation.
# Create an Account
Source: https://aisa.one/docs/api-reference/apollo/post_apollo-accounts
openapi/apollo.json POST /apollo/accounts
Create an account — a company saved into this workspace.
Create an account — a company saved into this workspace. Duplicate domains are rejected, so search with [`post_apollo_accounts_search`](/docs/api-reference/apollo/post_apollo-accounts-search) before creating. Requires a master API key. Writes land in the AIsa workspace, which every caller shares: the record becomes visible and editable by others, and there is no per-caller isolation. To enrich a company without saving it, use [`get_apollo_organizations_enrich`](/docs/api-reference/apollo/get_apollo-organizations-enrich).
# Bulk Create Accounts
Source: https://aisa.one/docs/api-reference/apollo/post_apollo-accounts-bulk-create
openapi/apollo.json POST /apollo/accounts/bulk_create
Create several accounts in one call.
Create several accounts in one call. Same duplicate-domain rule as [`post_apollo_accounts`](/docs/api-reference/apollo/post_apollo-accounts), applied per record, so a partial success is normal — read the response rather than assuming every row was created. Writes land in the AIsa workspace, which every caller shares: the record becomes visible and editable by others, and there is no per-caller isolation.
# Get Google Search By Image HTML Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-search-by-image-task-get-html-id
openapi/dataforseo.json GET /dataforseo/serp/google/search_by_image/task_get/html/{id}
Retrieves a queued Google search by image result by id as raw HTML.
Retrieves a queued Google search by image result by `id` as raw HTML. 🔴 Measured at 2.4 MB against 57 KB parsed on the Google organic pair. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/search_by_image/task_get/html/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Search By Image SERP Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-google-search-by-image-tasks-ready
openapi/dataforseo.json GET /dataforseo/serp/google/search_by_image/tasks_ready
Lists finished Google search by image tasks awaiting collection.
Lists finished Google search by image tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Rarely needed: a caller holds the `id` its own submit returned and can fetch directly. This answers what is ready across the whole account.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/google/search_by_image/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Naver Organic SERP Advanced Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-naver-organic-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/serp/naver/organic/task_get/advanced/{id}
Retrieves a queued Naver organic result by id.
Retrieves a queued Naver organic result by `id`. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/naver/organic/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Naver Organic HTML Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-naver-organic-task-get-html-id
openapi/dataforseo.json GET /dataforseo/serp/naver/organic/task_get/html/{id}
Retrieves a queued Naver organic result by id as raw HTML.
Retrieves a queued Naver organic result by `id` as raw HTML. 🔴 Measured at 2.4 MB against 57 KB parsed on the Google organic pair. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/naver/organic/task_get/html/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Naver Organic SERP Results by id(regular)
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-naver-organic-task-get-regular-id
openapi/dataforseo.json GET /dataforseo/serp/naver/organic/task_get/regular/{id}
Retrieves a queued Naver organic result by id, lightly parsed - measured at 4.
Retrieves a queued Naver organic result by `id`, lightly parsed - measured at 4.8 KB against 57 KB for the advanced form. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/naver/organic/task_get/regular/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Organic SERP Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-naver-organic-tasks-ready
openapi/dataforseo.json GET /dataforseo/serp/naver/organic/tasks_ready
Lists finished Naver organic tasks awaiting collection.
Lists finished Naver organic tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Rarely needed: a caller holds the `id` its own submit returned and can fetch directly. This answers what is ready across the whole account.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/naver/organic/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Seznam Languages for SERP
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-seznam-languages
openapi/dataforseo.json GET /dataforseo/serp/seznam/languages
The languages the Seznam SERP endpoints accept, as language_name and language_code.
The languages the Seznam SERP endpoints accept, as `language_name` and `language_code`. Free: upstream cost is 0. Reference data - fetch once and reuse. The location list for Seznam is far larger and should not be fetched at all; see its own description.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/seznam/languages" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Seznam Locations for SERP
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-seznam-locations
openapi/dataforseo.json GET /dataforseo/serp/seznam/locations
The locations the Seznam SERP endpoints accept, as location_code, location_name, location_code_parent, country_iso_code and location_type.
The locations the Seznam SERP endpoints accept, as `location_code`, `location_name`, `location_code_parent`, `country_iso_code` and `location_type`. 🔴 **Measured at 42 MB on the YouTube list, and the Google-side catalogues elsewhere in this provider run 40-46 MB** - every city and region on earth. Do not call this from an agent: `location_code` 2840 is the United States, and other codes belong in DataForSEO's documentation. Free upstream, so nothing bills and nothing warns before it lands.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/seznam/locations" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Seznam Organic SERP Advanced Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-seznam-organic-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/serp/seznam/organic/task_get/advanced/{id}
Retrieves a queued Seznam organic result by id.
Retrieves a queued Seznam organic result by `id`. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/seznam/organic/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Seznam Organic HTML Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-seznam-organic-task-get-html-id
openapi/dataforseo.json GET /dataforseo/serp/seznam/organic/task_get/html/{id}
Retrieves a queued Seznam organic result by id as raw HTML.
Retrieves a queued Seznam organic result by `id` as raw HTML. 🔴 Measured at 2.4 MB against 57 KB parsed on the Google organic pair. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/seznam/organic/task_get/html/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Seznam Organic SERP Results by id(regular)
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-seznam-organic-task-get-regular-id
openapi/dataforseo.json GET /dataforseo/serp/seznam/organic/task_get/regular/{id}
Retrieves a queued Seznam organic result by id, lightly parsed - measured at 4.
Retrieves a queued Seznam organic result by `id`, lightly parsed - measured at 4.8 KB against 57 KB for the advanced form. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/seznam/organic/task_get/regular/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Organic SERP Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-seznam-organic-tasks-ready
openapi/dataforseo.json GET /dataforseo/serp/seznam/organic/tasks_ready
Lists finished Seznam organic tasks awaiting collection.
Lists finished Seznam organic tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Rarely needed: a caller holds the `id` its own submit returned and can fetch directly. This answers what is ready across the whole account.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/seznam/organic/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Yahoo Languages for SERP
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-yahoo-languages
openapi/dataforseo.json GET /dataforseo/serp/yahoo/languages
The languages the Yahoo SERP endpoints accept, as language_name and language_code.
The languages the Yahoo SERP endpoints accept, as `language_name` and `language_code`. Free: upstream cost is 0. Reference data - fetch once and reuse. The location list for Yahoo is far larger and should not be fetched at all; see its own description.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/yahoo/languages" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Yahoo Locations for SERP
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-yahoo-locations
openapi/dataforseo.json GET /dataforseo/serp/yahoo/locations
The locations the Yahoo SERP endpoints accept, as location_code, location_name, location_code_parent, country_iso_code and location_type.
The locations the Yahoo SERP endpoints accept, as `location_code`, `location_name`, `location_code_parent`, `country_iso_code` and `location_type`. 🔴 **Measured at 42 MB on the YouTube list, and the Google-side catalogues elsewhere in this provider run 40-46 MB** - every city and region on earth. Do not call this from an agent: `location_code` 2840 is the United States, and other codes belong in DataForSEO's documentation. Free upstream, so nothing bills and nothing warns before it lands.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/yahoo/locations" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Yahoo Organic SERP Advanced Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-yahoo-organic-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/serp/yahoo/organic/task_get/advanced/{id}
Retrieves a queued Yahoo organic result by id.
Retrieves a queued Yahoo organic result by `id`. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/yahoo/organic/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Yahoo Organic HTML Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-yahoo-organic-task-get-html-id
openapi/dataforseo.json GET /dataforseo/serp/yahoo/organic/task_get/html/{id}
Retrieves a queued Yahoo organic result by id as raw HTML.
Retrieves a queued Yahoo organic result by `id` as raw HTML. 🔴 Measured at 2.4 MB against 57 KB parsed on the Google organic pair. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/yahoo/organic/task_get/html/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Yahoo Organic SERP Results by id(regular)
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-yahoo-organic-task-get-regular-id
openapi/dataforseo.json GET /dataforseo/serp/yahoo/organic/task_get/regular/{id}
Retrieves a queued Yahoo organic result by id, lightly parsed - measured at 4.
Retrieves a queued Yahoo organic result by `id`, lightly parsed - measured at 4.8 KB against 57 KB for the advanced form. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/yahoo/organic/task_get/regular/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Organic SERP Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-yahoo-organic-tasks-ready
openapi/dataforseo.json GET /dataforseo/serp/yahoo/organic/tasks_ready
Lists finished Yahoo organic tasks awaiting collection.
Lists finished Yahoo organic tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Rarely needed: a caller holds the `id` its own submit returned and can fetch directly. This answers what is ready across the whole account.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/yahoo/organic/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Youtube Languages for SERP
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-youtube-languages
openapi/dataforseo.json GET /dataforseo/serp/youtube/languages
The languages the YouTube SERP endpoints accept, as language_name and language_code.
The languages the YouTube SERP endpoints accept, as `language_name` and `language_code`. Free: upstream cost is 0. Reference data - fetch once and reuse. The location list for YouTube is far larger and should not be fetched at all; see its own description.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/youtube/languages" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# List of Youtube Locations for SERP
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-youtube-locations
openapi/dataforseo.json GET /dataforseo/serp/youtube/locations
The locations the YouTube SERP endpoints accept, as location_code, location_name, location_code_parent, country_iso_code and location_type.
The locations the YouTube SERP endpoints accept, as `location_code`, `location_name`, `location_code_parent`, `country_iso_code` and `location_type`. 🔴 **Measured at 42 MB on the YouTube list, and the Google-side catalogues elsewhere in this provider run 40-46 MB** - every city and region on earth. Do not call this from an agent: `location_code` 2840 is the United States, and other codes belong in DataForSEO's documentation. Free upstream, so nothing bills and nothing warns before it lands.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/youtube/locations" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get YouTube Organic Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-youtube-organic-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/serp/youtube/organic/task_get/advanced/{id}
Retrieves a queued YouTube organic result by id.
Retrieves a queued YouTube organic result by `id`. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/youtube/organic/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Organic SERP Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-youtube-organic-tasks-ready
openapi/dataforseo.json GET /dataforseo/serp/youtube/organic/tasks_ready
Lists finished YouTube organic tasks awaiting collection.
Lists finished YouTube organic tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Rarely needed: a caller holds the `id` its own submit returned and can fetch directly. This answers what is ready across the whole account.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/youtube/organic/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get YouTube Comments Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-youtube-video-comments-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/serp/youtube/video_comments/task_get/advanced/{id}
Retrieves a queued YouTube video comments result by id.
Retrieves a queued YouTube video comments result by `id`. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/youtube/video_comments/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Video Comments SERP Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-youtube-video-comments-tasks-ready
openapi/dataforseo.json GET /dataforseo/serp/youtube/video_comments/tasks_ready
Lists finished YouTube video comments tasks awaiting collection.
Lists finished YouTube video comments tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Rarely needed: a caller holds the `id` its own submit returned and can fetch directly. This answers what is ready across the whole account.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/youtube/video_comments/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get YouTube Video Info Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-youtube-video-info-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/serp/youtube/video_info/task_get/advanced/{id}
Retrieves a queued YouTube video info result by id.
Retrieves a queued YouTube video info result by `id`. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/youtube/video_info/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Video Info SERP Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-youtube-video-info-tasks-ready
openapi/dataforseo.json GET /dataforseo/serp/youtube/video_info/tasks_ready
Lists finished YouTube video info tasks awaiting collection.
Lists finished YouTube video info tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Rarely needed: a caller holds the `id` its own submit returned and can fetch directly. This answers what is ready across the whole account.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/youtube/video_info/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get YouTube Subtitles Results by id
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-youtube-video-subtitles-task-get-advanced-id
openapi/dataforseo.json GET /dataforseo/serp/youtube/video_subtitles/task_get/advanced/{id}
Retrieves a queued YouTube video subtitles result by id.
Retrieves a queued YouTube video subtitles result by `id`. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Free - the charge was on the submit. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/youtube/video_subtitles/task_get/advanced/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Get Video Subtitles SERP Completed Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/get_dataforseo-serp-youtube-video-subtitles-tasks-ready
openapi/dataforseo.json GET /dataforseo/serp/youtube/video_subtitles/tasks_ready
Lists finished YouTube video subtitles tasks awaiting collection.
Lists finished YouTube video subtitles tasks awaiting collection. Free. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. ⚠️ Rarely needed: a caller holds the `id` its own submit returned and can fetch directly. This answers what is ready across the whole account.
## Example
```bash theme={null}
curl -X GET "https://api.aisa.one/apis/v1/dataforseo/serp/youtube/video_subtitles/tasks_ready" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Setting Google Search By Image SERP Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-google-search-by-image-task-post
openapi/dataforseo.json POST /dataforseo/serp/google/search_by_image/task_post
Queues the pages Google finds for an image URL on Google, returning a task id in tasks[0].
Queues the pages Google finds for an image URL on Google, returning a task `id` in `tasks[0].id`. The charge lands here; fetching is free, including re-fetching. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The live twin answers immediately and is simpler for a single query; queue when the batch would outlast a tool call.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/google/search_by_image/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"image_url": "...", "location_code": "...", "location_name": "..."}]'
```
# Setting Naver Organic SERP Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-naver-organic-task-post
openapi/dataforseo.json POST /dataforseo/serp/naver/organic/task_post
Queues the ranked results for a keyword on Naver, returning a task id in tasks[0].
Queues the ranked results for a keyword on Naver, returning a task `id` in `tasks[0].id`. The charge lands here; fetching is free, including re-fetching. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The live twin answers immediately and is simpler for a single query; queue when the batch would outlast a tool call.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/naver/organic/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# SERP API Page Screenshot
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-screenshot
openapi/dataforseo.json POST /dataforseo/serp/screenshot
Returns a rendered screenshot of a search result page on Google.
Returns a rendered screenshot of a search result page on Google. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/screenshot" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"task_id": "...", "browser_preset": "...", "browser_screen_width": "..."}]'
```
# Setting Seznam Organic SERP Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-seznam-organic-task-post
openapi/dataforseo.json POST /dataforseo/serp/seznam/organic/task_post
Queues the ranked results for a keyword on Seznam, returning a task id in tasks[0].
Queues the ranked results for a keyword on Seznam, returning a task `id` in `tasks[0].id`. The charge lands here; fetching is free, including re-fetching. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The live twin answers immediately and is simpler for a single query; queue when the batch would outlast a tool call.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/seznam/organic/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Live Yahoo Organic SERP Advanced
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-yahoo-organic-live-advanced
openapi/dataforseo.json POST /dataforseo/serp/yahoo/organic/live/advanced
Returns the ranked results for a keyword on Yahoo, synchronously.
Returns the ranked results for a keyword on Yahoo, synchronously. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Measured at 57 KB for a ten-result Google query. ⚠️ Three result depths exist for the same query and differ by two orders of magnitude: `regular` measured 4.8 KB, `advanced` 57 KB, and `html` **2.4 MB**. `advanced` is the default choice; take `regular` when only the ranked list matters and `html` only to check what the parser dropped. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/yahoo/organic/live/advanced" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Live Yahoo Organic SERP HTML
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-yahoo-organic-live-html
openapi/dataforseo.json POST /dataforseo/serp/yahoo/organic/live/html
Returns the ranked results for a keyword on Yahoo, synchronously.
Returns the ranked results for a keyword on Yahoo, synchronously. Raw page source rather than parsed results. 🔴 **Measured at 2.4 MB for a ten-result Google query, against 57 KB parsed** - take it only to check what the parser dropped. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/yahoo/organic/live/html" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Live Yahoo Organic SERP Regular
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-yahoo-organic-live-regular
openapi/dataforseo.json POST /dataforseo/serp/yahoo/organic/live/regular
Returns the ranked results for a keyword on Yahoo, synchronously.
Returns the ranked results for a keyword on Yahoo, synchronously. The lighter parse: measured at 4.8 KB against 57 KB for `advanced`, carrying the ranked list without the surrounding SERP features. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/yahoo/organic/live/regular" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Setting Yahoo Organic SERP Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-yahoo-organic-task-post
openapi/dataforseo.json POST /dataforseo/serp/yahoo/organic/task_post
Queues the ranked results for a keyword on Yahoo, returning a task id in tasks[0].
Queues the ranked results for a keyword on Yahoo, returning a task `id` in `tasks[0].id`. The charge lands here; fetching is free, including re-fetching. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The live twin answers immediately and is simpler for a single query; queue when the batch would outlast a tool call.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/yahoo/organic/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Live YouTube Organic Advanced
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-youtube-organic-live-advanced
openapi/dataforseo.json POST /dataforseo/serp/youtube/organic/live/advanced
Returns the ranked results for a keyword on YouTube, synchronously.
Returns the ranked results for a keyword on YouTube, synchronously. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Measured at 57 KB for a ten-result Google query. ⚠️ Three result depths exist for the same query and differ by two orders of magnitude: `regular` measured 4.8 KB, `advanced` 57 KB, and `html` **2.4 MB**. `advanced` is the default choice; take `regular` when only the ranked list matters and `html` only to check what the parser dropped. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/youtube/organic/live/advanced" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Setting YouTube Organic Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-youtube-organic-task-post
openapi/dataforseo.json POST /dataforseo/serp/youtube/organic/task_post
Queues the ranked results for a keyword on YouTube, returning a task id in tasks[0].
Queues the ranked results for a keyword on YouTube, returning a task `id` in `tasks[0].id`. The charge lands here; fetching is free, including re-fetching. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The live twin answers immediately and is simpler for a single query; queue when the batch would outlast a tool call.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/youtube/organic/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"keyword": "...", "location_name": "...", "location_code": "..."}]'
```
# Live YouTube Comments Advanced
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-youtube-video-comments-live-advanced
openapi/dataforseo.json POST /dataforseo/serp/youtube/video_comments/live/advanced
Returns the comments on one YouTube video on YouTube, synchronously.
Returns the comments on one YouTube video on YouTube, synchronously. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Measured at 57 KB for a ten-result Google query. ⚠️ Three result depths exist for the same query and differ by two orders of magnitude: `regular` measured 4.8 KB, `advanced` 57 KB, and `html` **2.4 MB**. `advanced` is the default choice; take `regular` when only the ranked list matters and `html` only to check what the parser dropped. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/youtube/video_comments/live/advanced" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"video_id": "..."}]'
```
# Setting YouTube Comments Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-youtube-video-comments-task-post
openapi/dataforseo.json POST /dataforseo/serp/youtube/video_comments/task_post
Queues the comments on one YouTube video on YouTube, returning a task id in tasks[0].
Queues the comments on one YouTube video on YouTube, returning a task `id` in `tasks[0].id`. The charge lands here; fetching is free, including re-fetching. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The live twin answers immediately and is simpler for a single query; queue when the batch would outlast a tool call.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/youtube/video_comments/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"video_id": "...", "priority": "...", "postback_url": "..."}]'
```
# Live YouTube Video Info Advanced
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-youtube-video-info-live-advanced
openapi/dataforseo.json POST /dataforseo/serp/youtube/video_info/live/advanced
Returns one YouTube video's metadata on YouTube, synchronously.
Returns one YouTube video's metadata on YouTube, synchronously. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Measured at 57 KB for a ten-result Google query. ⚠️ Three result depths exist for the same query and differ by two orders of magnitude: `regular` measured 4.8 KB, `advanced` 57 KB, and `html` **2.4 MB**. `advanced` is the default choice; take `regular` when only the ranked list matters and `html` only to check what the parser dropped. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/youtube/video_info/live/advanced" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"video_id": "...", "location_name": "...", "location_code": "..."}]'
```
# Setting YouTube Video Info Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-youtube-video-info-task-post
openapi/dataforseo.json POST /dataforseo/serp/youtube/video_info/task_post
Queues one YouTube video's metadata on YouTube, returning a task id in tasks[0].
Queues one YouTube video's metadata on YouTube, returning a task `id` in `tasks[0].id`. The charge lands here; fetching is free, including re-fetching. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The live twin answers immediately and is simpler for a single query; queue when the batch would outlast a tool call.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/youtube/video_info/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"video_id": "...", "location_name": "...", "location_code": "..."}]'
```
# Live YouTube Subtitles Advanced
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-youtube-video-subtitles-live-advanced
openapi/dataforseo.json POST /dataforseo/serp/youtube/video_subtitles/live/advanced
Returns one YouTube video's subtitle track on YouTube, synchronously.
Returns one YouTube video's subtitle track on YouTube, synchronously. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Measured at 57 KB for a ten-result Google query. ⚠️ Three result depths exist for the same query and differ by two orders of magnitude: `regular` measured 4.8 KB, `advanced` 57 KB, and `html` **2.4 MB**. `advanced` is the default choice; take `regular` when only the ranked list matters and `html` only to check what the parser dropped. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/youtube/video_subtitles/live/advanced" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"video_id": "...", "language_code": "..."}]'
```
# Setting YouTube Subtitles Tasks
Source: https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-youtube-video-subtitles-task-post
openapi/dataforseo.json POST /dataforseo/serp/youtube/video_subtitles/task_post
Queues one YouTube video's subtitle track on YouTube, returning a task id in tasks[0].
Queues one YouTube video's subtitle track on YouTube, returning a task `id` in `tasks[0].id`. The charge lands here; fetching is free, including re-fetching. 💰 Measured at $0.002 upstream against the $0.012 billed - this family is the cheapest source of search data here, six times under the flat rate. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200. The live twin answers immediately and is simpler for a single query; queue when the batch would outlast a tool call.
## Example
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/youtube/video_subtitles/task_post" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[{"video_id": "...", "language_code": "...", "priority": "..."}]'
```
# Domain Rating
Source: https://aisa.one/docs/api-reference/ahrefs/get_ahrefs-site-explorer-domain-rating
openapi/ahrefs.json GET /ahrefs/site-explorer/domain-rating
Ahrefs Domain Rating (0-100 authority score) and Ahrefs Rank for a domain.
Return the Ahrefs Domain Rating (0-100 authority score) and Ahrefs Rank for a target domain on a given date.
**Billing is per successful call**, \$0.02. Failed calls (4xx/5xx) are not charged.
Related: [`get_ahrefs-site-explorer-metrics`](/docs/api-reference/ahrefs/get_ahrefs-site-explorer-metrics).
# Site Metrics
Source: https://aisa.one/docs/api-reference/ahrefs/get_ahrefs-site-explorer-metrics
openapi/ahrefs.json GET /ahrefs/site-explorer/metrics
Ahrefs Site Explorer core metrics: organic/paid keywords, organic traffic, and traffic value.
Return core Site Explorer metrics for a target domain on a given date: organic and paid keyword counts, top-3 keyword count, organic traffic, and traffic value.
**Billing is per successful call**, \$0.18. Failed calls (4xx/5xx) are not charged.
Related: [`get_ahrefs-site-explorer-domain-rating`](/docs/api-reference/ahrefs/get_ahrefs-site-explorer-domain-rating).
# List Contact Stages
Source: https://aisa.one/docs/api-reference/apollo/get_apollo-contact-stages
openapi/apollo.json GET /apollo/contact_stages
The contact stages configured in this workspace, as a contact_stages array of id, name, display_name, display_order, category and is_meeting_set.
The contact stages configured in this workspace, as a `contact_stages` array of `id`, `name`, `display_name`, `display_order`, `category` and `is_meeting_set`. Takes no parameters. Call it before setting a contact's stage: [`post_apollo_contacts_update_stages`](/docs/api-reference/apollo/post_apollo-contacts-update-stages) expects a stage id from this list, and the set is workspace-specific.
# View a Contact
Source: https://aisa.one/docs/api-reference/apollo/get_apollo-contacts-contact-id
openapi/apollo.json GET /apollo/contacts/{contact_id}
One saved contact by its Apollo id, with the full field set including custom fields, owner and stage.
One saved contact by its Apollo id, with the full field set including custom fields, owner and stage. Find the id with [`post_apollo_contacts_search`](/docs/api-reference/apollo/post_apollo-contacts-search). Reads the shared workspace, not Apollo's global database.
# Get a List of Email Accounts
Source: https://aisa.one/docs/api-reference/apollo/get_apollo-email-accounts
openapi/apollo.json GET /apollo/email_accounts
The mailboxes connected to this workspace, as an email_accounts array with sending limits and per-account state.
The mailboxes connected to this workspace, as an `email_accounts` array with sending limits and per-account state. Takes no parameters. Check it before activating a sequence: a sequence with no healthy connected mailbox will not send.
# Check Email Stats
Source: https://aisa.one/docs/api-reference/apollo/get_apollo-emailer-messages-id-activities
openapi/apollo.json GET /apollo/emailer_messages/{id}/activities
Engagement events for one sent email: opens, clicks, replies and bounces, with timestamps.
Engagement events for one sent email: opens, clicks, replies and bounces, with timestamps. Get the message id from [`get_apollo_emailer_messages_search`](/docs/api-reference/apollo/get_apollo-emailer-messages-search). Use this rather than inferring engagement from the message record itself, which carries delivery state but not recipient behaviour.
# Search for Outreach Emails
Source: https://aisa.one/docs/api-reference/apollo/get_apollo-emailer-messages-search
openapi/apollo.json GET /apollo/emailer_messages/search
Search individual outreach emails already sent or scheduled from this workspace.
Search individual outreach emails already sent or scheduled from this workspace. Returns `emailer_messages` alongside `emailer_steps`, which say where in a sequence each message sits. Use it to see what actually went out. For per-message engagement — opens, clicks, replies — use [`get_apollo_emailer_messages_id_activities`](/docs/api-reference/apollo/get_apollo-emailer-messages-id-activities).
# Get a List of Fields
Source: https://aisa.one/docs/api-reference/apollo/get_apollo-fields
openapi/apollo.json GET /apollo/fields
Every field Apollo exposes, standard and custom, as fields (roughly 323 entries with id, field_name, label, type, category, modality, description and...
Every field Apollo exposes, standard and custom, as `fields` (roughly 323 entries with `id`, `field_name`, `label`, `type`, `category`, `modality`, `description` and `example`) plus `field_groups` describing how they are organised. Takes no parameters. This is the reference for what can be filtered or written anywhere else in the API. For custom fields alone, [`get_apollo_typed_custom_fields`](/docs/api-reference/apollo/get_apollo-typed-custom-fields) is much smaller.
# Get a List of All Lists
Source: https://aisa.one/docs/api-reference/apollo/get_apollo-labels
openapi/apollo.json GET /apollo/labels
The lists (labels) defined in this workspace.
The lists (labels) defined in this workspace. The HTTP response is a bare JSON array; called as an MCP tool it arrives wrapped as `{"result": [...]}`, because a top-level array is not a valid structured result. Takes no parameters. Empty is a normal answer when no lists exist. Use it to resolve a list name into the id that contact and account filters expect.
# Get a List of Notes
Source: https://aisa.one/docs/api-reference/apollo/get_apollo-notes
openapi/apollo.json GET /apollo/notes
Notes attached to workspace records.
Notes attached to workspace records. ⚠️ At least one filter is required — calling it bare returns HTTP 400 with "At least one argument is required". Pass one of `contact_id`, `account_id`, `opportunity_id`, `calendar_event_id`, `conversation_id`, `conversation_ids`, `contact_ids` or a `start_date`. The spec marks every one of them optional individually, which is true only in the sense that no single one is mandatory.
# View Deal
Source: https://aisa.one/docs/api-reference/apollo/get_apollo-opportunities-opportunity-id
openapi/apollo.json GET /apollo/opportunities/{opportunity_id}
One deal by its Apollo id, with the full field set.
One deal by its Apollo id, with the full field set. Find the id with [`get_apollo_opportunities_search`](/docs/api-reference/apollo/get_apollo-opportunities-search).
# List All Deals
Source: https://aisa.one/docs/api-reference/apollo/get_apollo-opportunities-search
openapi/apollo.json GET /apollo/opportunities/search
Search deals in this workspace.
Search deals in this workspace. Filter by owner, stage, amount and close date; page with `page` and `per_page`. Returns `opportunities` with `id`, `name`, `amount`, `closed_date`, `stage_name`, `opportunity_stage_id`, `account_id`, `owner_id`, `is_closed`, `is_won` and `description`. ⚠️ Shared workspace: results include deals other AIsa callers created.
# List Deal Stages
Source: https://aisa.one/docs/api-reference/apollo/get_apollo-opportunity-stages
openapi/apollo.json GET /apollo/opportunity_stages
The deal stages configured in this workspace, as an opportunity_stages array of id, name, display_order, probability, is_won, is_closed,...
The deal stages configured in this workspace, as an `opportunity_stages` array of `id`, `name`, `display_order`, `probability`, `is_won`, `is_closed`, `forecast_category_cd` and `type`. Takes no parameters. Call it before creating or moving a deal: stage fields expect an id from this list, and `probability` is what turns a stage into a forecast number.
# Organization Enrichment
Source: https://aisa.one/docs/api-reference/apollo/get_apollo-organizations-enrich
openapi/apollo.json GET /apollo/organizations/enrich
Enrich one company by domain.
Enrich one company by domain. `domain` is the only parameter and it must be the bare domain (apple.com), not a full URL. Returns an `organization` object with `id`, `name`, `website_url`, `linkedin_url`, `twitter_url`, `facebook_url`, `angellist_url`, `phone`, `founded_year`, `alexa_ranking`, `publicly_traded_symbol`, `publicly_traded_exchange` and `languages`. Use it as the entry point when all you have is a domain. For several domains at once use [`post_apollo_organizations_bulk_enrich`](/docs/api-reference/apollo/post_apollo-organizations-bulk-enrich); for the full record including funding and technology detail use [`get_apollo_organizations_id`](/docs/api-reference/apollo/get_apollo-organizations-id), which needs the Apollo organization id this call returns.
# Get Complete Organization Info
Source: https://aisa.one/docs/api-reference/apollo/get_apollo-organizations-id
openapi/apollo.json GET /apollo/organizations/{id}
The complete Apollo record for one company, by Apollo organization id (not by domain).
The complete Apollo record for one company, by Apollo organization id (not by domain). Returns an `organization` object carrying everything enrichment returns plus the deeper fields: funding history, technology stack, department headcounts and related organizations. Get the id from [`get_apollo_organizations_enrich`](/docs/api-reference/apollo/get_apollo-organizations-enrich) or [`post_apollo_mixed_companies_search`](/docs/api-reference/apollo/post_apollo-mixed-companies-search) first — this endpoint cannot take a domain.
# Organization Job Postings
Source: https://aisa.one/docs/api-reference/apollo/get_apollo-organizations-organization-id-job-postings
openapi/apollo.json GET /apollo/organizations/{organization_id}/job_postings
Live job postings for one company, by Apollo organization id.
Live job postings for one company, by Apollo organization id. Each posting carries its title, location, posted date and source URL. Useful as a hiring signal — which functions a company is expanding, and where. Get the organization id from [`get_apollo_organizations_enrich`](/docs/api-reference/apollo/get_apollo-organizations-enrich) first. This reads Apollo's job board data, not the company's own careers page, so absence of postings is not proof a company is not hiring.
# Search for Calls
Source: https://aisa.one/docs/api-reference/apollo/get_apollo-phone-calls-search
openapi/apollo.json GET /apollo/phone_calls/search
Search logged calls in this workspace.
Search logged calls in this workspace. Returns `phone_calls` with `pagination`, `breadcrumbs`, `faceting` and `pipeline_total`. These are call records written into Apollo, not telephony data — a call only appears here if something logged it.
# Get a List of All Custom Fields
Source: https://aisa.one/docs/api-reference/apollo/get_apollo-typed-custom-fields
openapi/apollo.json GET /apollo/typed_custom_fields
The custom fields defined in this workspace, as a typed_custom_fields array of id, name, system_name, type, modality, picklist_options and CRM mapping...
The custom fields defined in this workspace, as a `typed_custom_fields` array of `id`, `name`, `system_name`, `type`, `modality`, `picklist_options` and CRM mapping state. Takes no parameters. Call it before writing a custom field: the field key and, for picklists, the allowed values are workspace-specific, and a wrong value is rejected rather than coerced.
# Get a List of Users
Source: https://aisa.one/docs/api-reference/apollo/get_apollo-users-search
openapi/apollo.json GET /apollo/users/search
The user accounts in this Apollo workspace, as a users array with id, first_name, last_name, email, title, team_id and the various credit limits, plus...
The user accounts in this Apollo workspace, as a `users` array with `id`, `first_name`, `last_name`, `email`, `title`, `team_id` and the various credit limits, plus `pagination`. Use it to resolve an `owner_id` seen on a contact, account or deal into a person. ⚠️ This exposes the workspace's own members and their email addresses, and the workspace belongs to AIsa rather than to the caller. Expect it to be slow — measured at roughly 16 seconds.
# Update a Contact
Source: https://aisa.one/docs/api-reference/apollo/patch_apollo-contacts-contact-id
openapi/apollo.json PATCH /apollo/contacts/{contact_id}
Update one contact by its Apollo id.
Update one contact by its Apollo id. Send only the fields you intend to change. Stage fields expect an id from [`get_apollo_contact_stages`](/docs/api-reference/apollo/get_apollo-contact-stages). Writes land in the AIsa workspace, which every caller shares: the record becomes visible and editable by others, and there is no per-caller isolation.
# Update Deal
Source: https://aisa.one/docs/api-reference/apollo/patch_apollo-opportunities-opportunity-id
openapi/apollo.json PATCH /apollo/opportunities/{opportunity_id}
Update one deal by its Apollo id — amount, close date, stage or owner.
Update one deal by its Apollo id — amount, close date, stage or owner. Send only what changes. Moving a deal to a closed stage is what marks it won or lost, since `is_won` and `is_closed` come from the stage rather than being set directly. Writes land in the AIsa workspace, which every caller shares: the record becomes visible and editable by others, and there is no per-caller isolation.
# Bulk Update Accounts
Source: https://aisa.one/docs/api-reference/apollo/post_apollo-accounts-bulk-update
openapi/apollo.json POST /apollo/accounts/bulk_update
Update several accounts in one call, each identified by its Apollo id.
Update several accounts in one call, each identified by its Apollo id. Partial success is normal; check the response per record. Writes land in the AIsa workspace, which every caller shares: the record becomes visible and editable by others, and there is no per-caller isolation.
# Search for Accounts
Source: https://aisa.one/docs/api-reference/apollo/post_apollo-accounts-search
openapi/apollo.json POST /apollo/accounts/search
Search accounts — the companies saved in this Apollo workspace, as opposed to Apollo's global database.
Search accounts — the companies saved in this Apollo workspace, as opposed to Apollo's global database. Filter by name, owner, stage and custom fields; page with `page` and `per_page`. Returns `accounts` and `pagination`, plus `breadcrumbs` echoing the filters applied. ⚠️ This workspace is shared by every AIsa caller, so results include records other callers created. To search Apollo's global company database instead, use [`post_apollo_mixed_companies_search`](/docs/api-reference/apollo/post_apollo-mixed-companies-search).
# Update Account Owner for Multiple Accounts
Source: https://aisa.one/docs/api-reference/apollo/post_apollo-accounts-update-owners
openapi/apollo.json POST /apollo/accounts/update_owners
Reassign the owner of several accounts at once.
Reassign the owner of several accounts at once. Owner ids come from [`get_apollo_users_search`](/docs/api-reference/apollo/get_apollo-users-search). Writes land in the AIsa workspace, which every caller shares: the record becomes visible and editable by others, and there is no per-caller isolation. Reassignment is visible to whoever owned them before.
# Create a Contact
Source: https://aisa.one/docs/api-reference/apollo/post_apollo-contacts
openapi/apollo.json POST /apollo/contacts
Create a contact — a person saved into this workspace.
Create a contact — a person saved into this workspace. Search with [`post_apollo_contacts_search`](/docs/api-reference/apollo/post_apollo-contacts-search) first to avoid duplicates, which Apollo does not reject here the way it rejects duplicate account domains. Writes land in the AIsa workspace, which every caller shares: the record becomes visible and editable by others, and there is no per-caller isolation. To look someone up without saving them, use [`post_apollo_people_match`](/docs/api-reference/apollo/post_apollo-people-match).
# Bulk Create Contacts
Source: https://aisa.one/docs/api-reference/apollo/post_apollo-contacts-bulk-create
openapi/apollo.json POST /apollo/contacts/bulk_create
Create several contacts in one call.
Create several contacts in one call. Partial success is normal; read the response per record rather than assuming every row landed. Writes land in the AIsa workspace, which every caller shares: the record becomes visible and editable by others, and there is no per-caller isolation.
# Bulk Update Contacts
Source: https://aisa.one/docs/api-reference/apollo/post_apollo-contacts-bulk-update
openapi/apollo.json POST /apollo/contacts/bulk_update
Update several contacts in one call, each identified by its Apollo id.
Update several contacts in one call, each identified by its Apollo id. Partial success is normal. Writes land in the AIsa workspace, which every caller shares: the record becomes visible and editable by others, and there is no per-caller isolation.
# Search for Contacts
Source: https://aisa.one/docs/api-reference/apollo/post_apollo-contacts-search
openapi/apollo.json POST /apollo/contacts/search
Search contacts — the people saved in this Apollo workspace.
Search contacts — the people saved in this Apollo workspace. Filter by name, title, account, owner, stage and custom fields; page with `page` and `per_page`. Returns `contacts` with `id`, `name`, `first_name`, `last_name`, `title`, `organization_name`, `linkedin_url`, `contact_stage_id`, `owner_id`, `person_id` and `source`, alongside `pagination` and `model_ids`. ⚠️ The workspace is shared across AIsa callers, so results include contacts other callers created. To find people who are not saved here, use [`post_apollo_mixed_people_api_search`](/docs/api-reference/apollo/post_apollo-mixed-people-api-search).
# Update Contact Owner for Multiple Contacts
Source: https://aisa.one/docs/api-reference/apollo/post_apollo-contacts-update-owners
openapi/apollo.json POST /apollo/contacts/update_owners
Reassign the owner of several contacts at once.
Reassign the owner of several contacts at once. Owner ids come from [`get_apollo_users_search`](/docs/api-reference/apollo/get_apollo-users-search). Writes land in the AIsa workspace, which every caller shares: the record becomes visible and editable by others, and there is no per-caller isolation.
# Update Contact Stage for Multiple Contacts
Source: https://aisa.one/docs/api-reference/apollo/post_apollo-contacts-update-stages
openapi/apollo.json POST /apollo/contacts/update_stages
Move several contacts to a different stage at once.
Move several contacts to a different stage at once. The stage id must come from [`get_apollo_contact_stages`](/docs/api-reference/apollo/get_apollo-contact-stages) — stages are workspace-specific rather than a fixed enum, and an unknown id is rejected. Writes land in the AIsa workspace, which every caller shares: the record becomes visible and editable by others, and there is no per-caller isolation. Stage changes can trigger workspace automations.
# Update Contact Status in a Sequence
Source: https://aisa.one/docs/api-reference/apollo/post_apollo-emailer-campaigns-remove-or-stop-contact-ids
openapi/apollo.json POST /apollo/emailer_campaigns/remove_or_stop_contact_ids
Remove contacts from a sequence, or stop it for them without removing them.
Remove contacts from a sequence, or stop it for them without removing them. Use it to halt sending to someone who replied or asked to stop. Already-sent messages are unaffected — this only prevents future steps. Writes land in the AIsa workspace, which every caller shares: the record becomes visible and editable by others, and there is no per-caller isolation.
# Search for Sequences
Source: https://aisa.one/docs/api-reference/apollo/post_apollo-emailer-campaigns-search
openapi/apollo.json POST /apollo/emailer_campaigns/search
Search email sequences in this workspace.
Search email sequences in this workspace. Returns `emailer_campaigns` with `pagination` and `breadcrumbs`. Use it to find a sequence id before adding contacts to it or changing its state. ⚠️ Sequences here are shared: activating or archiving one affects every AIsa caller, and a live sequence sends real email from the workspace's connected accounts.
# Deactivate a Sequence
Source: https://aisa.one/docs/api-reference/apollo/post_apollo-emailer-campaigns-sequence-id-abort
openapi/apollo.json POST /apollo/emailer_campaigns/{sequence_id}/abort
Deactivate a sequence so it stops sending.
Deactivate a sequence so it stops sending. Contacts stay in it and already-sent messages are unaffected; only future steps are halted. Use it as the stop switch when something is going wrong. Writes land in the AIsa workspace, which every caller shares: the record becomes visible and editable by others, and there is no per-caller isolation.
# Add Contacts to a Sequence
Source: https://aisa.one/docs/api-reference/apollo/post_apollo-emailer-campaigns-sequence-id-add-contact-ids
openapi/apollo.json POST /apollo/emailer_campaigns/{sequence_id}/add_contact_ids
Add contacts to an email sequence.
Add contacts to an email sequence. ⚠️ This is the endpoint that causes real email to be sent: once added to an active sequence, contacts start receiving its steps from the workspace's connected mailboxes. Get the sequence id from [`post_apollo_emailer_campaigns_search`](/docs/api-reference/apollo/post_apollo-emailer-campaigns-search) and confirm its state before adding anyone. Writes land in the AIsa workspace, which every caller shares: the record becomes visible and editable by others, and there is no per-caller isolation. Sending cannot be recalled once a step goes out.
# Activate a Sequence
Source: https://aisa.one/docs/api-reference/apollo/post_apollo-emailer-campaigns-sequence-id-approve
openapi/apollo.json POST /apollo/emailer_campaigns/{sequence_id}/approve
Activate a sequence, which makes it start sending.
Activate a sequence, which makes it start sending. ⚠️ Every contact already in it begins receiving steps from the workspace's connected mailboxes. Check membership with [`post_apollo_emailer_campaigns_search`](/docs/api-reference/apollo/post_apollo-emailer-campaigns-search) and mailbox health with [`get_apollo_email_accounts`](/docs/api-reference/apollo/get_apollo-email-accounts) first. Writes land in the AIsa workspace, which every caller shares: the record becomes visible and editable by others, and there is no per-caller isolation. Activation affects everyone using this workspace.
# Archive a Sequence
Source: https://aisa.one/docs/api-reference/apollo/post_apollo-emailer-campaigns-sequence-id-archive
openapi/apollo.json POST /apollo/emailer_campaigns/{sequence_id}/archive
Archive a sequence, removing it from the active list while keeping its history.
Archive a sequence, removing it from the active list while keeping its history. Archiving does not stop an active sequence on its own — deactivate it with [`post_apollo_emailer_campaigns_sequence_id_abort`](/docs/api-reference/apollo/post_apollo-emailer-campaigns-sequence-id-abort) first if it is still sending. Writes land in the AIsa workspace, which every caller shares: the record becomes visible and editable by others, and there is no per-caller isolation.
# Create a Custom Field
Source: https://aisa.one/docs/api-reference/apollo/post_apollo-fields
openapi/apollo.json POST /apollo/fields
Create a custom field.
Create a custom field. ⚠️ This changes the workspace's schema rather than its data: the field appears on every record of that modality, for every caller, and removing it later is not something this API offers. Check [`get_apollo_typed_custom_fields`](/docs/api-reference/apollo/get_apollo-typed-custom-fields) first — the field you want may already exist. Writes land in the AIsa workspace, which every caller shares: the record becomes visible and editable by others, and there is no per-caller isolation.
# Organization Search
Source: https://aisa.one/docs/api-reference/apollo/post_apollo-mixed-companies-search
openapi/apollo.json POST /apollo/mixed_companies/search
Find companies matching criteria: name, domain, headcount, industry, location, funding stage and technologies in use.
Find companies matching criteria: name, domain, headcount, industry, location, funding stage and technologies in use. Returns `organizations` and `accounts` side by side — organizations are Apollo's global database, accounts are records that already exist in this Apollo workspace — plus `pagination` and `breadcrumbs` echoing the filters that were applied. Use it to build a target list. When you already know the domain, [`get_apollo_organizations_enrich`](/docs/api-reference/apollo/get_apollo-organizations-enrich) answers directly and costs less.
# People API Search
Source: https://aisa.one/docs/api-reference/apollo/post_apollo-mixed-people-api-search
openapi/apollo.json POST /apollo/mixed_people/api_search
Find people matching criteria rather than enriching someone you already identified.
Find people matching criteria rather than enriching someone you already identified. Filter by job title, seniority, location, company domain, headcount and industry, and page with `page` and `per_page`. Returns `total_entries` and a `people` array. Note what search deliberately withholds: entries carry `last_name_obfuscated` and boolean flags — `has_email`, `has_direct_phone`, `has_city`, `has_state`, `has_country` — instead of the values themselves. Search tells you a match exists; enrichment reveals the contact details. Feed the ids into [`post_apollo_people_match`](/docs/api-reference/apollo/post_apollo-people-match) or [`post_apollo_people_bulk_match`](/docs/api-reference/apollo/post_apollo-people-bulk-match) to get emails and phone numbers, which is also where the credits are spent.
# News Articles Search
Source: https://aisa.one/docs/api-reference/apollo/post_apollo-news-articles-search
openapi/apollo.json POST /apollo/news_articles/search
News coverage for specific companies.
News coverage for specific companies. `organization_ids[]` is required — omitting it returns HTTP 422 with "organization\_ids is required", so resolve the companies first with [`get_apollo_organizations_enrich`](/docs/api-reference/apollo/get_apollo-organizations-enrich) or [`post_apollo_mixed_companies_search`](/docs/api-reference/apollo/post_apollo-mixed-companies-search). Narrow further with `categories[]` (funding, hires, launches and similar), `published_at[min]`, `published_at[max]`, and page with `page` and `per_page`. Returns `news_articles` and `pagination`. Use it to catch a trigger event before reaching out.
# Create Deal
Source: https://aisa.one/docs/api-reference/apollo/post_apollo-opportunities
openapi/apollo.json POST /apollo/opportunities
Create a deal.
Create a deal. Stage ids come from [`get_apollo_opportunity_stages`](/docs/api-reference/apollo/get_apollo-opportunity-stages), and the account it belongs to comes from [`post_apollo_accounts_search`](/docs/api-reference/apollo/post_apollo-accounts-search). Writes land in the AIsa workspace, which every caller shares: the record becomes visible and editable by others, and there is no per-caller isolation. Deals feed the workspace's forecast, so a test record distorts numbers other people read.
# Bulk Organization Enrichment
Source: https://aisa.one/docs/api-reference/apollo/post_apollo-organizations-bulk-enrich
openapi/apollo.json POST /apollo/organizations/bulk_enrich
Enrich up to 10 companies in one call.
Enrich up to 10 companies in one call. Body takes `domains`, an array of bare domains. Returns the enriched organizations alongside `status`, `total_requested_domains`, `unique_domains`, `unique_records` and `unique_enriched_records` — compare the requested and enriched counts rather than assuming every domain resolved. For one domain [`get_apollo_organizations_enrich`](/docs/api-reference/apollo/get_apollo-organizations-enrich) is a plain GET.
# Bulk People Enrichment
Source: https://aisa.one/docs/api-reference/apollo/post_apollo-people-bulk-match
openapi/apollo.json POST /apollo/people/bulk_match
Enrich up to 10 people in one call.
Enrich up to 10 people in one call. Body takes `details`, an array of the same identifier objects [`post_apollo_people_match`](/docs/api-reference/apollo/post_apollo-people-match) accepts. Returns `matches` alongside `status`, `total_requested_enrichments`, `unique_enriched_records`, `missing_records` and `credits_consumed` — read `missing_records` rather than assuming every input matched. Costs one credit per record enriched, not per call. Use this over a loop of single calls: same credits, one round trip. For a single person [`post_apollo_people_match`](/docs/api-reference/apollo/post_apollo-people-match) is simpler.
# People Enrichment
Source: https://aisa.one/docs/api-reference/apollo/post_apollo-people-match
openapi/apollo.json POST /apollo/people/match
Enrich one person: give whatever identifiers you have and get back Apollo's full record for them.
Enrich one person: give whatever identifiers you have and get back Apollo's full record for them. Accepts `email`, `first_name` plus `last_name`, `name`, `domain`, `organization_name`, `linkedin_url` or `hashed_email` — the more you supply, the likelier the match. Returns a `person` object with `id`, `name`, `title`, `headline`, `linkedin_url`, `twitter_url`, `github_url`, `photo_url`, `organization_id` and an `employment_history` array, plus a `request_id`. Personal emails and phone numbers are withheld unless `reveal_personal_emails` or `reveal_phone_number` is set, and those cost extra credits. A 200 does not guarantee a match — check whether `person` actually came back. Use [`post_apollo_people_bulk_match`](/docs/api-reference/apollo/post_apollo-people-bulk-match) for up to 10 people in one call; use [`post_apollo_mixed_people_api_search`](/docs/api-reference/apollo/post_apollo-mixed-people-api-search) when you do not have an identifier and need to find candidates first.
# Create Call Records
Source: https://aisa.one/docs/api-reference/apollo/post_apollo-phone-calls
openapi/apollo.json POST /apollo/phone_calls
Log a call record against a contact.
Log a call record against a contact. This writes history into Apollo — it does not place a call and does not connect to any telephony system. Writes land in the AIsa workspace, which every caller shares: the record becomes visible and editable by others, and there is no per-caller isolation.
# Query Analytics Report
Source: https://aisa.one/docs/api-reference/apollo/post_apollo-reports-sync-report
openapi/apollo.json POST /apollo/reports/sync_report
Run an analytics report and get its rows back.
Run an analytics report and get its rows back. Despite being a POST this reads rather than writes; the method reflects that the query goes in the body. Reports cover the shared workspace, so figures include other callers' activity.
# Create a Task
Source: https://aisa.one/docs/api-reference/apollo/post_apollo-tasks
openapi/apollo.json POST /apollo/tasks
Create a task assigned to a workspace user, optionally linked to a contact or account.
Create a task assigned to a workspace user, optionally linked to a contact or account. Owner ids come from [`get_apollo_users_search`](/docs/api-reference/apollo/get_apollo-users-search). Writes land in the AIsa workspace, which every caller shares: the record becomes visible and editable by others, and there is no per-caller isolation.
# Bulk Create Tasks
Source: https://aisa.one/docs/api-reference/apollo/post_apollo-tasks-bulk-create
openapi/apollo.json POST /apollo/tasks/bulk_create
Create several tasks in one call.
Create several tasks in one call. Partial success is normal; read the response per record. Writes land in the AIsa workspace, which every caller shares: the record becomes visible and editable by others, and there is no per-caller isolation.
# Search for Tasks
Source: https://aisa.one/docs/api-reference/apollo/post_apollo-tasks-search
openapi/apollo.json POST /apollo/tasks/search
Search tasks in this workspace.
Search tasks in this workspace. Returns `tasks` with `pagination`, `breadcrumbs`, `faceting` and `pipeline_total`. ⚠️ Shared workspace: results include tasks other AIsa callers created.
# View API Usage Stats and Rate Limits
Source: https://aisa.one/docs/api-reference/apollo/post_apollo-usage-stats-api-usage-stats
openapi/apollo.json POST /apollo/usage_stats/api_usage_stats
Current API usage and rate-limit state for the Apollo key in use: consumption per window and how much headroom is left.
Current API usage and rate-limit state for the Apollo key in use: consumption per window and how much headroom is left. Despite being a POST this reads rather than writes. ⚠️ The limits are the AIsa account's, shared across all callers — one caller exhausting a window affects everyone. Check it when calls start failing on rate limits rather than on their arguments.
# Update Call Records
Source: https://aisa.one/docs/api-reference/apollo/put_apollo-phone-calls-id
openapi/apollo.json PUT /apollo/phone_calls/{id}
Update a logged call by its id — outcome, notes, duration.
Update a logged call by its id — outcome, notes, duration. Send only what changes. Writes land in the AIsa workspace, which every caller shares: the record becomes visible and editable by others, and there is no per-caller isolation.
# CNPJ Office Lookup
Source: https://aisa.one/docs/api-reference/cnpja/get_cnpja-office-lookup
openapi/cnpja.json GET /cnpja/office/{taxId}
Look up the registered profile of a Brazilian company office (establishment) by its 14-digit CNPJ tax ID.
Resolve the full registered profile of a Brazilian company office (establishment) from its 14-digit CNPJ tax ID. The response includes the legal name (razão social) via `company.name`, the trade name (`alias`, which may be `null`), registration `status`, `founded` date, the full registered `address`, the shareholder/partner structure (`company.members`), registered `phones` / `emails`, and the primary/secondary economic activities (`mainActivity` / `sideActivities`).
Pass the CNPJ as the `taxId` path parameter (digits only, no punctuation) and authenticate with your AIsa API key as a bearer token — the same key used across every AIsa `/apis/*` endpoint.
Example: `GET /apis/v1/cnpja/office/06990590000123` returns the office registered under that CNPJ, including `company.name`, `alias`, `status`, `address`, `company.members`, and `mainActivity`.
**Error responses:** a malformed CNPJ that fails the check-digit (checksum) algorithm returns **HTTP 400** (`request validation failed`) — a client-side input error. A well-formed CNPJ that is simply not registered returns **HTTP 404** (`tax id not registered at revenue service`).
**Billing: \$0.00528 per call (1 credit per lookup).** The "not registered" **HTTP 404** result returns a valid JSON body and is still billed 1 credit; only 429, 5xx, and network errors are not billed. (A **400** validation error is a client-side rejection.)
# Get Brand Analytics
Source: https://aisa.one/docs/api-reference/foreplay/get_foreplay-brand-analytics
openapi/foreplay.json GET /foreplay/brand/analytics
Brand-level running-ads distribution and creative velocity; id must be a page_id / ad_library_id.
Get analytics for a brand — running-ads distribution and creative velocity. A successful call returns **one row per day** in `data[]` (`date`, `active_count`, `inactive_count`, and per-format counts). Optionally scope with `start_date` / `end_date` and `order`.
⚠️ **The `id` parameter must be a page\_id / `ad_library_id`, NOT a Foreplay `brand_id`.** Passing a `brand_id` returns **HTTP 406**. Get the `ad_library_id` from [`get_foreplay-getbrandsbydomain`](/docs/api-reference/foreplay/get_foreplay-getbrandsbydomain) first. Flow: `getBrandsByDomain(domain)` → `ad_library_id` → `brand/analytics(id=ad_library_id)`.
⚠️ **Date window: the range between `start_date` and `end_date` must be ≤ 30 days.** A larger range returns **HTTP 406** `Date range too large`:
```json theme={null}
{"metadata":{"success":false,"status_code":406},"error":{"message":"Date range too large","max_allowed_days":"30 days"},"data":[]}
```
So this endpoint has **two** `406` cases: (1) a `brand_id` was passed instead of a page\_id / `ad_library_id`, and (2) the date window exceeds 30 days.
**Billing: $0.02625 per item returned in `data[]`; empty results and errors are not charged.** Because the response is one row per day, **each returned row is 1 billed item ($0.02625)** — a 30-day window can bill up to \~30 items, which matters for cost estimation. A `406` (either case) is not charged.
Example: resolve a domain first (e.g. `getBrandsByDomain?domain=nike.com` → `ad_library_id: "15087023444"`), then query analytics with that id: `GET /foreplay/brand/analytics?id=15087023444&start_date=2025-01-01&end_date=2025-01-30`.
Related: [`get_foreplay-getbrandsbydomain`](/docs/api-reference/foreplay/get_foreplay-getbrandsbydomain), [`get_foreplay-getadsbybrandid`](/docs/api-reference/foreplay/get_foreplay-getadsbybrandid), [`get_foreplay-discovery-ads`](/docs/api-reference/foreplay/get_foreplay-discovery-ads).
# Search & Filter Ads
Source: https://aisa.one/docs/api-reference/foreplay/get_foreplay-discovery-ads
openapi/foreplay.json GET /foreplay/discovery/ads
Search the Foreplay ad index (100M+ ads) with a text query plus filters; each result is a full ad object.
Search across the Foreplay ad index with a text `query` plus filters (live status, display format, publisher platform, niche, market target, language, video/running duration, date range, order). Each result in `data[]` is a full ad object — image/video URLs, transcription, brand metadata, targeting, and more. Use `cursor` + `limit` (max 250) to page.
`display_format` accepts exactly these 11 values: `carousel`, `dco`, `dpa`, `event`, `image`, `multi_images`, `multi_medias`, `multi_videos`, `page_like`, `text`, `video`.
\*\*Billing: $0.02625 per item returned in `data[]`; empty results and errors are not charged.** One credit per ad; a call with `limit≤50` costs at most $1.3125.
Related: [`get_foreplay-getadsbybrandid`](/docs/api-reference/foreplay/get_foreplay-getadsbybrandid), [`get_foreplay-getbrandsbydomain`](/docs/api-reference/foreplay/get_foreplay-getbrandsbydomain), [`get_foreplay-brand-analytics`](/docs/api-reference/foreplay/get_foreplay-brand-analytics).
# Get Ads by Brand IDs
Source: https://aisa.one/docs/api-reference/foreplay/get_foreplay-getadsbybrandid
openapi/foreplay.json GET /foreplay/brand/getAdsByBrandId
Retrieve ads for one or more Foreplay brand IDs, applying the supplied filters; each result is a full ad object.
Retrieve ads for one or more known Foreplay brand IDs (`brand_ids`, comma-separated), applying the same rich filter set as discovery (live status, display format, publisher platform, niche, market target, language, video/running duration, date range, order). Each result in `data[]` is a full ad object. Use `cursor` + `limit` (max 250) to page.
⚠️ **Accepts `brand_ids` only.** `page_id` lookup is **NOT supported** on the AIsa gateway — resolve a domain to its `ad_library_id` / brand id via [`get_foreplay-getbrandsbydomain`](/docs/api-reference/foreplay/get_foreplay-getbrandsbydomain) first. Passing a page id in `brand_ids` returns **HTTP 200 with `count: 0`** (silently treated as an unknown brand). This is intentional P0 scoping, documented as a known limitation.
`display_format` accepts exactly these 11 values: `carousel`, `dco`, `dpa`, `event`, `image`, `multi_images`, `multi_medias`, `multi_videos`, `page_like`, `text`, `video`.
\*\*Billing: $0.02625 per item returned in `data[]`; empty results and errors are not charged.** One credit per ad; a call with `limit≤50` costs at most $1.3125.
Example: `GET /foreplay/brand/getAdsByBrandId?brand_ids=bYeKOahyGopmGKMHiWit` (Nike, resolved via `getBrandsByDomain?domain=nike.com`).
Related: [`get_foreplay-getbrandsbydomain`](/docs/api-reference/foreplay/get_foreplay-getbrandsbydomain) (resolve `brand_ids` from a domain), [`get_foreplay-discovery-ads`](/docs/api-reference/foreplay/get_foreplay-discovery-ads), [`get_foreplay-brand-analytics`](/docs/api-reference/foreplay/get_foreplay-brand-analytics).
# Get Brands by Domain
Source: https://aisa.one/docs/api-reference/foreplay/get_foreplay-getbrandsbydomain
openapi/foreplay.json GET /foreplay/brand/getBrandsByDomain
Discover brands advertising from a given domain; returns brand_id and ad_library_id for downstream calls.
Discover brands that advertise from a given `domain`. This is a discovery lookup — you do not need to already track the brands. Each brand record in `data[]` includes the Foreplay `brand_id` and the `ad_library_id` (page\_id). Feed `brand_id` into [`get_foreplay-getadsbybrandid`](/docs/api-reference/foreplay/get_foreplay-getadsbybrandid) and `ad_library_id` into [`get_foreplay-brand-analytics`](/docs/api-reference/foreplay/get_foreplay-brand-analytics). `limit` max is 10.
Example: `GET /foreplay/brand/getBrandsByDomain?domain=nike.com` returns Nike with `brand_id: "bYeKOahyGopmGKMHiWit"` and `ad_library_id: "15087023444"`.
**Billing: \$0.02625 per item returned in `data[]`; empty results and errors are not charged.** One credit per brand returned.
Related: [`get_foreplay-getadsbybrandid`](/docs/api-reference/foreplay/get_foreplay-getadsbybrandid), [`get_foreplay-brand-analytics`](/docs/api-reference/foreplay/get_foreplay-brand-analytics), [`get_foreplay-discovery-ads`](/docs/api-reference/foreplay/get_foreplay-discovery-ads).
# Air Quality
Source: https://aisa.one/docs/api-reference/openmeteo/get_openmeteo-air-quality
openapi/openmeteo.json GET /openmeteo/air-quality
PM2.5/PM10, pollutants, dust, UV, European & US AQI and pollen forecast.
Fetch an air-quality forecast (CAMS European or global model) for any coordinate. Request pollutants and indices with `hourly` and/or `current` variable lists — e.g. `pm10`, `pm2_5`, `carbon_monoxide`, `nitrogen_dioxide`, `ozone`, `dust`, `uv_index`, `european_aqi`, `us_aqi` — plus pollen species such as `birch_pollen` or `grass_pollen`. Control span with `forecast_days` (up to 7) and `past_days`, or pin `domains` to `cams_europe` / `cams_global`.
The response returns grid-cell metadata and an `hourly` (and optional `current`) block with a `time` array, one array per variable, and a matching `*_units` object.
Example: `GET /apis/v1/openmeteo/air-quality?latitude=52.52&longitude=13.41&hourly=pm10,pm2_5,european_aqi&forecast_days=5&timezone=Europe/Berlin`.
**Billing: \$0.00015 per call (150 micros USD), metered per request.** All Open-Meteo endpoints are GET pass-through — authenticate with your AIsa API key as a bearer token (the same key used across every AIsa `/apis/*` endpoint); AIsa handles provider access.
# Historical Weather (ERA5 Archive)
Source: https://aisa.one/docs/api-reference/openmeteo/get_openmeteo-archive
openapi/openmeteo.json GET /openmeteo/archive
Historical reanalysis weather for any coordinate, with data back to 1940.
Retrieve historical reanalysis weather (ERA5 / ERA5-Land and related models) for any coordinate. `start_date` and `end_date` (both `yyyy-mm-dd`) are **required** and define the interval; data is available from 1940 to the near-present. Request fields with `hourly` and/or `daily` variable lists, and set `timezone` to localize daily aggregates.
The response returns the resolved grid-cell metadata and `hourly`/`daily` blocks, each with a `time` array, one array per variable, and a matching `*_units` object.
Example: `GET /apis/v1/openmeteo/archive?latitude=52.52&longitude=13.41&start_date=2022-01-01&end_date=2022-12-31&hourly=temperature_2m,precipitation&daily=temperature_2m_max,temperature_2m_min&timezone=Europe/Berlin`.
**Billing: \$0.00015 per call (150 micros USD), metered per request.** All Open-Meteo endpoints are GET pass-through — authenticate with your AIsa API key as a bearer token (the same key used across every AIsa `/apis/*` endpoint); AIsa handles provider access.
# Climate Projections
Source: https://aisa.one/docs/api-reference/openmeteo/get_openmeteo-climate
openapi/openmeteo.json GET /openmeteo/climate
Downscaled CMIP6 climate-change projections (daily) from 1950 to 2050.
Retrieve downscaled CMIP6 climate-change projections for a coordinate. `start_date`, `end_date` (each `yyyy-mm-dd`, within 1950-2050) and `models` are all **required** — `models` is a comma-separated list drawn from `CMCC_CM2_VHR4`, `FGOALS_f3_H`, `HiRAM_SIT_HR`, `MRI_AGCM3_2_S`, `EC_Earth3P_HR`, `MPI_ESM1_2_XR`, `NICAM16_8S`. Request `daily` variables such as `temperature_2m_max`, `temperature_2m_mean` or `precipitation_sum`; set `disable_bias_correction=true` for raw model output.
The response returns grid-cell metadata and a `daily` block with a `time` array, one array per variable, and a matching `daily_units` object.
Example: `GET /apis/v1/openmeteo/climate?latitude=52.52&longitude=13.41&start_date=2020-01-01&end_date=2050-12-31&models=MRI_AGCM3_2_S,EC_Earth3P_HR&daily=temperature_2m_max,precipitation_sum`.
**Billing: \$0.00015 per call (150 micros USD), metered per request.** All Open-Meteo endpoints are GET pass-through — authenticate with your AIsa API key as a bearer token (the same key used across every AIsa `/apis/*` endpoint); AIsa handles provider access.
# Elevation
Source: https://aisa.one/docs/api-reference/openmeteo/get_openmeteo-elevation
openapi/openmeteo.json GET /openmeteo/elevation
Terrain elevation from the Copernicus 90m DEM for one or more coordinates.
Look up terrain elevation (Copernicus 90m DEM, 2021) for a coordinate. Pass comma-separated `latitude` and `longitude` lists — positionally aligned — to resolve up to 100 points in a single request.
The response is a single object with an `elevation` array holding one value (meters) per requested coordinate, in request order.
Example: `GET /apis/v1/openmeteo/elevation?latitude=52.52,48.85&longitude=13.41,2.35` returns `{ "elevation": [38.0, 35.0] }`.
**Billing: \$0.00015 per call (150 micros USD), metered per request.** All Open-Meteo endpoints are GET pass-through — authenticate with your AIsa API key as a bearer token (the same key used across every AIsa `/apis/*` endpoint); AIsa handles provider access.
# Ensemble Models
Source: https://aisa.one/docs/api-reference/openmeteo/get_openmeteo-ensemble
openapi/openmeteo.json GET /openmeteo/ensemble
Probabilistic ensemble weather forecasts with per-member arrays.
Fetch probabilistic ensemble forecasts for spread and probability analysis. `models` is **optional** — omit it to get the default best-match global ensemble (a 30-member set), or pass a comma-separated list such as `icon_seamless`, `gfs_seamless`, `ecmwf_ifs025` or `gem_global`; each model exposes its own number of members. Request variables with `hourly` and/or `daily` lists.
Every requested variable is returned once per ensemble member, suffixed with the member index (e.g. `temperature_2m_member01`, `temperature_2m_member02`, ...), alongside grid-cell metadata, a shared `time` array and a `*_units` object.
Example: `GET /apis/v1/openmeteo/ensemble?latitude=52.52&longitude=13.41&hourly=temperature_2m,wind_speed_10m&models=icon_seamless&forecast_days=7`.
**Billing: \$0.00015 per call (150 micros USD), metered per request.** All Open-Meteo endpoints are GET pass-through — authenticate with your AIsa API key as a bearer token (the same key used across every AIsa `/apis/*` endpoint); AIsa handles provider access.
# Flood / River Discharge
Source: https://aisa.one/docs/api-reference/openmeteo/get_openmeteo-flood
openapi/openmeteo.json GET /openmeteo/flood
GloFAS river discharge forecast and historical data with ensemble statistics.
Fetch GloFAS river-discharge forecast and historical data for a coordinate. Request `daily` discharge statistics such as `river_discharge`, `river_discharge_mean`, `river_discharge_median`, `river_discharge_max`, `river_discharge_min`, `river_discharge_p25`, `river_discharge_p75`. Control the horizon with `forecast_days` (up to 210) and `past_days`, or an explicit `start_date`/`end_date`; set `ensemble=true` to return all members.
The response returns grid-cell metadata and a `daily` block with a `time` array, one array per variable (m³/s), and a matching `daily_units` object.
Example: `GET /apis/v1/openmeteo/flood?latitude=59.91&longitude=10.75&daily=river_discharge,river_discharge_mean&forecast_days=30`.
**Billing: \$0.00015 per call (150 micros USD), metered per request.** All Open-Meteo endpoints are GET pass-through — authenticate with your AIsa API key as a bearer token (the same key used across every AIsa `/apis/*` endpoint); AIsa handles provider access.
# Weather Forecast
Source: https://aisa.one/docs/api-reference/openmeteo/get_openmeteo-forecast
openapi/openmeteo.json GET /openmeteo/forecast
Hourly, daily and current weather forecast for any coordinate, up to 16 days ahead.
Fetch a weather forecast for any WGS84 coordinate from Open-Meteo's blended high-resolution model mix. Choose the fields you want with `hourly`, `daily` and `current` (comma-separated variable lists) — e.g. `temperature_2m`, `precipitation`, `wind_speed_10m` for hourly, or `temperature_2m_max`/`precipitation_sum` for daily. Control the horizon with `forecast_days` (up to 16) and `past_days`, and set `timezone=auto` to localize daily aggregates.
The response returns the resolved grid-cell `latitude`/`longitude`/`elevation`, `timezone` metadata, and a block per requested resolution (`hourly`, `daily`, `current`) each with a parallel `time` array plus one array per variable, alongside a matching `*_units` object.
Example: `GET /apis/v1/openmeteo/forecast?latitude=52.52&longitude=13.41&hourly=temperature_2m,precipitation&daily=temperature_2m_max,temperature_2m_min¤t=temperature_2m,weather_code&timezone=Europe/Berlin`.
**Billing: \$0.00015 per call (150 micros USD), metered per request.** All Open-Meteo endpoints are GET pass-through — authenticate with your AIsa API key as a bearer token (the same key used across every AIsa `/apis/*` endpoint); AIsa handles provider access.
# Geocoding Search
Source: https://aisa.one/docs/api-reference/openmeteo/get_openmeteo-geocoding
openapi/openmeteo.json GET /openmeteo/geocoding
Resolve place names or postal codes to coordinates, regions, timezone and population.
Search a place name or postal code and resolve it to coordinates and metadata. Narrow results by appending `, ` to `name`, filtering with `countryCode`, or capping the result count with `count`. Translated names are available via `language`.
The response contains a `results` array; each entry includes `id`, `name`, `latitude`, `longitude`, `elevation`, `feature_code`, `country`/`country_code`, hierarchical `admin1`–`admin4`, `timezone`, `population` and `postcodes`.
Example: `GET /apis/v1/openmeteo/geocoding?name=Berlin&count=5&language=en`.
**Billing: \$0.00015 per call (150 micros USD), metered per request.** All Open-Meteo endpoints are GET pass-through — authenticate with your AIsa API key as a bearer token (the same key used across every AIsa `/apis/*` endpoint); AIsa handles provider access.
# Historical Forecast
Source: https://aisa.one/docs/api-reference/openmeteo/get_openmeteo-historical-forecast
openapi/openmeteo.json GET /openmeteo/historical-forecast
Archived past runs of the high-resolution forecast models.
Retrieve the actual high-resolution forecasts that were issued in the past (archived model runs, not reanalysis) for a coordinate. `start_date` and `end_date` (`yyyy-mm-dd`) are **required** and select the archived interval. The variable model matches the [forecast endpoint](/docs/api-reference/openmeteo/get_openmeteo-forecast): request fields with `hourly` and/or `daily` lists.
The response returns grid-cell metadata and the requested resolution blocks, each with a `time` array, one array per variable, and a matching `*_units` object.
Example: `GET /apis/v1/openmeteo/historical-forecast?latitude=52.52&longitude=13.41&start_date=2023-06-01&end_date=2023-06-07&hourly=temperature_2m,precipitation`.
**Billing: \$0.00015 per call (150 micros USD), metered per request.** All Open-Meteo endpoints are GET pass-through — authenticate with your AIsa API key as a bearer token (the same key used across every AIsa `/apis/*` endpoint); AIsa handles provider access.
# Marine Weather
Source: https://aisa.one/docs/api-reference/openmeteo/get_openmeteo-marine
openapi/openmeteo.json GET /openmeteo/marine
Wave height/direction/period, ocean currents and sea-surface temperature forecast.
Fetch a marine and ocean-wave forecast for a coastal or open-ocean coordinate. Request variables with `hourly`, `daily` and/or `current` lists — e.g. `wave_height`, `wave_direction`, `wave_period`, the `wind_wave_*` and `swell_wave_*` families, `ocean_current_velocity`/`ocean_current_direction`, and `sea_surface_temperature`. Use `length_unit=imperial` for feet, and `forecast_days` (up to 8) / `past_days` for the horizon.
The response returns grid-cell metadata and the requested resolution blocks, each with a `time` array, one array per variable, and a matching `*_units` object.
Example: `GET /apis/v1/openmeteo/marine?latitude=54.54&longitude=10.23&hourly=wave_height,wave_direction,wave_period&daily=wave_height_max&forecast_days=7&timezone=Europe/Berlin`.
**Billing: \$0.00015 per call (150 micros USD), metered per request.** All Open-Meteo endpoints are GET pass-through — authenticate with your AIsa API key as a bearer token (the same key used across every AIsa `/apis/*` endpoint); AIsa handles provider access.
# Previous Model Runs
Source: https://aisa.one/docs/api-reference/openmeteo/get_openmeteo-previous-runs
openapi/openmeteo.json GET /openmeteo/previous-runs
Access prior model-run forecasts for verification and run-to-run comparison.
Compare the current forecast against earlier model runs for the same valid time — useful for forecast verification and run-to-run stability checks. Request a variable and its earlier runs by appending `_previous_dayN` (e.g. `temperature_2m` together with `temperature_2m_previous_day1`, `temperature_2m_previous_day2`) to your `hourly` or `daily` lists.
The response returns grid-cell metadata and the requested resolution blocks, each with a `time` array, one array per variable (including the `_previous_dayN` series), and a matching `*_units` object.
Example: `GET /apis/v1/openmeteo/previous-runs?latitude=52.52&longitude=13.41&hourly=temperature_2m,temperature_2m_previous_day1`.
**Billing: \$0.00015 per call (150 micros USD), metered per request.** All Open-Meteo endpoints are GET pass-through — authenticate with your AIsa API key as a bearer token (the same key used across every AIsa `/apis/*` endpoint); AIsa handles provider access.
# Seasonal Forecast
Source: https://aisa.one/docs/api-reference/openmeteo/get_openmeteo-seasonal
openapi/openmeteo.json GET /openmeteo/seasonal
Long-range seasonal forecast (ECMWF SEAS5) out to roughly six months (about 183 days ahead).
Fetch a long-range seasonal forecast (ECMWF SEAS5 / EC46) for a coordinate. Request `daily` aggregates (e.g. `temperature_2m_max`, `temperature_2m_min`, `precipitation_sum`) and/or `six_hourly` steps (e.g. `temperature_2m`, `precipitation`); interpolated `hourly` variables are also available. Extend the window with `forecast_days`.
The response returns grid-cell metadata and the requested `daily`/`six_hourly`/`hourly` blocks, each with a `time` array, one array per variable, and a matching `*_units` object.
Example: `GET /apis/v1/openmeteo/seasonal?latitude=52.52&longitude=13.41&daily=temperature_2m_max,temperature_2m_min,precipitation_sum&six_hourly=temperature_2m,precipitation&timezone=Europe/Berlin`.
**Billing: \$0.00015 per call (150 micros USD), metered per request.** All Open-Meteo endpoints are GET pass-through — authenticate with your AIsa API key as a bearer token (the same key used across every AIsa `/apis/*` endpoint); AIsa handles provider access.
# Backlink Anchors
Source: https://aisa.one/docs/api-reference/semrush/get_semrush-backlink-anchors
openapi/semrush.json GET /semrush/backlink-anchors
Anchor-text distribution of backlinks to a target.
Anchor-text distribution of backlinks to a target.
**Billing is per returned data row**, \$0.36 per row (up to 20 rows). A broad seed returns more rows, so the input size decides the cost — start narrow.
⚠️ The response is **semicolon-delimited text**, not JSON — parse it as CSV-style rows.
Related: [`get_semrush-backlinks`](/docs/api-reference/semrush/get_semrush-backlinks).
# Backlink Competitors
Source: https://aisa.one/docs/api-reference/semrush/get_semrush-backlink-competitors
openapi/semrush.json GET /semrush/backlink-competitors
Domains with a backlink profile similar to the target.
Domains with a backlink profile similar to the target.
**Billing is per returned data row**, \$0.36 per row (up to 20 rows). A broad seed returns more rows, so the input size decides the cost — start narrow.
⚠️ The response is **semicolon-delimited text**, not JSON — parse it as CSV-style rows.
Related: [`get_semrush-referring-domains`](/docs/api-reference/semrush/get_semrush-referring-domains).
# Backlinks
Source: https://aisa.one/docs/api-reference/semrush/get_semrush-backlinks
openapi/semrush.json GET /semrush/backlinks
Individual backlink records pointing at a target (source, target, anchor).
Individual backlink records pointing at a target (source, target, anchor).
**Billing is per returned data row**, \$0.36 per row (up to 20 rows). A broad seed returns more rows, so the input size decides the cost — start narrow.
⚠️ The response is **semicolon-delimited text**, not JSON — parse it as CSV-style rows.
Related: [`get_semrush-referring-domains`](/docs/api-reference/semrush/get_semrush-referring-domains), [`get_semrush-backlink-anchors`](/docs/api-reference/semrush/get_semrush-backlink-anchors).
# Backlinks Overview
Source: https://aisa.one/docs/api-reference/semrush/get_semrush-backlinks-overview
openapi/semrush.json GET /semrush/backlinks-overview
Semrush backlink profile summary: authority score, total backlinks, referring domains, URLs, and IPs.
Return the backlink profile summary for a root domain: authority score (ascore), total backlinks, referring domains, referring URLs, and referring IPs.
**Billing is per successful call**, \$0.30. Failed calls (4xx/5xx) are not charged.
⚠️ The response is **semicolon-delimited text**, not JSON — parse it as CSV-style rows.
Related: [`get_semrush-backlinks`](/docs/api-reference/semrush/get_semrush-backlinks), [`get_semrush-referring-domains`](/docs/api-reference/semrush/get_semrush-referring-domains).
# Broad Match Keywords
Source: https://aisa.one/docs/api-reference/semrush/get_semrush-broad-match-keywords
openapi/semrush.json GET /semrush/broad-match-keywords
Broad-match and alternate keyword variants for a seed phrase, with volume and CPC.
Broad-match and alternate keyword variants for a seed phrase, with volume and CPC.
**Billing is per returned data row**, \$0.18 per row (up to 20 rows). A broad seed returns more rows, so the input size decides the cost — start narrow.
⚠️ The response is **semicolon-delimited text**, not JSON — parse it as CSV-style rows.
Related: [`get_semrush-question-keywords`](/docs/api-reference/semrush/get_semrush-question-keywords), [`get_semrush-keyword-overview`](/docs/api-reference/semrush/get_semrush-keyword-overview).
# Organic Competitors
Source: https://aisa.one/docs/api-reference/semrush/get_semrush-domain-organic-competitors
openapi/semrush.json GET /semrush/domain-organic-competitors
Domains competing with a target in Google organic search.
Domains competing with a target in Google organic search.
**Billing is per returned data row**, \$0.36 per row (up to 20 rows). A broad seed returns more rows, so the input size decides the cost — start narrow.
⚠️ The response is **semicolon-delimited text**, not JSON — parse it as CSV-style rows.
Related: [`get_semrush-domain-vs-domain`](/docs/api-reference/semrush/get_semrush-domain-vs-domain).
# Domain Organic Keywords
Source: https://aisa.one/docs/api-reference/semrush/get_semrush-domain-organic-keywords
openapi/semrush.json GET /semrush/domain-organic-keywords
Keywords a domain ranks for in Google organic (position, volume, CPC, URL).
Keywords a domain ranks for in Google organic (position, volume, CPC, URL).
**Billing is per returned data row**, \$0.09 per row (up to 20 rows). A broad seed returns more rows, so the input size decides the cost — start narrow.
⚠️ The response is **semicolon-delimited text**, not JSON — parse it as CSV-style rows.
Related: [`get_semrush-domain-paid-keywords`](/docs/api-reference/semrush/get_semrush-domain-paid-keywords), [`get_semrush-url-organic-keywords`](/docs/api-reference/semrush/get_semrush-url-organic-keywords).
# Domain Overview
Source: https://aisa.one/docs/api-reference/semrush/get_semrush-domain-overview
openapi/semrush.json GET /semrush/domain-overview
Semrush organic search overview: rank, organic keywords, traffic, traffic cost, and Adwords keywords.
Return the organic search overview for a domain in a given regional database: Rank, organic keyword count, organic traffic, organic traffic cost, and Adwords keyword count.
**Billing is per successful call**, \$0.09. Failed calls (4xx/5xx) are not charged.
⚠️ The response is **semicolon-delimited text**, not JSON — parse it as CSV-style rows.
Related: [`get_semrush-domain-rank-history`](/docs/api-reference/semrush/get_semrush-domain-rank-history), [`get_semrush-domain-organic-keywords`](/docs/api-reference/semrush/get_semrush-domain-organic-keywords).
# Domain Paid Keywords
Source: https://aisa.one/docs/api-reference/semrush/get_semrush-domain-paid-keywords
openapi/semrush.json GET /semrush/domain-paid-keywords
Keywords a domain bids on in Google Ads (position, volume, CPC, URL).
Keywords a domain bids on in Google Ads (position, volume, CPC, URL).
**Billing is per returned data row**, \$0.18 per row (up to 20 rows). A broad seed returns more rows, so the input size decides the cost — start narrow.
⚠️ The response is **semicolon-delimited text**, not JSON — parse it as CSV-style rows.
Related: [`get_semrush-domain-organic-keywords`](/docs/api-reference/semrush/get_semrush-domain-organic-keywords).
# Domain Rank History
Source: https://aisa.one/docs/api-reference/semrush/get_semrush-domain-rank-history
openapi/semrush.json GET /semrush/domain-rank-history
Historical rank, organic traffic and keyword-count trajectory for a domain.
Historical rank, organic traffic and keyword-count trajectory for a domain.
**Billing is per returned data row**, \$0.09 per row (up to 20 rows). A broad seed returns more rows, so the input size decides the cost — start narrow.
⚠️ The response is **semicolon-delimited text**, not JSON — parse it as CSV-style rows.
Related: [`get_semrush-domain-overview`](/docs/api-reference/semrush/get_semrush-domain-overview).
# Domain vs Domain
Source: https://aisa.one/docs/api-reference/semrush/get_semrush-domain-vs-domain
openapi/semrush.json GET /semrush/domain-vs-domain
Cross-domain keyword position comparison across up to 5 domains.
Cross-domain keyword position comparison across up to 5 domains.
**Billing is per returned data row**, \$0.72 per row (up to 20 rows). A broad seed returns more rows, so the input size decides the cost — start narrow.
⚠️ The response is **semicolon-delimited text**, not JSON — parse it as CSV-style rows.
Related: [`get_semrush-domain-organic-competitors`](/docs/api-reference/semrush/get_semrush-domain-organic-competitors).
# Indexed Pages
Source: https://aisa.one/docs/api-reference/semrush/get_semrush-indexed-pages
openapi/semrush.json GET /semrush/indexed-pages
Pages of a target that have backlinks (page-level breakdown).
Pages of a target that have backlinks (page-level breakdown).
**Billing is per returned data row**, \$0.36 per row (up to 20 rows). A broad seed returns more rows, so the input size decides the cost — start narrow.
⚠️ The response is **semicolon-delimited text**, not JSON — parse it as CSV-style rows.
Related: [`get_semrush-backlinks`](/docs/api-reference/semrush/get_semrush-backlinks).
# Keyword Difficulty
Source: https://aisa.one/docs/api-reference/semrush/get_semrush-keyword-difficulty
openapi/semrush.json GET /semrush/keyword-difficulty
Keyword Difficulty Index (0-100) for one or more keywords.
Keyword Difficulty Index (0-100) for one or more keywords.
**Billing is per returned data row**, \$0.45 per row (up to 20 rows). A broad seed returns more rows, so the input size decides the cost — start narrow.
⚠️ The response is **semicolon-delimited text**, not JSON — parse it as CSV-style rows.
Related: [`get_semrush-keyword-overview`](/docs/api-reference/semrush/get_semrush-keyword-overview).
# Organic Results
Source: https://aisa.one/docs/api-reference/semrush/get_semrush-keyword-organic-results
openapi/semrush.json GET /semrush/keyword-organic-results
Domains and URLs currently ranking in Google organic results for a keyword.
Domains and URLs currently ranking in Google organic results for a keyword.
**Billing is per returned data row**, \$0.09 per row (up to 20 rows). A broad seed returns more rows, so the input size decides the cost — start narrow.
⚠️ The response is **semicolon-delimited text**, not JSON — parse it as CSV-style rows.
Related: [`get_semrush-keyword-paid-results`](/docs/api-reference/semrush/get_semrush-keyword-paid-results), [`get_semrush-domain-organic-keywords`](/docs/api-reference/semrush/get_semrush-domain-organic-keywords).
# Keyword Overview
Source: https://aisa.one/docs/api-reference/semrush/get_semrush-keyword-overview
openapi/semrush.json GET /semrush/keyword-overview
Semrush keyword metrics: search volume, CPC, competition, and number of results.
Return search metrics for a keyword phrase in a given regional database: search volume, CPC, competition, and number of results.
**Billing is per successful call**, \$0.09. Failed calls (4xx/5xx) are not charged.
⚠️ The response is **semicolon-delimited text**, not JSON — parse it as CSV-style rows.
Related: [`get_semrush-keyword-difficulty`](/docs/api-reference/semrush/get_semrush-keyword-difficulty), [`get_semrush-keyword-organic-results`](/docs/api-reference/semrush/get_semrush-keyword-organic-results).
# Paid Results
Source: https://aisa.one/docs/api-reference/semrush/get_semrush-keyword-paid-results
openapi/semrush.json GET /semrush/keyword-paid-results
Domains and URLs currently running Google Ads for a keyword.
Domains and URLs currently running Google Ads for a keyword.
**Billing is per returned data row**, \$0.18 per row (up to 20 rows). A broad seed returns more rows, so the input size decides the cost — start narrow.
⚠️ The response is **semicolon-delimited text**, not JSON — parse it as CSV-style rows.
Related: [`get_semrush-keyword-organic-results`](/docs/api-reference/semrush/get_semrush-keyword-organic-results).
# Question Keywords
Source: https://aisa.one/docs/api-reference/semrush/get_semrush-question-keywords
openapi/semrush.json GET /semrush/question-keywords
Question-form keyword variations for a seed phrase, with volume and CPC.
Question-form keyword variations for a seed phrase, with volume and CPC.
**Billing is per returned data row**, \$0.36 per row (up to 20 rows). A broad seed returns more rows, so the input size decides the cost — start narrow.
⚠️ The response is **semicolon-delimited text**, not JSON — parse it as CSV-style rows.
Related: [`get_semrush-broad-match-keywords`](/docs/api-reference/semrush/get_semrush-broad-match-keywords).
# Referring Domains
Source: https://aisa.one/docs/api-reference/semrush/get_semrush-referring-domains
openapi/semrush.json GET /semrush/referring-domains
Referring domains linking to a target, aggregated by domain.
Referring domains linking to a target, aggregated by domain.
**Billing is per returned data row**, \$0.36 per row (up to 20 rows). A broad seed returns more rows, so the input size decides the cost — start narrow.
⚠️ The response is **semicolon-delimited text**, not JSON — parse it as CSV-style rows.
Related: [`get_semrush-backlinks`](/docs/api-reference/semrush/get_semrush-backlinks), [`get_semrush-backlink-competitors`](/docs/api-reference/semrush/get_semrush-backlink-competitors).
# URL Organic Keywords
Source: https://aisa.one/docs/api-reference/semrush/get_semrush-url-organic-keywords
openapi/semrush.json GET /semrush/url-organic-keywords
Keywords a specific URL ranks for in Google organic.
Keywords a specific URL ranks for in Google organic.
**Billing is per returned data row**, \$0.09 per row (up to 20 rows). A broad seed returns more rows, so the input size decides the cost — start narrow.
⚠️ The response is **semicolon-delimited text**, not JSON — parse it as CSV-style rows.
Related: [`get_semrush-domain-organic-keywords`](/docs/api-reference/semrush/get_semrush-domain-organic-keywords).
# Ad Networks
Source: https://aisa.one/docs/api-reference/similarweb/get_similarweb-website-ad-networks
openapi/similarweb.json GET /similarweb/website/ad-networks
Ad Networks — SimilarWeb
# Deduplicated Audience
Source: https://aisa.one/docs/api-reference/similarweb/get_similarweb-website-deduplicated-audience
openapi/similarweb.json GET /similarweb/website/deduplicated-audience
Deduplicated Audience — SimilarWeb
# Demographics
Source: https://aisa.one/docs/api-reference/similarweb/get_similarweb-website-demographics
openapi/similarweb.json GET /similarweb/website/demographics
Demographics — SimilarWeb
# Marketing Channel Sources
Source: https://aisa.one/docs/api-reference/similarweb/get_similarweb-website-marketing-channel-sources-legacy
openapi/similarweb.json GET /similarweb/website/marketing-channel-sources-legacy
Marketing Channel Sources — SimilarWeb
# PPC Spend
Source: https://aisa.one/docs/api-reference/similarweb/get_similarweb-website-ppc-spend
openapi/similarweb.json GET /similarweb/website/ppc-spend
PPC Spend — SimilarWeb
# Website Ranking
Source: https://aisa.one/docs/api-reference/similarweb/get_similarweb-website-ranking
openapi/similarweb.json GET /similarweb/website/ranking
Website Ranking — SimilarWeb
# Referrals
Source: https://aisa.one/docs/api-reference/similarweb/get_similarweb-website-referrals
openapi/similarweb.json GET /similarweb/website/referrals
Referrals — SimilarWeb
# SimilarSites
Source: https://aisa.one/docs/api-reference/similarweb/get_similarweb-website-similar-sites
openapi/similarweb.json GET /similarweb/website/similar-sites
SimilarSites — SimilarWeb
# Website Top Geographies
Source: https://aisa.one/docs/api-reference/similarweb/get_similarweb-website-top-geographies
openapi/similarweb.json GET /similarweb/website-top-geographies
Website Top Geographies — SimilarWeb
# Top Sites Ranking
Source: https://aisa.one/docs/api-reference/similarweb/get_similarweb-website-top-sites-ranking
openapi/similarweb.json GET /similarweb/website/top-sites-ranking
Top Sites Ranking — SimilarWeb
# Traffic & Engagement
Source: https://aisa.one/docs/api-reference/similarweb/get_similarweb-website-traffic-engagement
openapi/similarweb.json GET /similarweb/website/traffic-engagement
Traffic & Engagement — SimilarWeb
# Website Traffic Snapshot
Source: https://aisa.one/docs/api-reference/similarweb/get_similarweb-website-traffic-snapshot
openapi/similarweb.json GET /similarweb/website-traffic-snapshot
Website Traffic Snapshot — SimilarWeb
# Website Traffic Trend
Source: https://aisa.one/docs/api-reference/similarweb/get_similarweb-website-traffic-trend
openapi/similarweb.json GET /similarweb/website-traffic-trend
Website Traffic Trend — SimilarWeb
# Agent Skills
Source: https://aisa.one/docs/agent-skills
Instruction bundles that teach AI coding agents how to use AIsa APIs. One install, every agent on your machine.
Agent Skills are modular capability packs for AI coding agents — Claude Code, Cursor, GitHub Copilot, Windsurf, and more. Each skill is a folder with a `SKILL.md` that tells the agent what the API does, how to authenticate, and how to use it. Install once with the AIsa CLI and the skill lands in every agent directory on your machine.
Install the CLI, authenticate, and add your first skill in under two minutes.
See every production-ready skill in the agent-skills registry on GitHub.
## Install the CLI
Before installing any skill, install the AIsa CLI:
```bash theme={null}
npm install -g @aisa-one/cli
```
## How it works
Run `aisa skills install `. The CLI auto-detects every supported agent on your machine and writes the skill to each one's directory.
Open a new session in your agent. Skills load automatically at session start — only the metadata (name + description) is read upfront, so there's no context-window cost.
When you ask the agent to do something the skill handles, it reads the full instructions and calls AIsa APIs using your `AISA_API_KEY`.
## Skill catalog
### Marketing
Keyword strategy, SERP analysis, competitor gaps, and intent clusters.
### AI Model Gateway
Configure OpenClaw to use AIsa as the model provider.
Route Chinese-language prompts to Chinese LLMs.
Choose models across GPT, Claude, Gemini, Qwen, DeepSeek, Grok, and more.
### Creative AI
Image generation with Gemini 3 Pro and video generation with Wan 2.6.
### Data & Finance
Forecast trends from prediction markets, social sentiment, news, and market data.
Real-time and historical equity data, financials, filings, and macro context.
Broad stock, crypto, financial, analyst, insider, and macro data.
CoinGecko-powered crypto prices, charts, exchanges, and token research.
Asset analysis with scoring, risk flags, targets, and stop levels.
Dividend yield, payout safety, growth, and income quality.
Momentum scans for hot stocks, crypto movers, and catalysts.
Portfolio positions, allocation, and live P\&L.
M\&A rumors, insider activity, analyst changes, and regulatory news.
Price targets, stops, watchlists, and alert checks.
US stock reports with financials, news, filings, sentiment, and AI synthesis.
Polymarket and Kalshi market discovery, pricing, and trade history.
Chinese-language Polymarket and Kalshi research workflows.
Cross-platform arbitrage detection across prediction markets.
Chinese-language prediction market arbitrage scans.
### Search & Research
Unified web, scholar, Perplexity Sonar, and Tavily search in one skill.
Perplexity Sonar answer generation with citations.
Ranked YouTube results for content research and competitor monitoring.
Recent multi-source evidence across web, social, markets, and communities.
Search the web and extract public page content.
Search YouTube videos, channels, and playlists.
Chinese-language recent signal research.
Search across web, academic, smart search, Tavily, and research-answer sources.
Citation-backed deep research using Perplexity Sonar models.
Academic papers and scholarly source search.
Hybrid web and scholarly retrieval.
Extract clean readable content from public URLs.
Search with depth, topic filters, time ranges, and domain controls.
Current web search results with titles, URLs, and snippets.
Video, channel, and playlist search for content research.
### Social Media
X/Twitter search, profile analysis, trends, DMs, and posting.
Profiles, timelines, tweets, communities, trends, lists, spaces, and Grok context.
Search, monitor, publish, and engage from one X/Twitter workflow.
Post tweets, like tweets, follow users, and check relationships.
Search X/Twitter and prepare authorized posting workflows.
Track competitors, influencers, trends, mentions, and conversations.
## Supported agents
Skills install to these directories automatically:
| Agent | Directory |
| -------------- | ----------------------------- |
| Claude Code | `~/.claude/skills/` |
| Cursor | `~/.cursor/skills/` |
| GitHub Copilot | `~/.github/skills/` |
| Windsurf | `~/.codeium/windsurf/skills/` |
| Codex | `~/.agents/skills/` |
| Gemini CLI | `~/.gemini/skills/` |
| OpenClaw | `~/.openclaw/skills/` |
## Learn more
How to structure a `SKILL.md` and publish your own skill to the registry.
When to use a registry skill vs. building your own custom tool.
Questions? Reach out to the team at [developer@aisa.one](mailto:developer@aisa.one).
# AIsa Provider for OpenClaw
Source: https://aisa.one/docs/agent-skills/aisa-provider
Use AIsa as the model provider for OpenClaw.
[View on GitHub ->](https://github.com/AIsa-team/agent-skills/tree/main/aisa-provider)
**Use AIsa as an OpenClaw model provider.** Configure OpenClaw to access Qwen, DeepSeek, Kimi, GLM, and other models through one gateway.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install aisa-provider
```
## What can agents do with it?
Configure OpenClaw with the AIsa provider.
Use Qwen, DeepSeek, GLM, and other Chinese models.
Route prompts to GPT, Claude, Gemini, and more.
Standardize model selection for OpenClaw workflows.
## Quick Setup
### Option 1: Environment Variable (fastest)
```bash theme={null}
export AISA_API_KEY="your-key-here"
```
OpenClaw auto-detects `AISA_API_KEY` and registers AIsa as a provider. No config file changes needed.
### Option 2: Interactive Onboarding
```bash theme={null}
openclaw onboard --auth-choice aisa-api-key
```
### Option 3: CLI with Key
```bash theme={null}
openclaw onboard --auth-choice aisa-api-key --aisa-api-key "your-key-here"
```
### Option 4: Manual Config in `~/.openclaw/openclaw.json`
```json theme={null}
{
"models": {
"providers": {
"aisa": {
"baseUrl": "https://api.aisa.one/v1",
"apiKey": "${AISA_API_KEY}",
"api": "openai-completions",
"models": [
{
"id": "aisa/qwen3-max",
"name": "Qwen3 Max",
"reasoning": true,
"input": ["text", "image"],
"contextWindow": 262144,
"maxTokens": 16384,
"supportsDeveloperRole": false,
"cost": {
"input": 0.72,
"output": 3.60,
"cacheRead": 0.72,
"cacheWrite": 0
}
},
{
"id": "aisa/qwen-plus-2025-12-01",
"name": "Qwen Plus",
"reasoning": true,
"input": ["text", "image"],
"contextWindow": 1000000,
"maxTokens": 16384,
"supportsDeveloperRole": false,
"cost": {
"input": 0.28,
"output": 0.84,
"cacheRead": 0.28,
"cacheWrite": 0
}
},
{
"id": "aisa/qwen-mt-flash",
"name": "Qwen MT Flash",
"reasoning": true,
"input": ["text"],
"contextWindow": 1000000,
"maxTokens": 8192,
"supportsDeveloperRole": false,
"cost": {
"input": 0.072,
"output": 0.2205,
"cacheRead": 0.072,
"cacheWrite": 0
}
},
{
"id": "aisa/deepseek-v3.1",
"name": "DeepSeek V3.1",
"reasoning": true,
"input": ["text"],
"contextWindow": 262144,
"maxTokens": 8192,
"supportsDeveloperRole": false,
"cost": {
"input": 0.4018,
"output": 1.2047,
"cacheRead": 0.4018,
"cacheWrite": 0
}
},
{
"id": "aisa/kimi-k2.5",
"name": "Kimi K2.5",
"reasoning": true,
"input": ["text"],
"contextWindow": 262144,
"maxTokens": 8192,
"supportsDeveloperRole": false,
"cost": {
"input": 0.4018,
"output": 2.1077,
"cacheRead": 0.4018,
"cacheWrite": 0
}
}
]
}
}
},
"agents": {
"defaults": {
"model": {
"primary": "aisa/qwen3-max"
}
}
}
}
```
## Available Models
### Default Models (pre-configured, API-verified ✅)
| Model | Model ID | Best For | Context | Reasoning | Verified |
| ------------- | --------------------------- | --------------------------------------------------- | ------- | --------- | -------- |
| Qwen3 Max | `aisa/qwen3-max` | Complex reasoning, flagship tasks | 256K | ✅ | ✅ |
| Qwen Plus | `aisa/qwen-plus-2025-12-01` | Main production model | 1M | ✅ | ✅ |
| Qwen MT Flash | `aisa/qwen-mt-flash` | Translation-oriented lightweight tasks | 1M | ✅ | ✅ |
| DeepSeek V3.1 | `aisa/deepseek-v3.1` | Cost-effective reasoning | 256K | ✅ | ✅ |
| **Kimi K2.5** | `aisa/kimi-k2.5` | **Vision, visual coding, long-video understanding** | 256K | ✅ | ✅ |
Moonshot's newest generation, `aisa/kimi-k3`, and its coding-oriented `aisa/kimi-k2.7-code` route are also available — they are not pre-configured above, so add them to your config manually if you want them.
### ⭐ Kimi K2.5 — Enterprise ZDR route
Kimi K2.5 is the Moonshot route covered by AIsa's enterprise Zero Data Retention agreement, priced below official Moonshot rates.
**Key features:**
* Strong reasoning and multi-step problem solving
* Competitive performance on coding and math benchmarks
* Available through AIsa's Moonshot partnership
#### 🔒 Zero Data Retention (ZDR) — Enterprise-Grade Privacy
Accessing Kimi K2.5 through AIsa comes with **enterprise-level Zero Data Retention** guarantees. Users do not need to worry about data privacy — AIsa has executed a formal ZDR agreement with Moonshot AI.
Under the **Supplemental Enterprise Service Agreement** (dated 10 February 2026) between AIsa and Kimi (Moonshot AI PTE. LTD.):
* **Customer data is NOT retained** by Moonshot after processing
* **Generated outputs are NOT stored** on Moonshot's infrastructure
* **No data is used for model training** — your prompts and completions remain private
* Processing is governed by contractual enterprise terms, not consumer ToS
This makes AIsa the recommended path for privacy-sensitive or enterprise workloads that require access to Kimi K2.5. When calling Kimi K2.5 directly via Moonshot's consumer API, standard consumer data policies apply — by routing through AIsa, your data benefits from the negotiated ZDR protections.
**⚠️ Important: Temperature restriction**
Kimi K2.5 **only accepts `temperature=1.0`**. Using any other value will return an error:
```
Error: invalid temperature: only 1 is allowed for this model
```
If your OpenClaw config or agent sets a different temperature, override it for Kimi:
```
/model aisa/kimi-k2.5
```
OpenClaw will use the model's default temperature when not explicitly set.
**Kimi K2.5 pricing on AIsa (per 1M tokens):** \$0.4018 input / \$2.1077 output, cache read \$0.4018.
> Compare against Moonshot's current official rates on their own pricing page — AIsa prices this route below retail, but the exact gap moves whenever either side changes. Live AIsa rates: [https://console.aisa.one/pricing](https://console.aisa.one/pricing)
### Additional Models Available via AIsa
Users can add any model supported by AIsa to their config. The gateway serves **108 models** as of August 5, 2026:
**Qwen family (24 models, including Wan image/video):**
* `qwen3.8-max`, `qwen3.7-max`, `qwen3.7-max-2026-06-08`, `qwen3.7-plus`, `qwen3.7-flash`, `qwen3.7-flash-2026-07-15`, `qwen3-max`, `qwen-plus-2025-12-01`, `qwen-flash`
* `qwen3-coder-plus`, `qwen3-coder-flash`, `qwen3-coder-480b-a35b-instruct`
* `qwen3.6-plus`, `qwen3.6-plus-2026-04-02`
* `qwen3-vl-plus`, `qwen3-vl-flash`, `qwen3-vl-flash-2025-10-15` (vision models)
* `qwen-mt-flash`, `qwen-mt-lite` (translation models)
* `wan2.7-image`, `wan2.7-image-pro`, `wan2.7-t2v`, `wan2.7-i2v`, `wan2.7-r2v` (media models)
**DeepSeek (7 models):**
* `deepseek-v4-pro`, `deepseek-v4-flash`, `deepseek-v4-flash-0731`, `deepseek-v3.2`, `deepseek-v3.1`, `deepseek-v3`, `deepseek-r1`
**Kimi / Moonshot (5 models):**
* `kimi-k3`, `kimi-k2.7-code`, `kimi-k2.6`, `kimi-k2.5`, `kimi-k2-thinking`
**Also available:** GPT series (27), Claude series (12), xAI Grok (5), Zhipu GLM (4), ByteDance Seed/Seedream/Dreamina (10), StepFun (3), MiniMax (2), Gemini (2), Xiaomi MiMo (2), and more.
**List all available models:**
```bash theme={null}
curl https://api.aisa.one/v1/models -H "Authorization: Bearer $AISA_API_KEY"
```
## Model ID Versioning
AIsa uses **versioned model IDs** for some models. If you encounter a `503 - No available channels` error, the model ID may need updating.
**Known model ID mappings:**
| Common Name | Correct AIsa Model ID | ❌ Does NOT work |
| --------------------------- | ---------------------- | ------------------------------------------------ |
| Qwen Plus | `qwen-plus-2025-12-01` | `qwen3-plus`, `qwen-plus`, `qwen-plus-latest` |
| Qwen Flash | `qwen-flash` | `qwen3-flash`, `qwen-turbo`, `qwen-turbo-latest` |
| Qwen MT Flash (translation) | `qwen-mt-flash` | `qwen-mt`, `qwen-translate` |
| Qwen Max | `qwen3-max` | (works as-is) |
| DeepSeek V3.1 | `deepseek-v3.1` | (works as-is) |
| Kimi K2.5 | `kimi-k2.5` | (works as-is) |
| Kimi K3 | `kimi-k3` | `kimi-k3-latest`, `kimi-3` |
To check the latest available model IDs:
```bash theme={null}
curl https://api.aisa.one/v1/models -H "Authorization: Bearer $AISA_API_KEY"
```
## Switching Models
In chat (TUI):
```
/model aisa/qwen3-max
/model aisa/deepseek-v3.1
/model aisa/kimi-k2.5
```
Via CLI:
```bash theme={null}
openclaw models set aisa/qwen3-max
```
## AIsa pricing for the default models (per 1M tokens)
> Public AIsa rates as of July 28, 2026. Real-time pricing is subject to change — always check [https://console.aisa.one/pricing](https://console.aisa.one/pricing) for the latest rates, and each vendor's own page for their retail rates.
| Model | Input | Output | Cache read |
| --------------------------- | -------: | --------: | ---------: |
| `aisa/qwen-mt-flash` | \$0.0720 | \$0.2205 | \$0.0720 |
| `aisa/qwen-plus-2025-12-01` | \$0.2800 | \$0.8400 | \$0.2800 |
| `aisa/qwen3-max` | \$0.7200 | \$3.6000 | \$0.7200 |
| `aisa/deepseek-v3.1` | \$0.4018 | \$1.2047 | \$0.4018 |
| `aisa/kimi-k2.5` | \$0.4018 | \$2.1077 | \$0.4018 |
| `aisa/kimi-k3` | \$3.0000 | \$15.0000 | \$0.3000 |
For many non-Anthropic models AIsa negotiates volume discounts with the upstream provider and passes the savings through — see [AI Model Pricing](/docs/guides/pricing/ai-model-pricing-llm-inference) for the full catalog.
## Official Partnerships
AIsa maintains verified partnerships with:
* **Alibaba Cloud** — Qwen Key Account (full model family, 3 global regions: CN, US-Virginia, Singapore)
* **BytePlus** — Doubao by ByteDance
* **DeepSeek** — via Alibaba Cloud integration
* **Moonshot** — Kimi integration (`kimi-k3`, `kimi-k2.7-code`, `kimi-k2.6`, `kimi-k2.5`, `kimi-k2-thinking`), with an **enterprise Zero Data Retention (ZDR) agreement** covering Kimi K2.5 (effective Feb 10, 2026)
## Qwen Region Support
AIsa provides access to Qwen models across 3 global regions via Alibaba Cloud:
* 🇨🇳 China (default)
* 🇺🇸 US (Virginia)
* 🇸🇬 Singapore
This is unique to AIsa's Key Account status. Other providers like OpenRouter or the free Qwen Portal typically route through CN only.
## Response Latency (tested Feb 2026)
| Model | Avg Latency | Rating |
| ------------- | ----------- | ------------- |
| Qwen3 Max | \~1,577 ms | ⭐⭐⭐⭐⭐ Fastest |
| Qwen MT Flash | \~1,918 ms | ⭐⭐⭐⭐ Fast |
| Kimi K2.5 | \~2,647 ms | ⭐⭐⭐ Medium |
| DeepSeek V3.1 | \~3,002 ms | ⭐⭐⭐ Medium |
| Qwen Plus | \~8,207 ms | ⭐⭐ Slower |
## Troubleshooting
### "503 - No available channels" error
The model ID may be incorrect or outdated. Check the **Model ID Versioning** section above for correct IDs. Common fixes:
* `qwen3-plus` -> use `qwen-plus-2025-12-01`
* `qwen3-flash` -> use `qwen-flash` (or `qwen-mt-flash` for translation)
### "Model not found" error
Ensure the model ID uses the `aisa/` prefix in OpenClaw config:
```
✅ aisa/qwen3-max
❌ qwen3-max
```
### Kimi K2.5 "invalid temperature" error
Kimi K2.5 only accepts `temperature=1.0`. If your config sets a different temperature, add a model-specific override or let OpenClaw use the default.
### Kimi K2.5 empty response
In rare cases Kimi K2.5 may return empty content while consuming output tokens. Retry the request — this is typically transient.
### API key not detected
1. Check env var: `echo $AISA_API_KEY`
2. Or verify in config: `openclaw config get auth.profiles`
3. Re-run onboarding: `openclaw onboard --auth-choice aisa-api-key`
### Streaming not working
AIsa uses the OpenAI-compatible API (`openai-completions`). Ensure your config has:
```json theme={null}
"api": "openai-completions"
```
### Rate limits or daily caps
AIsa has **no daily request limits** (unlike the free Qwen Portal which caps at 2,000 req/day).
## Get an API Key
1. Visit [https://console.aisa.one/](https://console.aisa.one/)
2. Sign up and create an API key
3. Set it as `AISA_API_KEY` or use the onboarding wizard
## Notes
* AIsa's endpoint is OpenAI-compatible (`https://api.aisa.one/v1`)
* All models support streaming and function calling
* `supportsDeveloperRole` is set to `false` for Qwen models
* Context windows vary per model; see the [model catalog](/docs/guides/models) rather than assuming a default
* Reasoning (thinking) is enabled for all default models
* Kimi K2.5 requires `temperature=1.0` — other values cause API errors
* Kimi K2.5 via AIsa is covered by enterprise Zero Data Retention (ZDR) — data is not retained or used for training
* Image/Video generation models (WAN) are available but require separate configuration
* AIsa API serves 108 models as of August 5, 2026 — use the models endpoint to discover the current list
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. Set your key and install the skill:
```bash theme={null}
export AISA_API_KEY="your-key"
npm install -g @aisa-one/cli
aisa skills install aisa-provider
```
4. Start a new agent session so the runtime loads the updated skill instructions.
## Related
Recommended OpenClaw setup path.
Route Chinese-language prompts to Chinese LLMs.
Route prompts across supported models.
# AIsa Tavily Search
Source: https://aisa.one/docs/agent-skills/aisa-tavily
Search the web and extract readable page content through AIsa.
[View on GitHub ->](https://github.com/AIsa-team/agent-skills/tree/main/aisa-tavily)
**Web search and page extraction through AIsa.** Find current sources or turn public URLs into readable content with Tavily-backed endpoints.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install aisa-tavily
```
## What can agents do with it?
Find credible sources for a topic or question.
Search current web results for recent context.
Extract readable text from public URLs.
Gather sources before writing a brief or report.
## When to use
* When the user needs web search results for a topic, question, company, product, or event
* When the user wants source discovery before summarizing, comparing, or validating information
* When the user needs current-news lookup with recent-day filtering
* When the user provides a public URL and wants the page content extracted for downstream analysis
## When NOT to use
* Do not use this skill for sites that require login, browser interaction, cookies, or private account access
* Do not use this skill for posting, social engagement, media upload, or OAuth-based workflows; it performs search and public-URL extraction only
* Do not use this skill when there is no network access to `https://aisa.one` or `https://api.aisa.one`
## Quick Reference
| Task | Command |
| -------------------------- | -------------------------------------------------------- |
| Search the web | `node scripts/search.mjs "query"` |
| Search with more results | `node scripts/search.mjs "query" -n 10` |
| Run deeper research | `node scripts/search.mjs "query" --deep` |
| Search news | `node scripts/search.mjs "query" --topic news` |
| Search recent news only | `node scripts/search.mjs "query" --topic news --days 7` |
| Extract content from a URL | `node scripts/extract.mjs "https://example.com/article"` |
## Capabilities
* Search the web through AIsa's Tavily-backed relay
* Return concise, relevant result sets for research and agent workflows
* Run deeper research with `--deep` for broader coverage
* Focus on news search with `--topic news`
* Limit news lookback windows with `--days `
* Extract readable content from a public URL
## Search
```bash theme={null}
node scripts/search.mjs "query"
node scripts/search.mjs "query" -n 10
node scripts/search.mjs "query" --deep
node scripts/search.mjs "query" --topic news
```
## Options
* `-n `: Number of results (default: 5, max: 20)
* `--deep`: Use advanced search for deeper research (slower, more comprehensive)
* `--topic `: Search topic - `general` (default) or `news`
* `--days `: For news topic, limit to last n days
## Extract content from URL
```bash theme={null}
node scripts/extract.mjs "https://example.com/article"
```
## Setup
Requirements:
* `node`
* `AISA_API_KEY`
* Internet access with outbound requests to `https://aisa.one` and `https://api.aisa.one`
Auth, relay, and side-effect notes:
* This skill requires `AISA_API_KEY` from [https://console.aisa.one](https://console.aisa.one)
* Requests are sent through AIsa's remote relay at `https://aisa.one` and `https://api.aisa.one`
* This skill does not use OAuth
* This skill does not upload media or files
* This skill may send user search queries and public target URLs to the remote AIsa relay in order to return search results or extracted content
## Example Requests
* "Search for recent coverage of OpenAI enterprise pricing"
* "Find sources comparing vector databases for production RAG"
* "Look up this week's news about NVIDIA export controls"
* "Extract the main content from this article URL"
## Notes
* Needs `AISA_API_KEY` from [https://console.aisa.one](https://console.aisa.one)
* Powered by AIsa's unified API gateway (`https://aisa.one` / `https://api.aisa.one`)
* Use `--deep` for complex research questions
* Use `--topic news` for current events
* Search and extraction operate through remote relay requests, not local browser automation
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. Set your key and install the skill:
```bash theme={null}
export AISA_API_KEY="your-key"
npm install -g @aisa-one/cli
aisa skills install aisa-tavily
```
4. Start a new agent session so the runtime loads the updated skill instructions.
## Related
Focused Tavily search with filters and depth controls.
Extract clean readable content from URLs.
Combine Tavily with scholar and Perplexity.
# AIsa Twitter API
Source: https://aisa.one/docs/agent-skills/aisa-twitter-api
Read X/Twitter profiles, timelines, tweets, trends, and communities.
[View on GitHub ->](https://github.com/AIsa-team/agent-skills/tree/main/aisa-twitter-api)
**Twitter/X data access for agents.** Use AIsa to read profiles, timelines, tweets, trends, communities, lists, Spaces, and related social context.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install aisa-twitter-api
```
## What can agents do with it?
Inspect users, bios, timelines, and relationships.
Find tweets, trends, lists, spaces, and communities.
Review followers, following, and network context.
Pull thread and Grok conversation context for analysis.
## When to use
* When the user wants one primary Twitter/X skill for research, monitoring, trend discovery, timeline review, or content discovery.
* When the user needs to inspect profiles, timelines, mentions, trends, replies, quotes, lists, communities, or Spaces.
* When the user wants to draft or publish posts after explicit OAuth approval without sharing passwords or browser cookies.
* When the workflow should use `AISA_API_KEY` and relay-based access to `https://api.aisa.one` instead of local credential extraction.
## When NOT to use
* Do NOT use this for password-based login, cookie extraction, or browser credential scraping.
* Do NOT use this when the workflow must avoid relay-based requests to `https://api.aisa.one`.
* Do NOT use this as the primary skill for like, follow, reply, or growth-action workflows better handled by `aisa-twitter-engagement-suite`.
## Quick Reference
* Required environment variable: `AISA_API_KEY`
* Required binary: `python3`
* Read client: `scripts/twitter_client.py`
* OAuth and posting client: `scripts/twitter_oauth_client.py`
* Posting guide: `references/post_twitter.md`
* Relay target: `https://api.aisa.one`
* External writes: posting happens only after explicit OAuth approval
* Upload behavior: image and video posting sends user-selected media through the relay
## Setup
```bash theme={null}
export AISA_API_KEY="your-key"
```
Requirements:
* `python3`
* `AISA_API_KEY`
* Internet access to `https://api.aisa.one`
* Explicit OAuth approval before posting
* User-provided media files when posting images or videos
## Capabilities
* Read user data, timelines, mentions, followers, followings, and related profile information.
* Search tweets and users, inspect replies, quotes, retweeters, thread context, trends, lists, communities, and Spaces.
* Run watchlist-style research and monitoring workflows from one Twitter/X command surface.
* Publish text, image, and video posts after explicit OAuth approval.
## High-Intent Workflows
* Research a creator, competitor, brand, or narrative before writing.
* Monitor a keyword, launch, or watchlist and pull representative tweets quickly.
* Review timelines, mentions, replies, and trend movement from one command surface.
* Draft and publish a post only after the user explicitly approves OAuth.
## Common Commands
```bash theme={null}
python3 scripts/twitter_client.py search --query "AI agents" --type Latest
python3 scripts/twitter_oauth_client.py authorize
python3 scripts/twitter_oauth_client.py post --text "Hello from AIsa"
```
## Guardrails
* Do not ask for Twitter/X passwords or browser cookies.
* Do not invent captions, tweet URLs, or attachment files.
* Do not claim external posting succeeded until the API confirms success.
* Do not imply OAuth is optional for posting.
## Example Requests
* Research what builders on X are saying about AI agents this week.
* Track reactions to our product launch and pull representative tweets.
* Build a small watchlist of competitor accounts and summarize what changed today.
* Authorize and publish a short Twitter post with an attached image.
## Security Notes
* This is a relay-based workflow that sends Twitter/X API requests to `https://api.aisa.one`.
* Posting requires explicit OAuth approval through the relay before external writes occur.
* Approved image and video posting sends user-selected media through the relay for upload.
* Required secret: `AISA_API_KEY`.
* This workflow does not require passwords or browser cookie extraction.
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. Set your key and install the skill:
```bash theme={null}
export AISA_API_KEY="your-key"
npm install -g @aisa-one/cli
aisa skills install aisa-twitter-api
```
4. Start a new agent session so the runtime loads the updated skill instructions.
## Related
Full X/Twitter search and engagement workflows.
Command-style X/Twitter workflows.
X/Twitter endpoint docs.
# AIsa Twitter Command Center
Source: https://aisa.one/docs/agent-skills/aisa-twitter-command-center
Search and publish on X/Twitter through one approved workflow.
[View on GitHub ->](https://github.com/AIsa-team/agent-skills/tree/main/aisa-twitter-command-center)
**A command center for X/Twitter work.** Search profiles, tweets, trends, lists, communities, and Spaces, then publish through OAuth when approved.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install aisa-twitter-command-center
```
## What can agents do with it?
Search users, tweets, trends, lists, and communities.
Draft and publish X posts after account authorization.
Like, follow, reply, and manage social workflows.
Review and use direct-message context in workflows.
## When to use
* The user wants Twitter/X research, monitoring, or content discovery.
* The user wants to inspect profiles, timelines, mentions, trends, replies, quotes, lists, communities, or Spaces.
* The user wants to draft or publish posts after explicit OAuth approval without sharing passwords.
## When NOT to use
* The user needs password-based login, cookie extraction, or browser credential scraping.
* The workflow must avoid relay-based calls to `api.aisa.one`.
* The request is for unsupported engagement actions not covered by this package.
## Quick Reference
* Required environment variable: `AISA_API_KEY`
* Read client: `scripts/twitter_client.py`
* OAuth and posting client: `scripts/twitter_oauth_client.py`
* Posting guide: `references/post_twitter.md`
## Setup
```bash theme={null}
export AISA_API_KEY="your-key"
```
All network calls go to `https://api.aisa.one/apis/v1/...`.
## Capabilities
* Read user data, timelines, mentions, followers, followings, and related profile information.
* Search tweets and users, inspect replies, quotes, retweeters, thread context, trends, lists, communities, and Spaces.
* Publish text, image, and video posts after explicit OAuth approval.
* Return an authorization link when posting access has not been approved yet.
## Common Commands
```bash theme={null}
python3 scripts/twitter_client.py user-info --username elonmusk
python3 scripts/twitter_client.py search --query "AI agents" --type Latest
python3 scripts/twitter_client.py trends --woeid 1
python3 scripts/twitter_oauth_client.py status
python3 scripts/twitter_oauth_client.py authorize
python3 scripts/twitter_oauth_client.py post --text "Hello from AIsa"
```
## Posting Workflow
When the user asks to send, publish, reply, or quote on X/Twitter:
1. Check whether `AISA_API_KEY` is configured.
2. If the user intent is to publish, attempt the publish workflow.
3. If authorization has not been completed, return the OAuth authorization link first.
4. Use `--media-file` only for user-provided local workspace files.
5. Do not claim the post succeeded until the publish command actually succeeds.
## Guardrails
* Do not ask for Twitter passwords or browser cookies.
* Do not invent captions, tweet URLs, or attachment files.
* Do not default to browser opening unless the user explicitly wants local browser launch.
* Do not claim external posting succeeded until the API confirms success.
## Security Notes
* The workflow is relay-based and sends API requests, OAuth requests, and approved media uploads to `api.aisa.one`.
* Required secret: `AISA_API_KEY`.
* This workflow does not require passwords, browser cookie extraction, or direct account credential sharing.
## References
* See `references/post_twitter.md` for detailed posting examples and OAuth guidance.
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. Set your key and install the skill:
```bash theme={null}
export AISA_API_KEY="your-key"
npm install -g @aisa-one/cli
aisa skills install aisa-twitter-command-center
```
4. Start a new agent session so the runtime loads the updated skill instructions.
## Related
X/Twitter data access and social intelligence.
Focused post, like, follow, and reply actions.
OAuth setup for write actions.
# AIsa Twitter Post & Engage
Source: https://aisa.one/docs/agent-skills/aisa-twitter-post-engage
Post, like, follow, and check X/Twitter relationships after authorization.
[View on GitHub ->](https://github.com/AIsa-team/agent-skills/tree/main/aisa-twitter-post-engage)
**OAuth-approved X/Twitter actions.** Post, like, follow, and check relationships only after the user authorizes the workflow.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install aisa-twitter-post-engage
```
## What can agents do with it?
Publish new posts or replies with user authorization.
Like or unlike tweets from a linked account.
Follow, unfollow, and check follow relationships.
Coordinate lightweight social actions safely.
## When to use
* The user wants Twitter/X research plus posting, liking, unliking, following, or unfollowing workflows.
* The task can use a Python client with `AISA_API_KEY` and explicit OAuth approval.
* The workflow needs a single package that covers read, post, and engagement actions.
## When NOT to use
* The user needs cookie extraction, password login, or a fully local Twitter client.
* The workflow must avoid relay-based network calls or media upload through `api.aisa.one`.
* The task needs undocumented secrets or browser-derived auth values.
## Quick Reference
* Required environment variable: `AISA_API_KEY`
* Read client: `scripts/twitter_client.py`
* Post client: `scripts/twitter_oauth_client.py`
* Engage client: `scripts/twitter_engagement_client.py`
* References: `references/post_twitter.md`, `references/engage_twitter.md`
## Setup
```bash theme={null}
export AISA_API_KEY="your-key"
```
All network calls go to `https://api.aisa.one/apis/v1/...`.
## Capabilities
* Read user, tweet, trend, list, community, and Spaces data.
* Publish text, image, and video posts after explicit OAuth approval.
* Like, unlike, follow, and unfollow through the engagement client once authorization exists.
## Common Commands
```bash theme={null}
python3 scripts/twitter_client.py search --query "AI agents" --type Latest
python3 scripts/twitter_oauth_client.py authorize
python3 scripts/twitter_oauth_client.py post --text "Hello from AIsa"
python3 scripts/twitter_engagement_client.py like-latest --user "@elonmusk"
python3 scripts/twitter_engagement_client.py follow-user --user "@elonmusk"
```
## Workflow
* Use `references/post_twitter.md` for post, reply, quote, and media-upload actions.
* Use `references/engage_twitter.md` for likes, unlikes, follows, and unfollows.
* Obtain OAuth authorization before any write action.
## Guardrails
* Do not ask for passwords, browser cookies, or undocumented secrets.
* Do not guess target accounts or tweet IDs when multiple candidates exist.
* Do not claim engagement or posting succeeded unless the relay request returns success.
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. Set your key and install the skill:
```bash theme={null}
export AISA_API_KEY="your-key"
npm install -g @aisa-one/cli
aisa skills install aisa-twitter-post-engage
```
4. Start a new agent session so the runtime loads the updated skill instructions.
## Related
Start the OAuth flow for write actions.
Endpoint reference for posting.
Search and engagement workflow hub.
# AIsa YouTube Search
Source: https://aisa.one/docs/agent-skills/aisa-youtube-search
Search YouTube videos, channels, and playlists through AIsa.
[View on GitHub ->](https://github.com/AIsa-team/agent-skills/tree/main/aisa-youtube-search)
**YouTube discovery through AIsa.** Search videos, channels, and playlists for research, trend monitoring, and content planning.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install aisa-youtube-search
```
## What can agents do with it?
Find relevant videos for a query or topic.
Identify channels covering a niche.
Find curated video collections.
Use YouTube as an input for research workflows.
## When to use
* The user wants to search YouTube videos, channels, or playlists.
* The task needs region or language filters without direct Google API setup.
* The workflow can call the AIsa YouTube search endpoint with `AISA_API_KEY`.
## When NOT to use
* The user needs browser automation, local scraping, or direct YouTube account actions.
* The workflow must avoid sending search requests to `api.aisa.one`.
* The request depends on a local helper script that is not part of this package.
## Quick Reference
* Required environment variable: `AISA_API_KEY`
* Endpoint: `https://api.aisa.one/apis/v1/youtube/search`
* This package is curl-first and does not ship a local Python client.
## Setup
```bash theme={null}
export AISA_API_KEY="your-key"
```
## Common Commands
```bash theme={null}
curl -s "https://api.aisa.one/apis/v1/youtube/search?engine=youtube&q=machine+learning+tutorial" \
-H "Authorization: Bearer $AISA_API_KEY"
curl -s "https://api.aisa.one/apis/v1/youtube/search?engine=youtube&q=AI+news&gl=us&hl=en" \
-H "Authorization: Bearer $AISA_API_KEY"
curl -s "https://api.aisa.one/apis/v1/youtube/search?engine=youtube&q=python+tutorial&sp=EgIQAQ%3D%3D" \
-H "Authorization: Bearer $AISA_API_KEY"
```
## Capabilities
* Search YouTube SERP results with `q`
* Filter by locale with `gl` and `hl`
* Apply pagination or narrowing via `sp`
* Return structured results that may include `videos` or grouped `sections`
## Guardrails
* Do not ask for Google credentials or browser cookies.
* Do not claim a result is local-only when it depends on relay requests.
* Do not fabricate missing filters or parameters.
## Security Notes
* All search requests go to `api.aisa.one`.
* Required secret: `AISA_API_KEY`.
* This workflow does not require passwords, browser automation, or local scraping.
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. Set your key and install the skill:
```bash theme={null}
export AISA_API_KEY="your-key"
npm install -g @aisa-one/cli
aisa skills install aisa-youtube-search
```
4. Start a new agent session so the runtime loads the updated skill instructions.
## Related
Ranked YouTube SERP results with rich metadata.
General YouTube content research workflow.
Combine YouTube with web and scholar search.
# AIsa CN-LLM Route
Source: https://aisa.one/docs/agent-skills/cn-llm
Route Chinese-language prompts to Chinese LLM families through AIsa.
[View on GitHub ->](https://github.com/AIsa-team/agent-skills/tree/main/cn-llm)
**Chinese LLM routing through AIsa.** Send Chinese-language tasks to Qwen, DeepSeek, GLM, Baichuan, and related model families.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install cn-llm
```
## What can agents do with it?
Route Chinese-language tasks to strong Chinese LLMs.
Choose between Qwen, DeepSeek, GLM, Baichuan, and related models.
Switch between Chinese and global model families.
Give agents practical routing heuristics.
## 🔥 What You Can Do
### Intelligent Chat
```
"Use Qwen to answer Chinese questions, use DeepSeek for coding"
```
### Deep Reasoning
```
"Use DeepSeek-R1 for complex reasoning tasks"
```
### Code Generation
```
"Use DeepSeek-Coder to generate Python code with explanations"
```
### Long Text Processing
```
"Use Qwen-Long for ultra-long document summarization"
```
### Model Comparison
```
"Compare response quality between Qwen-Max and DeepSeek-V3"
```
## Supported Models
### Qwen (Alibaba)
| Model | Input Price | Output Price | Features |
| ------------------------------ | ----------- | ------------ | --------------------------- |
| qwen3-max | \$1.37/M | \$5.48/M | Most powerful general model |
| qwen3-max-2026-01-23 | \$1.37/M | \$5.48/M | Latest version |
| qwen3-coder-plus | \$2.86/M | \$28.60/M | Enhanced code generation |
| qwen3-coder-flash | \$0.72/M | \$3.60/M | Fast code generation |
| qwen3-coder-480b-a35b-instruct | \$2.15/M | \$8.60/M | 480B large model |
| qwen3-vl-plus | \$0.43/M | \$4.30/M | Vision-language model |
| qwen3-vl-flash | \$0.86/M | \$0.86/M | Fast vision model |
| qwen3-omni-flash | \$4.00/M | \$16.00/M | Multimodal model |
| qwen-vl-max | \$0.23/M | \$0.57/M | Vision-language |
| qwen-plus-2025-12-01 | \$1.26/M | \$12.60/M | Plus version |
| qwen-mt-flash | \$0.168/M | \$0.514/M | Fast machine translation |
| qwen-mt-lite | \$0.13/M | \$0.39/M | Lite machine translation |
### DeepSeek
| Model | Input Price | Output Price | Features |
| ---------------- | ----------- | ------------ | ------------------------------- |
| deepseek-r1 | \$2.00/M | \$8.00/M | Reasoning model, supports Tools |
| deepseek-v3 | \$1.00/M | \$4.00/M | General chat, 671B parameters |
| deepseek-v3-0324 | \$1.20/M | \$4.80/M | V3 stable version |
| deepseek-v3.1 | \$4.00/M | \$12.00/M | Latest Terminus version |
> **Note**: Prices are in M (million tokens). Model availability may change, see [console.aisa.one/pricing](https://console.aisa.one/pricing) for the latest list.
## Quick Start
```bash theme={null}
export AISA_API_KEY="your-key"
```
## API Endpoints
### OpenAI Compatible Interface
```
POST https://api.aisa.one/v1/chat/completions
```
#### Qwen Example
```bash theme={null}
curl -X POST "https://api.aisa.one/v1/chat/completions" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3-max",
"messages": [
{"role": "system", "content": "You are a professional Chinese assistant."},
{"role": "user", "content": "Please explain what a large language model is?"}
],
"temperature": 0.7,
"max_tokens": 1000
}'
```
#### DeepSeek Example
```bash theme={null}
# DeepSeek-V3 general chat (671B parameters)
curl -X POST "https://api.aisa.one/v1/chat/completions" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v3",
"messages": [{"role": "user", "content": "Write a quicksort algorithm in Python"}],
"temperature": 0.3
}'
# DeepSeek-R1 deep reasoning (supports Tools)
curl -X POST "https://api.aisa.one/v1/chat/completions" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-r1",
"messages": [{"role": "user", "content": "A farmer needs to cross a river with a wolf, a sheep, and a cabbage. The boat can only carry the farmer and one item at a time. If the farmer is not present, the wolf will eat the sheep, and the sheep will eat the cabbage. How can the farmer safely cross?"}]
}'
# DeepSeek-V3.1 Terminus latest version
curl -X POST "https://api.aisa.one/v1/chat/completions" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v3.1",
"messages": [{"role": "user", "content": "Implement an LRU cache with get and put operations"}]
}'
```
#### Qwen3 Code Generation Example
```bash theme={null}
curl -X POST "https://api.aisa.one/v1/chat/completions" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3-coder-plus",
"messages": [{"role": "user", "content": "Implement a thread-safe Map in Go"}]
}'
```
#### Parameter Reference
| Parameter | Type | Required | Description |
| ------------- | ------- | -------- | -------------------------------- |
| `model` | string | Yes | Model identifier |
| `messages` | array | Yes | Message list |
| `temperature` | number | No | Randomness (0-2, default 1) |
| `max_tokens` | integer | No | Maximum tokens to generate |
| `stream` | boolean | No | Stream output (default false) |
| `top_p` | number | No | Nucleus sampling parameter (0-1) |
#### Response Format
```json theme={null}
{
"id": "chatcmpl-xxx",
"object": "chat.completion",
"created": 1234567890,
"model": "qwen-max",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "A large language model (LLM) is a deep learning-based..."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 30,
"completion_tokens": 150,
"total_tokens": 180,
"cost": 0.001
}
}
```
### Streaming Output
```bash theme={null}
curl -X POST "https://api.aisa.one/v1/chat/completions" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen-plus",
"messages": [{"role": "user", "content": "Tell a Chinese folk story"}],
"stream": true
}'
```
Returns Server-Sent Events (SSE) format:
```
data: {"id":"chatcmpl-xxx","choices":[{"delta":{"content":"Once"}}]}
data: {"id":"chatcmpl-xxx","choices":[{"delta":{"content":" upon"}}]}
...
data: [DONE]
```
## Python Client
### CLI Usage
```bash theme={null}
# Qwen chat
python3 scripts/cn_llm_client.py chat --model qwen3-max --message "Hello, please introduce yourself"
# Qwen3 code generation
python3 scripts/cn_llm_client.py chat --model qwen3-coder-plus --message "Write a binary search algorithm"
# DeepSeek-R1 reasoning
python3 scripts/cn_llm_client.py chat --model deepseek-r1 --message "Which is larger, 9.9 or 9.11? Please reason in detail"
# DeepSeek-V3 chat
python3 scripts/cn_llm_client.py chat --model deepseek-v3 --message "Tell a story" --stream
# With system prompt
python3 scripts/cn_llm_client.py chat --model qwen3-max --system "You are a classical poetry expert" --message "Write a poem about plum blossoms"
# Model comparison
python3 scripts/cn_llm_client.py compare --models "qwen3-max,deepseek-v3" --message "What is quantum computing?"
# List supported models
python3 scripts/cn_llm_client.py models
```
### Python SDK Usage
```python theme={null}
from cn_llm_client import CNLLMClient
client = CNLLMClient() # Uses AISA_API_KEY environment variable
# Qwen chat
response = client.chat(
model="qwen3-max",
messages=[{"role": "user", "content": "Hello!"}]
)
print(response["choices"][0]["message"]["content"])
# Qwen3 code generation
response = client.chat(
model="qwen3-coder-plus",
messages=[
{"role": "system", "content": "You are a professional programmer."},
{"role": "user", "content": "Implement a singleton pattern in Python"}
],
temperature=0.3
)
# Streaming output
for chunk in client.chat_stream(
model="deepseek-v3",
messages=[{"role": "user", "content": "Tell a story about an idiom"}]
):
print(chunk, end="", flush=True)
# Model comparison
results = client.compare_models(
models=["qwen3-max", "deepseek-v3", "deepseek-r1"],
message="Explain what machine learning is"
)
for model, result in results.items():
print(f"{model}: {result['response'][:100]}...")
```
## Use Cases
### 1. Chinese Content Generation
```python theme={null}
# Copywriting
response = client.chat(
model="qwen3-max",
messages=[
{"role": "system", "content": "You are a professional copywriter."},
{"role": "user", "content": "Write a product introduction for a smart watch"}
]
)
```
### 2. Code Development
```python theme={null}
# Code generation and explanation
response = client.chat(
model="qwen3-coder-plus",
messages=[{"role": "user", "content": "Implement a thread-safe Map in Go"}]
)
```
### 3. Complex Reasoning
```python theme={null}
# Mathematical reasoning
response = client.chat(
model="deepseek-r1",
messages=[{"role": "user", "content": "Prove: For any positive integer n, n³-n is divisible by 6"}]
)
```
### 4. Visual Understanding
```python theme={null}
# Image understanding
response = client.chat(
model="qwen3-vl-plus",
messages=[
{"role": "user", "content": [
{"type": "text", "text": "Describe the content of this image"},
{"type": "image_url", "image_url": {"url": "https://example.com/image.jpg"}}
]}
]
)
```
### 5. Model Routing Strategy
```python theme={null}
MODEL_MAP = {
"chat": "qwen3-max", # General chat
"code": "qwen3-coder-plus", # Code generation
"reasoning": "deepseek-r1", # Complex reasoning
"vision": "qwen3-vl-plus", # Visual understanding
"fast": "qwen3-coder-flash", # Fast response
"translate": "qwen-mt-flash" # Machine translation
}
def route_by_task(task_type: str, message: str) -> str:
model = MODEL_MAP.get(task_type, "qwen3-max")
return client.chat(model=model, messages=[{"role": "user", "content": message}])
```
## Error Handling
Errors return JSON with `error` field:
```json theme={null}
{
"error": {
"code": "model_not_found",
"message": "Model 'xxx' is not available"
}
}
```
Common error codes:
* `401` - Invalid or missing API Key
* `402` - Insufficient balance
* `404` - Model not found
* `429` - Rate limit exceeded
* `500` - Server error
## Pricing
| Model | Input (\$/M) | Output (\$/M) |
| ----------------- | ------------ | ------------- |
| qwen3-max | \$1.37 | \$5.48 |
| qwen3-coder-plus | \$2.86 | \$28.60 |
| qwen3-coder-flash | \$0.72 | \$3.60 |
| qwen3-vl-plus | \$0.43 | \$4.30 |
| deepseek-v3 | \$1.00 | \$4.00 |
| deepseek-r1 | \$2.00 | \$8.00 |
| deepseek-v3.1 | \$4.00 | \$12.00 |
> Price unit: \$ per Million tokens. Each response includes `usage.cost` and `usage.credits_remaining`.
## Get Started
1. Register at [aisa.one](https://aisa.one)
2. Get API Key
3. Top up (pay-as-you-go)
4. Set environment variable: `export AISA_API_KEY="your-key"`
## Full API Reference
See [API Reference](https://aisa.one/docs/api-reference) for complete endpoint documentation.
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. Set your key and install the skill:
```bash theme={null}
export AISA_API_KEY="your-key"
npm install -g @aisa-one/cli
aisa skills install cn-llm
```
4. Start a new agent session so the runtime loads the updated skill instructions.
## Related
Overview of Chinese model families in AIsa.
General-purpose model routing across providers.
Browse supported model IDs.
# Crypto Market Data
Source: https://aisa.one/docs/agent-skills/crypto-market-data
Real-time and historical cryptocurrency market data for autonomous agents — prices, coin details, charts, OHLC candles, token lookup by contract address, market-cap screening, exchange tickers, categories, trending searches, and crypto news.
[View on GitHub →](https://github.com/AIsa-team/agent-skills/tree/main/crypto-market-data)
**Complete crypto market data for autonomous agents.** One `AISA_API_KEY` unlocks CoinGecko — prices, charts, OHLC candles, on-chain token lookup, exchange tickers, trending coins, and news. Everything an agent needs to research, screen, and track the crypto market.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install crypto-market-data
```
## What can agents do with it?
"Get current BTC and ETH prices in USD and EUR with 24-hour change."
"Pull bitcoin's 30-day price chart in USD for my dashboard."
"Return the last 7 days of OHLC candles for ethereum."
"Identify the ERC-20 at address 0xA0b8…eB48 and pull its price."
"Show me the top 25 coins by market cap, ordered descending."
"List Binance tickers ordered by trust score."
## Core capabilities
* **Simple prices** — current prices across fiat and crypto currencies, with optional market-cap / 24h-volume / 24h-change includes
* **Coin data** — full coin profile, lists, historical snapshots, market charts, OHLC candles, tickers
* **Contract-based lookup** — resolve a token by contract address on a supported platform (Ethereum, BSC, Polygon, etc.) and pull its price or full profile
* **Markets & screening** — coins by market cap with flexible ordering and pagination
* **Categories** — category lists and per-category market leaderboards (DeFi, AI, L1s, etc.)
* **Exchanges** — exchange lists, detailed data, trading pairs, ID mappings
* **Trending & news** — trending search queries and current crypto news (CoinGecko news is upstream plan-gated)
## Quick start
```bash theme={null}
export AISA_API_KEY="your-key"
```
### Simple prices
```bash theme={null}
# Current prices with 24h change
python3 scripts/coingecko_client.py simple price \
--ids bitcoin,ethereum --vs usd,eur --include-24hr-change
# Or direct curl
curl "https://api.aisa.one/apis/v1/coingecko/simple/price?ids=bitcoin,ethereum&vs_currencies=usd,eur&include_24hr_change=true" \
-H "Authorization: Bearer $AISA_API_KEY"
```
### Market-cap screening
```bash theme={null}
python3 scripts/coingecko_client.py coins markets \
--vs usd --order market_cap_desc --per-page 25
```
### Historical chart
```bash theme={null}
python3 scripts/coingecko_client.py coins chart --id bitcoin --vs usd --days 30
```
### OHLC candles
```bash theme={null}
python3 scripts/coingecko_client.py coins ohlc --id bitcoin --vs usd --days 7
```
### Token lookup by contract address
```bash theme={null}
python3 scripts/coingecko_client.py coins contract \
--platform ethereum \
--address 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
```
### Exchange tickers
```bash theme={null}
python3 scripts/coingecko_client.py exchanges tickers \
--id binance --order trust_score_desc
```
## When to use it
* Cryptocurrency price tracking and portfolio analysis
* Token identification via on-chain contract addresses
* Market-cap screening and category breakdowns
* Exchange-level research (trust scores, trading pairs, tickers)
* Current and historical crypto data for reports and dashboards
## When not to use it
* Traditional equities data — use [MarketPulse](/docs/agent-skills/marketpulse) instead
* Prediction-market order-book depth — use [Prediction Market Data](/docs/agent-skills/prediction-market-data)
* On-chain wallet operations (balance lookups, transaction traces) — different specialized tools
## Requirements
* Python 3, `curl`, POSIX shell
* `AISA_API_KEY` ([sign up at aisa.one](https://aisa.one) — new accounts start with \$2 free credit)
* Compatible with agentskills.io-standard harnesses
## Endpoint reference
| Endpoint | Method | Purpose |
| ---------------------------------------------------------------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------- |
| `/coingecko/simple/price` | GET | [Simple price](/docs/api-reference/coingecko/get_coingecko-simple-price) |
| `/coingecko/simple/supported_vs_currencies` | GET | [Supported currencies](/docs/api-reference/coingecko/get_coingecko-simple-supported-vs-currencies) |
| `/coingecko/simple/token_price/{id}` | GET | [Coin price by token address](/docs/api-reference/coingecko/get_coingecko-simple-token-price-id) |
| `/coingecko/coins/list` | GET | [Coins list](/docs/api-reference/coingecko/get_coingecko-coins-list) |
| `/coingecko/coins/markets` | GET | [Coins markets](/docs/api-reference/coingecko/get_coingecko-coins-markets) |
| `/coingecko/coins/{id}` | GET | [Coin data by id](/docs/api-reference/coingecko/get_coingecko-coins-id) |
| `/coingecko/coins/{id}/history` | GET | [Coin historical data](/docs/api-reference/coingecko/get_coingecko-coins-id-history) |
| `/coingecko/coins/{id}/market_chart` | GET | [Coin historical chart](/docs/api-reference/coingecko/get_coingecko-coins-id-market-chart) |
| `/coingecko/coins/{id}/market_chart/range` | GET | [Coin market chart range](/docs/api-reference/coingecko/get_coingecko-coins-id-market-chart-range) |
| `/coingecko/coins/{id}/ohlc` | GET | [Coin OHLC](/docs/api-reference/coingecko/get_coingecko-coins-id-ohlc) |
| `/coingecko/coins/{id}/tickers` | GET | [Coin tickers](/docs/api-reference/coingecko/get_coingecko-coins-id-tickers) |
| `/coingecko/coins/{id}/contract/{contract_address}` | GET | [Coin data by token address](/docs/api-reference/coingecko/get_coingecko-coins-id-contract-contract-address) |
| `/coingecko/coins/{id}/contract/{contract_address}/market_chart` | GET | [Historical chart by contract](/docs/api-reference/coingecko/get_coingecko-coins-id-contract-contract-address-market-chart) |
| `/coingecko/coins/{id}/contract/{contract_address}/market_chart/range` | GET | [Historical chart range by contract](/docs/api-reference/coingecko/get_coingecko-coins-id-contract-contract-address-market-chart-range) |
| `/coingecko/coins/categories/list` | GET | [Categories list](/docs/api-reference/coingecko/get_coingecko-coins-categories-list) |
| `/coingecko/coins/categories` | GET | [Categories with market data](/docs/api-reference/coingecko/get_coingecko-coins-categories) |
| `/coingecko/exchanges` | GET | [Exchanges list](/docs/api-reference/coingecko/get_coingecko-exchanges) |
| `/coingecko/exchanges/list` | GET | [Exchange id map](/docs/api-reference/coingecko/get_coingecko-exchanges-list) |
| `/coingecko/exchanges/{id}` | GET | [Exchange data by id](/docs/api-reference/coingecko/get_coingecko-exchanges-id) |
| `/coingecko/exchanges/{id}/tickers` | GET | [Exchange tickers](/docs/api-reference/coingecko/get_coingecko-exchanges-id-tickers) |
| `/coingecko/search/trending` | GET | [Trending search](/docs/api-reference/coingecko/get_coingecko-search-trending) |
| `/coingecko/news` | GET | [Crypto news](/docs/api-reference/coingecko/get_coingecko-news) |
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. `export AISA_API_KEY="your-key"` and install the skill:
```bash theme={null}
npm install -g @aisa-one/cli
aisa skills install crypto-market-data
```
4. Start a new session in your agent — the skill loads automatically.
## Related
Every endpoint this skill wraps, with interactive playgrounds.
Equities counterpart — stocks, financials, filings, macro.
Polymarket and Kalshi for event-probability data.
# Last 30 Days
Source: https://aisa.one/docs/agent-skills/last30days
30-day multi-source research for autonomous agents — ranked, clustered briefs with citations from Reddit, X, YouTube, TikTok, Instagram, Hacker News, Polymarket, GitHub, and grounded web search.
[View on GitHub →](https://github.com/AIsa-team/agent-skills/tree/main/last30days)
**Recent-evidence research across the social web.** One `AISA_API_KEY` aggregates the last 30 days of signal from eight platforms plus grounded web search, then ranks and clusters the findings into a citation-backed brief — typically in \~40 seconds.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install last30days
```
## What can agents do with it?
"What's the community saying about the OpenAI Agents SDK this month?"
"Claude Code vs Codex — who's winning developer mindshare?"
"Summarize reception of the GPT-5 launch across Reddit, X, and HN."
"What has Peter Steinberger been shipping and posting about lately?"
"Bitcoin price narratives — news, prediction markets, and social sentiment."
"Return JSON clusters so a downstream agent can act on the findings."
## Core capabilities
* **Eight sources in one call** — Reddit, X/Twitter, YouTube, TikTok, Instagram, Hacker News, Polymarket, and grounded web search (plus optional GitHub with a token)
* **Ranked evidence clusters** — top findings grouped by theme, each with URL, date, and engagement stats
* **Per-source breakdowns** — statistical summary of which platforms are driving the signal
* **Markdown or JSON output** — human-readable brief by default, structured JSON for agent pipelines
* **Deep mode** — `--deep` flag expands the candidate pool and runs a more thorough ranking pass
* **AIsa-native planning** — uses the AIsa API for query planning, candidate ranking, and semantic clustering
## Quick start
```bash theme={null}
export AISA_API_KEY="your-key"
```
### Run a scan
```bash theme={null}
# Trend scan
bash "${SKILL_ROOT}/scripts/run-last30days.sh" "OpenAI Agents SDK"
# Competitor comparison
bash "${SKILL_ROOT}/scripts/run-last30days.sh" "Claude Code vs Codex"
# Launch reaction (deep profile)
bash "${SKILL_ROOT}/scripts/run-last30days.sh" "GPT-5 launch --deep"
```
The output is a markdown brief containing the query plan, ranked candidates, semantic clusters, per-source items with dates / engagement / URLs, runtime details, and any error logs.
## When to use it
* Recent social evidence on trends, products, or people
* Ranked competitor comparisons with community sentiment
* Launch reaction summaries or shipping updates
* Structured JSON briefs for downstream agents
## When not to use it
* Timeless reference questions without a recent-evidence need
* Scenarios that require a single official source without community signal
## Requirements
* Python 3.12+
* `AISA_API_KEY` ([sign up at aisa.one](https://aisa.one) — new accounts start with \$2 free credit)
* POSIX shell
* Optional: `GITHUB_TOKEN` for expanded GitHub source coverage
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. `export AISA_API_KEY="your-key"` and install the skill:
```bash theme={null}
npm install -g @aisa-one/cli
aisa skills install last30days
```
4. Start a new session in your agent — the skill loads automatically.
## Related
Grounded web answers for single-query research.
Deeper X/Twitter-specific search, tracking, and posting.
YouTube SERP for video-first topics.
# Last 30 Days ZH
Source: https://aisa.one/docs/agent-skills/last30days-zh
生成最近 30 天多源信号的中文研究简报。
[View on GitHub ->](https://github.com/AIsa-team/agent-skills/tree/main/last30days-zh)
**最近 30 天信号研究。** 汇总社交平台、社区、预测市场和网页结果,生成中文研究简报。
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install last30days-zh
```
## What can agents do with it?
Summarize what changed in the last 30 days.
Produce Chinese-language research output.
Include X, YouTube, and social platform signal.
Add prediction market and financial context when useful.
## 触发条件
* 当用户需要最近 30 天的人物、公司、产品、市场、工具或趋势研究时使用。
* 当用户需要竞品对比、发布反应、社区情绪、近期动态总结时使用。
* 当用户需要结构化 JSON 输出,例如 `query_plan`、`ranked_candidates`、`clusters`、`items_by_source` 时使用。
## 不适用场景
* 不适合纯百科类、没有时效要求的问题。
* 不适合只想看单一官方来源、完全不需要社区和社交信号的场景。
## 能力
* 通过 AISA 提供规划、重排、综合、grounded web search、X/Twitter、YouTube 和 Polymarket。
* Reddit 和 Hacker News 走公开路径。
* TikTok、Instagram、Threads、Pinterest 在启用时走托管发现路径。
* 对外发布层现在只保留无状态研究主链,不再默认携带旧的 watchlist / briefing / 第二凭证 GitHub 扩展面。
## 环境要求
* 主凭证:`AISA_API_KEY`
* Python `3.12+`
* 统一使用仓库相对路径下的 `scripts/` 命令,避免运行时变量替换失败。
* 可选 repo-local 配置文件:`./.last30days-data/config.env`,也可以直接传 `--api-key`。
* 小红书扩展只在显式提供 `XIAOHONGSHU_API_BASE` 时启用;公开发布包不会默认探测本地网络端点。
## 快速命令
```bash theme={null}
bash scripts/run-last30days.sh "$ARGUMENTS" --emit=compact
python3 scripts/last30days.py "$ARGUMENTS" --api-key="$AISA_API_KEY"
python3 scripts/last30days.py "$ARGUMENTS" --emit=json
python3 scripts/last30days.py "$ARGUMENTS" --quick
python3 scripts/last30days.py "$ARGUMENTS" --deep
python3 scripts/last30days.py --diagnose
```
## 示例
* `last30days OpenAI Agents SDK`
* `last30days Peter Steinberger`
* `last30days OpenClaw vs Codex`
* `last30days Kanye West --quick`
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. Set your key and install the skill:
```bash theme={null}
export AISA_API_KEY="your-key"
npm install -g @aisa-one/cli
aisa skills install last30days-zh
```
4. Start a new agent session so the runtime loads the updated skill instructions.
## Related
English-language recent evidence research.
X/Twitter social research.
YouTube video and channel discovery.
# AIsa LLM Router
Source: https://aisa.one/docs/agent-skills/llm-router
Route prompts across many LLM providers with one AIsa key.
[View on GitHub ->](https://github.com/AIsa-team/agent-skills/tree/main/llm-router)
**One gateway for many LLMs.** Route agent requests across OpenAI-compatible models through AIsa with a single API key.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install llm-router
```
## What can agents do with it?
Pick a model based on task type and constraints.
Route across GPT, Claude, Gemini, Qwen, DeepSeek, Grok, and more.
Choose cheaper models when quality needs allow it.
Suggest alternates when a model is unavailable.
## 🔥 What Can You Do?
### Multi-Model Chat
```
"Chat with GPT-4 for reasoning, switch to Claude for creative writing"
```
### Model Comparison
```
"Compare responses from GPT-4, Claude, and Gemini for the same question"
```
### Vision Analysis
```
"Analyze this image with GPT-4o - what objects are in it?"
```
### Cost Optimization
```
"Route simple queries to fast/cheap models, complex queries to GPT-4"
```
### Fallback Strategy
```
"If GPT-4 fails, automatically try Claude, then Gemini"
```
## Why LLM Router?
| Feature | LLM Router | Direct APIs |
| ----------------- | ------------- | ------------- |
| API Keys | 1 | 10+ |
| SDK Compatibility | OpenAI SDK | Multiple SDKs |
| Billing | Unified | Per-provider |
| Model Switching | Change string | Code rewrite |
| Fallback Routing | Built-in | DIY |
| Cost Tracking | Unified | Fragmented |
## Supported Model Families
| Family | Developer | Example Models |
| -------- | --------- | ------------------------------------------------------- |
| GPT | OpenAI | gpt-4.1, gpt-4o, gpt-4o-mini, o1, o1-mini, o3-mini |
| Claude | Anthropic | claude-3-5-sonnet, claude-3-opus, claude-3-sonnet |
| Gemini | Google | gemini-3-pro-preview, gemini-3.5-flash |
| Qwen | Alibaba | qwen-max, qwen-plus, qwen2.5-72b-instruct |
| Deepseek | Deepseek | deepseek-chat, deepseek-coder, deepseek-v3, deepseek-r1 |
| Grok | xAI | grok-2, grok-beta |
> **Note**: Model availability may vary. Check [console.aisa.one/pricing](https://console.aisa.one/pricing) for the full list of currently available models and pricing.
## Quick Start
```bash theme={null}
export AISA_API_KEY="your-key"
```
## API Endpoints
### OpenAI-Compatible Chat Completions
```
POST https://api.aisa.one/v1/chat/completions
```
#### Request
```bash theme={null}
curl -X POST "https://api.aisa.one/v1/chat/completions" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4.1",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Explain quantum computing in simple terms."}
],
"temperature": 0.7,
"max_tokens": 1000
}'
```
#### Parameters
| Parameter | Type | Required | Description |
| ------------------- | ------------ | -------- | --------------------------------------------------- |
| `model` | string | Yes | Model identifier (e.g., `gpt-5.4`, `claude-opus-5`) |
| `messages` | array | Yes | Conversation messages |
| `temperature` | number | No | Randomness (0-2, default: 1) |
| `max_tokens` | integer | No | Maximum response tokens |
| `stream` | boolean | No | Enable streaming (default: false) |
| `top_p` | number | No | Nucleus sampling (0-1) |
| `frequency_penalty` | number | No | Frequency penalty (-2 to 2) |
| `presence_penalty` | number | No | Presence penalty (-2 to 2) |
| `stop` | string/array | No | Stop sequences |
#### Message Format
```json theme={null}
{
"role": "user|assistant|system",
"content": "message text or array for multimodal"
}
```
#### Response
```json theme={null}
{
"id": "chatcmpl-xxx",
"object": "chat.completion",
"created": 1234567890,
"model": "gpt-4.1",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Quantum computing uses..."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 50,
"completion_tokens": 200,
"total_tokens": 250,
"cost": 0.0025
}
}
```
### Streaming Response
```bash theme={null}
curl -X POST "https://api.aisa.one/v1/chat/completions" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-3-sonnet",
"messages": [{"role": "user", "content": "Write a poem about AI."}],
"stream": true
}'
```
Streaming returns Server-Sent Events (SSE):
```
data: {"id":"chatcmpl-xxx","choices":[{"delta":{"content":"In"}}]}
data: {"id":"chatcmpl-xxx","choices":[{"delta":{"content":" circuits"}}]}
...
data: [DONE]
```
### Vision / Image Analysis
Analyze images by passing image URLs or base64 data:
```bash theme={null}
curl -X POST "https://api.aisa.one/v1/chat/completions" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o",
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "What is in this image?"},
{"type": "image_url", "image_url": {"url": "https://example.com/image.jpg"}}
]
}
]
}'
```
### Function Calling
Enable tools/functions for structured outputs:
```bash theme={null}
curl -X POST "https://api.aisa.one/v1/chat/completions" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4.1",
"messages": [{"role": "user", "content": "What is the weather in Tokyo?"}],
"functions": [
{
"name": "get_weather",
"description": "Get current weather for a location",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "City name"},
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
},
"required": ["location"]
}
}
],
"function_call": "auto"
}'
```
### Google Gemini Format
For Gemini models, you can also use the native format:
```
POST https://api.aisa.one/v1beta/models/{model}:generateContent
```
```bash theme={null}
curl -X POST "https://api.aisa.one/v1beta/models/gemini-3.5-flash:generateContent" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [
{
"role": "user",
"parts": [{"text": "Explain machine learning."}]
}
],
"generationConfig": {
"temperature": 0.7,
"maxOutputTokens": 1000
}
}'
```
## Python Client
### Installation
No installation required - uses standard library only.
### CLI Usage
```bash theme={null}
# Basic completion
python3 scripts/llm_router_client.py chat --model gpt-4.1 --message "Hello, world!"
# With system prompt
python3 scripts/llm_router_client.py chat --model claude-3-sonnet --system "You are a poet" --message "Write about the moon"
# Streaming
python3 scripts/llm_router_client.py chat --model gpt-4o --message "Tell me a story" --stream
# Multi-turn conversation
python3 scripts/llm_router_client.py chat --model qwen-max --messages '[{"role":"user","content":"Hi"},{"role":"assistant","content":"Hello!"},{"role":"user","content":"How are you?"}]'
# Vision analysis
python3 scripts/llm_router_client.py vision --model gpt-4o --image "https://example.com/image.jpg" --prompt "Describe this image"
# List supported models
python3 scripts/llm_router_client.py models
# Compare models
python3 scripts/llm_router_client.py compare --models "gpt-4.1,claude-3-sonnet,gemini-3.5-flash" --message "What is 2+2?"
```
### Python SDK Usage
```python theme={null}
from llm_router_client import LLMRouterClient
client = LLMRouterClient() # Uses AISA_API_KEY env var
# Simple chat
response = client.chat(
model="gpt-4.1",
messages=[{"role": "user", "content": "Hello!"}]
)
print(response["choices"][0]["message"]["content"])
# With options
response = client.chat(
model="claude-3-sonnet",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Explain relativity."}
],
temperature=0.7,
max_tokens=500
)
# Streaming
for chunk in client.chat_stream(
model="gpt-4o",
messages=[{"role": "user", "content": "Write a story."}]
):
print(chunk, end="", flush=True)
# Vision
response = client.vision(
model="gpt-4o",
image_url="https://example.com/image.jpg",
prompt="What's in this image?"
)
# Compare models
results = client.compare_models(
models=["gpt-4.1", "claude-3-sonnet", "gemini-3.5-flash"],
message="Explain quantum computing"
)
for model, result in results.items():
print(f"{model}: {result['response'][:100]}...")
```
## Use Cases
### 1. Cost-Optimized Routing
Use cheaper models for simple tasks:
```python theme={null}
def smart_route(message: str) -> str:
# Simple queries -> fast/cheap model
if len(message) < 50:
model = "gpt-3.5-turbo"
# Complex reasoning -> powerful model
else:
model = "gpt-4.1"
return client.chat(model=model, messages=[{"role": "user", "content": message}])
```
### 2. Fallback Strategy
Automatic fallback on failure:
```python theme={null}
def chat_with_fallback(message: str) -> str:
models = ["gpt-4.1", "claude-3-sonnet", "gemini-3.5-flash"]
for model in models:
try:
return client.chat(model=model, messages=[{"role": "user", "content": message}])
except Exception:
continue
raise Exception("All models failed")
```
### 3. Model A/B Testing
Compare model outputs:
```python theme={null}
results = client.compare_models(
models=["gpt-4.1", "claude-3-opus"],
message="Analyze this quarterly report..."
)
# Log for analysis
for model, result in results.items():
log_response(model=model, latency=result["latency"], cost=result["cost"])
```
### 4. Specialized Model Selection
Choose the best model for each task:
```python theme={null}
MODEL_MAP = {
"code": "deepseek-coder",
"creative": "claude-3-opus",
"fast": "gpt-3.5-turbo",
"vision": "gpt-4o",
"chinese": "qwen-max",
"reasoning": "gpt-4.1"
}
def route_by_task(task_type: str, message: str) -> str:
model = MODEL_MAP.get(task_type, "gpt-4.1")
return client.chat(model=model, messages=[{"role": "user", "content": message}])
```
## Error Handling
Errors return JSON with `error` field:
```json theme={null}
{
"error": {
"code": "model_not_found",
"message": "Model 'xyz' is not available"
}
}
```
Common error codes:
* `401` - Invalid or missing API key
* `402` - Insufficient credits
* `404` - Model not found
* `429` - Rate limit exceeded
* `500` - Server error
## Best Practices
1. **Use streaming** for long responses to improve UX
2. **Set max\_tokens** to control costs
3. **Implement fallback** for production reliability
4. **Cache responses** for repeated queries
5. **Monitor usage** via response metadata
6. **Use appropriate models** - don't use GPT-4 for simple tasks
## OpenAI SDK Compatibility
Just change the base URL and key:
```python theme={null}
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["AISA_API_KEY"],
base_url="https://api.aisa.one/v1"
)
response = client.chat.completions.create(
model="gpt-4.1",
messages=[{"role": "user", "content": "Hello!"}]
)
print(response.choices[0].message.content)
```
## Pricing
Token-based pricing varies by model. Check [console.aisa.one/pricing](https://console.aisa.one/pricing) for current rates.
| Model Family | Approximate Cost |
| ---------------- | --------------------- |
| GPT-4.1 / GPT-4o | \~\$0.01 / 1K tokens |
| Claude-3-Sonnet | \~\$0.01 / 1K tokens |
| Gemini-2.0-Flash | \~\$0.001 / 1K tokens |
| Qwen-Max | \~\$0.005 / 1K tokens |
| DeepSeek-V3 | \~\$0.002 / 1K tokens |
Every response includes `usage.cost` and `usage.credits_remaining`.
## Get Started
1. Sign up at [aisa.one](https://aisa.one)
2. Get your API key from the dashboard
3. Add credits (pay-as-you-go)
4. Set environment variable: `export AISA_API_KEY="your-key"`
## Full API Reference
See [API Reference](https://aisa.one/docs/api-reference) for complete endpoint documentation.
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. Set your key and install the skill:
```bash theme={null}
export AISA_API_KEY="your-key"
npm install -g @aisa-one/cli
aisa skills install llm-router
```
4. Start a new agent session so the runtime loads the updated skill instructions.
## Related
Browse supported model IDs and families.
Compare models before routing production traffic.
Chinese-language model routing.
# AIsa Market
Source: https://aisa.one/docs/agent-skills/market
Query stock, crypto, filings, analyst, insider, and macro market data.
[View on GitHub ->](https://github.com/AIsa-team/agent-skills/tree/main/market)
**Market data for agent workflows.** Query equities, crypto, filings, analyst data, insider activity, and macro context through AIsa.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install market
```
## What can agents do with it?
Pull prices, news, fundamentals, and analyst context.
Retrieve token prices, charts, categories, and market movement.
Analyze income, balance sheet, and cash-flow data.
Add interest-rate and market backdrop to research.
## 🔥 What Can You Do?
### Cross-Asset Portfolio
```
"Get BTC, ETH prices alongside AAPL, NVDA stock data for my portfolio"
```
### Investment Research
```
"Full analysis: NVDA price trends, insider trades, analyst estimates, SEC filings"
```
### Crypto Tracking
```
"Real-time prices for BTC, ETH, SOL with 30-day historical charts"
```
### Earnings Analysis
```
"Get Tesla earnings reports, analyst estimates, and price reaction"
```
### Market Screening
```
"Find stocks with P/E < 15 and revenue growth > 20%"
```
### Whale Watching
```
"Track insider trades at Apple and correlate with price movements"
```
## Quick Start
```bash theme={null}
export AISA_API_KEY="your-key"
```
***
## 🏦 Traditional Finance
### Stock Prices
```bash theme={null}
# Historical price data (daily)
curl "https://api.aisa.one/apis/v1/financial/prices?ticker=AAPL&interval=day&interval_multiplier=1&start_date=2025-01-01&end_date=2025-12-31" \
-H "Authorization: Bearer $AISA_API_KEY"
# Weekly price data
curl "https://api.aisa.one/apis/v1/financial/prices?ticker=AAPL&interval=week&interval_multiplier=1&start_date=2025-01-01&end_date=2025-12-31" \
-H "Authorization: Bearer $AISA_API_KEY"
# Minute-level data (intraday)
curl "https://api.aisa.one/apis/v1/financial/prices?ticker=AAPL&interval=minute&interval_multiplier=5&start_date=2025-01-15&end_date=2025-01-15" \
-H "Authorization: Bearer $AISA_API_KEY"
```
**Parameters:**
* `ticker`: Stock symbol (required)
* `interval`: `second`, `minute`, `day`, `week`, `month`, `year` (required)
* `interval_multiplier`: Multiplier for interval, e.g., 5 for 5-minute bars (required)
* `start_date`: Start date YYYY-MM-DD (required)
* `end_date`: End date YYYY-MM-DD (required)
### Company News
```bash theme={null}
# Get news by ticker
curl "https://api.aisa.one/apis/v1/financial/news?ticker=AAPL&limit=10" \
-H "Authorization: Bearer $AISA_API_KEY"
```
### Financial Statements
```bash theme={null}
# All financial statements
curl "https://api.aisa.one/apis/v1/financial/financial_statements/all?ticker=AAPL" \
-H "Authorization: Bearer $AISA_API_KEY"
# Income statements
curl "https://api.aisa.one/apis/v1/financial/financial_statements/income?ticker=AAPL" \
-H "Authorization: Bearer $AISA_API_KEY"
# Balance sheets
curl "https://api.aisa.one/apis/v1/financial/financial_statements/balance?ticker=AAPL" \
-H "Authorization: Bearer $AISA_API_KEY"
# Cash flow statements
curl "https://api.aisa.one/apis/v1/financial/financial_statements/cash?ticker=AAPL" \
-H "Authorization: Bearer $AISA_API_KEY"
```
### Financial Metrics
```bash theme={null}
# Real-time financial metrics snapshot
curl "https://api.aisa.one/apis/v1/financial/financial-metrics/snapshot?ticker=AAPL" \
-H "Authorization: Bearer $AISA_API_KEY"
# Historical financial metrics
curl "https://api.aisa.one/apis/v1/financial/financial-metrics?ticker=AAPL" \
-H "Authorization: Bearer $AISA_API_KEY"
```
### Analyst Estimates
```bash theme={null}
# Earnings per share estimates
curl "https://api.aisa.one/apis/v1/financial/analyst/eps?ticker=AAPL&period=annual" \
-H "Authorization: Bearer $AISA_API_KEY"
```
### Insider Trading
```bash theme={null}
# Get insider trades
curl "https://api.aisa.one/apis/v1/financial/insider/trades?ticker=AAPL" \
-H "Authorization: Bearer $AISA_API_KEY"
```
### Institutional Ownership
```bash theme={null}
# Get institutional ownership
curl "https://api.aisa.one/apis/v1/financial/institutional/ownership?ticker=AAPL" \
-H "Authorization: Bearer $AISA_API_KEY"
```
### SEC Filings
```bash theme={null}
# Get SEC filings
curl "https://api.aisa.one/apis/v1/financial/sec/filings?ticker=AAPL" \
-H "Authorization: Bearer $AISA_API_KEY"
# Get SEC filing items
curl "https://api.aisa.one/apis/v1/financial/sec/items?ticker=AAPL" \
-H "Authorization: Bearer $AISA_API_KEY"
```
### Company Facts
```bash theme={null}
# Get company facts by CIK
curl "https://api.aisa.one/apis/v1/financial/company/facts?ticker=AAPL" \
-H "Authorization: Bearer $AISA_API_KEY"
```
### Stock Screener
```bash theme={null}
# Screen for stocks matching criteria
curl -X POST "https://api.aisa.one/apis/v1/financial/search/stock" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"filters":{"pe_ratio":{"max":15},"revenue_growth":{"min":0.2}}}'
```
### Interest Rates
```bash theme={null}
# Current interest rates
curl "https://api.aisa.one/apis/v1/financial/interest_rates/snapshot" \
-H "Authorization: Bearer $AISA_API_KEY"
# Historical interest rates
curl "https://api.aisa.one/apis/v1/financial/interest_rates/historical?bank=fed" \
-H "Authorization: Bearer $AISA_API_KEY"
```
***
## ₿ Cryptocurrency
### Real-Time Price Snapshot
```bash theme={null}
# Get current BTC price (use ticker format: SYMBOL-USD)
curl "https://api.aisa.one/apis/v1/financial/crypto/prices/snapshot?ticker=BTC-USD" \
-H "Authorization: Bearer $AISA_API_KEY"
# Get current ETH price
curl "https://api.aisa.one/apis/v1/financial/crypto/prices/snapshot?ticker=ETH-USD" \
-H "Authorization: Bearer $AISA_API_KEY"
# Get current SOL price
curl "https://api.aisa.one/apis/v1/financial/crypto/prices/snapshot?ticker=SOL-USD" \
-H "Authorization: Bearer $AISA_API_KEY"
# Get TRUMP token price
curl "https://api.aisa.one/apis/v1/financial/crypto/prices/snapshot?ticker=TRUMP-USD" \
-H "Authorization: Bearer $AISA_API_KEY"
```
**Note:** Crypto tickers use format `SYMBOL-USD` (e.g., `BTC-USD`, `ETH-USD`).
### Historical Price Data
```bash theme={null}
# Get BTC historical prices (daily)
curl "https://api.aisa.one/apis/v1/financial/crypto/prices?ticker=BTC-USD&interval=day&interval_multiplier=1&start_date=2025-01-01&end_date=2025-01-31" \
-H "Authorization: Bearer $AISA_API_KEY"
# Get ETH hourly data
curl "https://api.aisa.one/apis/v1/financial/crypto/prices?ticker=ETH-USD&interval=minute&interval_multiplier=60&start_date=2025-01-15&end_date=2025-01-16" \
-H "Authorization: Bearer $AISA_API_KEY"
```
### Supported Cryptocurrencies
| Ticker | Name |
| --------- | ------------- |
| BTC-USD | Bitcoin |
| ETH-USD | Ethereum |
| SOL-USD | Solana |
| BNB-USD | Binance Coin |
| XRP-USD | Ripple |
| DOGE-USD | Dogecoin |
| ADA-USD | Cardano |
| AVAX-USD | Avalanche |
| DOT-USD | Polkadot |
| MATIC-USD | Polygon |
| LINK-USD | Chainlink |
| UNI-USD | Uniswap |
| ATOM-USD | Cosmos |
| LTC-USD | Litecoin |
| TRUMP-USD | Trump Token |
| ... | And many more |
***
## Python Client
```bash theme={null}
# ==================== Stock Data ====================
# Note: start_date and end_date are REQUIRED for prices
python3 scripts/market_client.py stock prices --ticker AAPL --start 2025-01-01 --end 2025-01-31
python3 scripts/market_client.py stock prices --ticker AAPL --start 2025-01-01 --end 2025-01-31 --interval week
python3 scripts/market_client.py stock news --ticker AAPL --count 10
# ==================== Financial Statements ====================
python3 scripts/market_client.py stock statements --ticker AAPL --type all
python3 scripts/market_client.py stock statements --ticker AAPL --type income
python3 scripts/market_client.py stock statements --ticker AAPL --type balance
python3 scripts/market_client.py stock statements --ticker AAPL --type cash
# ==================== Metrics & Analysis ====================
python3 scripts/market_client.py stock metrics --ticker AAPL
python3 scripts/market_client.py stock analyst --ticker AAPL
# ==================== Insider & Institutional ====================
python3 scripts/market_client.py stock insider --ticker AAPL
python3 scripts/market_client.py stock ownership --ticker AAPL
# ==================== SEC Filings ====================
python3 scripts/market_client.py stock filings --ticker AAPL
# ==================== Stock Screener ====================
python3 scripts/market_client.py stock screen --pe-max 15 --growth-min 0.2
# ==================== Interest Rates ====================
python3 scripts/market_client.py stock rates
python3 scripts/market_client.py stock rates --historical
# ==================== Crypto Data ====================
# Note: Use ticker format SYMBOL-USD (or just SYMBOL, auto-converted)
python3 scripts/market_client.py crypto snapshot --ticker BTC-USD
python3 scripts/market_client.py crypto snapshot --ticker ETH # Auto-converts to ETH-USD
python3 scripts/market_client.py crypto historical --ticker BTC-USD --start 2025-01-01 --end 2025-01-31
python3 scripts/market_client.py crypto portfolio --tickers BTC-USD,ETH-USD,SOL-USD
```
***
## API Endpoints Reference
### Traditional Finance
| Endpoint | Method | Description |
| ----------------------------------------- | ------ | -------------------------------------------------- |
| `/financial/prices` | GET | Historical stock prices (requires interval params) |
| `/financial/news` | GET | Company news by ticker |
| `/financial/financial_statements/all` | GET | All financial statements |
| `/financial/financial_statements/income` | GET | Income statements |
| `/financial/financial_statements/balance` | GET | Balance sheets |
| `/financial/financial_statements/cash` | GET | Cash flow statements |
| `/financial/financial-metrics/snapshot` | GET | Real-time financial metrics |
| `/financial/financial-metrics` | GET | Historical metrics |
| `/financial/analyst/eps` | GET | EPS estimates |
| `/financial/insider/trades` | GET | Insider trades |
| `/financial/institutional/ownership` | GET | Institutional ownership |
| `/financial/sec/filings` | GET | SEC filings |
| `/financial/sec/items` | GET | SEC filing items |
| `/financial/company/facts` | GET | Company facts |
| `/financial/search/stock` | POST | Stock screener |
| `/financial/interest_rates/snapshot` | GET | Current interest rates |
| `/financial/interest_rates/historical` | GET | Historical rates |
### Cryptocurrency
| Endpoint | Method | Description |
| ----------------------------------- | ------ | ------------------------ |
| `/financial/crypto/prices/snapshot` | GET | Real-time price snapshot |
| `/financial/crypto/prices` | GET | Historical OHLCV data |
***
## Pricing
| API | Cost |
| -------------------- | ---------- |
| Stock prices | \~\$0.001 |
| Company news | \~\$0.001 |
| Financial statements | \~\$0.002 |
| Analyst estimates | \~\$0.002 |
| SEC filings | \~\$0.001 |
| Crypto snapshot | \~\$0.0005 |
| Crypto historical | \~\$0.001 |
Every response includes `usage.cost` and `usage.credits_remaining`.
***
## Get Started
1. Sign up at [aisa.one](https://aisa.one)
2. Get your API key
3. Add credits (pay-as-you-go)
4. Set environment variable: `export AISA_API_KEY="your-key"`
## Full API Reference
See [API Reference](https://aisa.one/docs/api-reference) for complete endpoint documentation.
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. Set your key and install the skill:
```bash theme={null}
export AISA_API_KEY="your-key"
npm install -g @aisa-one/cli
aisa skills install market
```
4. Start a new agent session so the runtime loads the updated skill instructions.
## Related
Deep equity market data and financial statements.
CoinGecko-powered crypto data.
Explore financial endpoints.
# MarketPulse
Source: https://aisa.one/docs/agent-skills/marketpulse
Real-time and historical equity market data for autonomous agents — prices, news, financial statements, metrics, analyst estimates, insider activity, SEC filings, stock screening, and macro interest rates.
[View on GitHub →](https://github.com/AIsa-team/agent-skills/tree/main/marketpulse)
**Complete equity market data for autonomous agents.** One `AISA_API_KEY` unlocks stocks, financials, filings, and macro data — everything an agent needs to research, screen, and analyze public companies.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install marketpulse
```
## What can agents do with it?
"Full analysis: NVDA price trends, insider trades, analyst estimates, SEC filings."
"Get Tesla earnings snapshots, analyst estimates, and price reaction."
"Find stocks with P/E \< 15 and revenue growth > 20%."
"Track insider trades at Apple and correlate with price movements."
"Compare Apple's income statement, balance sheet, cash flow, and financial metrics."
"Pull the Fed funds rate history alongside bank earnings."
## Core capabilities
* **Prices** — historical OHLCV at second, minute, day, week, month, or year granularity
* **News** — ticker-filtered company news
* **Financial statements** — income, balance sheet, cash flow; annual, quarterly, or TTM
* **Financial metrics** — real-time snapshot or historical series
* **Analyst estimates** — EPS and growth estimates
* **Insider trades** — Form 4 filings by ticker
* **SEC filings** — filings index and parsed filing items (10-K, 10-Q, 8-K, etc.)
* **Company facts** — reference data by ticker or CIK
* **Stock screener** — POST body filters across the universe (P/E, growth, etc.)
* **Line-item search** — pull specific metrics across multiple tickers in one call
* **Macro** — current and historical central-bank interest rates
## Quick start
```bash theme={null}
export AISA_API_KEY="your-key"
```
### Stock prices
```bash theme={null}
# Historical daily data
curl "https://api.aisa.one/apis/v1/financial/prices?ticker=AAPL&interval=day&interval_multiplier=1&start_date=2025-01-01&end_date=2025-12-31" \
-H "Authorization: Bearer $AISA_API_KEY"
# Intraday 5-minute bars
curl "https://api.aisa.one/apis/v1/financial/prices?ticker=AAPL&interval=minute&interval_multiplier=5&start_date=2025-01-15&end_date=2025-01-15" \
-H "Authorization: Bearer $AISA_API_KEY"
```
**Required params:** `ticker`, `interval` (`second` · `minute` · `day` · `week` · `month` · `year`), `interval_multiplier`, `start_date`, `end_date`.
### Financial statements
```bash theme={null}
# All three statements in one call
curl "https://api.aisa.one/apis/v1/financial/financials?ticker=AAPL&period=annual" \
-H "Authorization: Bearer $AISA_API_KEY"
# Or fetch them individually
-H "Authorization: Bearer $AISA_API_KEY"
-H "Authorization: Bearer $AISA_API_KEY"
-H "Authorization: Bearer $AISA_API_KEY"
```
**`period`** accepts `annual`, `quarterly`, or `ttm`.
### Financial metrics
```bash theme={null}
# Real-time snapshot
curl "https://api.aisa.one/apis/v1/financial/financial-metrics/snapshot?ticker=AAPL" \
-H "Authorization: Bearer $AISA_API_KEY"
# Historical
curl "https://api.aisa.one/apis/v1/financial/financial-metrics?ticker=AAPL&period=annual" \
-H "Authorization: Bearer $AISA_API_KEY"
```
### Insider trades
```bash theme={null}
curl "https://api.aisa.one/apis/v1/financial/insider-trades?ticker=AAPL" \
-H "Authorization: Bearer $AISA_API_KEY"
```
### SEC filings
```bash theme={null}
# Filings index
curl "https://api.aisa.one/apis/v1/financial/filings?ticker=AAPL" \
-H "Authorization: Bearer $AISA_API_KEY"
# Parsed filing items (requires filing_type and year)
curl "https://api.aisa.one/apis/v1/financial/filings/items?ticker=AAPL&filing_type=10-K&year=2024" \
-H "Authorization: Bearer $AISA_API_KEY"
```
### Stock screener (POST)
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/financial/financials/search/screener" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"filters":{"pe_ratio":{"max":15},"revenue_growth":{"min":0.2}}}'
```
### Line-item search
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/financial/financials/search/line-items" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"tickers":["AAPL","MSFT"],"line_items":["revenue","net_income"],"period":"annual"}'
```
### Macro interest rates
```bash theme={null}
# Current rates
curl "https://api.aisa.one/apis/v1/financial/macro/interest-rates/snapshot" \
-H "Authorization: Bearer $AISA_API_KEY"
# Historical (per central bank)
curl "https://api.aisa.one/apis/v1/financial/macro/interest-rates?bank=fed" \
-H "Authorization: Bearer $AISA_API_KEY"
```
## Python client
A bundled `market_client.py` wraps every endpoint for one-line usage:
```bash theme={null}
# Prices (start/end are required)
python3 scripts/market_client.py stock prices --ticker AAPL --start 2025-01-01 --end 2025-01-31
python3 scripts/market_client.py stock prices --ticker AAPL --start 2025-01-01 --end 2025-01-31 --interval week
# Statements
python3 scripts/market_client.py stock statements --ticker AAPL --type all --period annual
python3 scripts/market_client.py stock statements --ticker AAPL --type income --period quarterly
# Analysis
python3 scripts/market_client.py stock metrics --ticker AAPL --historical --period annual
python3 scripts/market_client.py stock analyst --ticker AAPL
python3 scripts/market_client.py stock earnings --ticker AAPL
# Insider trades
python3 scripts/market_client.py stock insider --ticker AAPL
# SEC filings
python3 scripts/market_client.py stock filings --ticker AAPL --items --filing-type 10-K --year 2024
# Screener / line items
python3 scripts/market_client.py stock screen --pe-max 15 --growth-min 0.2
python3 scripts/market_client.py stock line-items --tickers AAPL,MSFT --items revenue,net_income --period annual
# Interest rates
python3 scripts/market_client.py stock rates --historical --bank fed
```
## Endpoint reference
| Endpoint | Method | Purpose |
| -------------------------------------------- | ------ | ----------------------------------------------------------------------------------- |
| `/financial/prices` | GET | [Historical prices](/docs/api-reference/financial/get_prices) |
| `/financial/news` | GET | [Company news](/docs/api-reference/financial/get_news) |
| `/financial/financials` | GET | [All statements](/docs/api-reference/financial/get_financials) |
| `/financial/financials/income-statements` | GET | [Income statements](/docs/api-reference/financial/get_financials-income-statements) |
| `/financial/financials/balance-sheets` | GET | [Balance sheets](/docs/api-reference/financial/get_financials-balance-sheets) |
| `/financial/financials/cash-flow-statements` | GET | [Cash flow](/docs/api-reference/financial/get_financials-cash-flow-statements) |
| `/financial/financial-metrics/snapshot` | GET | [Metrics snapshot](/docs/api-reference/financial/get_financial-metrics-snapshot) |
| `/financial/financial-metrics` | GET | [Historical metrics](/docs/api-reference/financial/get_financial-metrics) |
| `/financial/analyst-estimates` | GET | [Analyst estimates](/docs/api-reference/financial/get_analyst-estimates) |
| `/financial/insider-trades` | GET | [Insider trades](/docs/api-reference/financial/get_insider-trades) |
| `/financial/filings` | GET | [SEC filings](/docs/api-reference/financial/get_filings) |
| `/financial/filings/items` | GET | [Filing items](/docs/api-reference/financial/get_filings-items) |
| `/financial/company/facts` | GET | [Company facts](/docs/api-reference/financial/get_company-facts) |
| `/financial/financials/search/screener` | POST | Stock screener |
| `/financial/financials/search/line-items` | POST | [Line-item search](/docs/api-reference/financial/post_financials-search-line-items) |
| `/financial/macro/interest-rates/snapshot` | GET | [Rates snapshot](/docs/api-reference/financial/get_macro-interest-rates-snapshot) |
| `/financial/macro/interest-rates` | GET | [Historical rates](/docs/api-reference/financial/get_macro-interest-rates) |
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. `export AISA_API_KEY="your-key"` and install the skill:
```bash theme={null}
npm install -g @aisa-one/cli
aisa skills install marketpulse
```
4. Start a new session in your agent — the skill loads automatically.
## Related
Every endpoint the MarketPulse skill wraps, with interactive playgrounds.
Handle 400/401/429 responses from Financial endpoints.
Throughput caps per endpoint and tier.
# Media Gen
Source: https://aisa.one/docs/agent-skills/mediagen
Unified media generation for autonomous agents. Gemini-compatible GenerateContent for text/multimodal calls; image/media generation routes. One API key, two modalities.
[View on GitHub →](https://github.com/AIsa-team/agent-skills/tree/main/media-gen)
**AI-powered media generation for autonomous agents.** One `AISA_API_KEY` unlocks Gemini-compatible GenerateContent and image/media generation routes.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install media-gen
```
## What can agents do with it?
"Generate a cinematic hero image for a product launch deck."
"Create social-ready image variations for the next post."
"Produce 6 key frames illustrating the happy path of a user journey."
"Use this static mock as visual context for a generated creative."
"8k ultra-detailed cyberpunk skyline with neon rain."
"Generate visual illustrations for a research report agent."
## Core capabilities
* **Gemini-compatible generation** — use `POST /v1beta/models/{model}:generateContent` with a verified model such as `gemini-3.5-flash` for native Gemini-format content generation.
## Quick start
```bash theme={null}
export AISA_API_KEY="your-key"
```
### Gemini-compatible generation
```bash theme={null}
curl -X POST "https://api.aisa.one/v1beta/models/gemini-3.5-flash:generateContent" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [
{"role": "user", "parts": [{"text": "Return exactly: ok"}]}
],
"generationConfig": {"maxOutputTokens": 16}
}'
```
The response follows the Gemini `GenerateContentResponse` shape, with generated text in `candidates[0].content.parts[0].text`.
## Endpoint reference
| Endpoint | Method | Purpose |
| ---------------------------------------- | ------ | ------------------------------------------------------------------------------------------ |
| `/v1beta/models/{model}:generateContent` | POST | [Gemini-compatible generation](/docs/api-reference/chat/post_models-model-generatecontent) |
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. `export AISA_API_KEY="your-key"` and install the skill:
```bash theme={null}
npm install -g @aisa-one/cli
aisa skills install media-gen
```
## Related
Gemini-compatible generation endpoint reference.
# AIsa Multi-Source Search
Source: https://aisa.one/docs/agent-skills/multi-search
Search across web, scholar, smart search, Tavily, and answer engines.
[View on GitHub ->](https://github.com/AIsa-team/agent-skills/tree/main/multi-search)
**Multi-source search for research tasks.** Query web, scholar, smart search, Tavily, and research-answer sources from one skill.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install multi-search
```
## What can agents do with it?
Search web, academic, smart, and Tavily sources.
Use answer-oriented sources for synthesized context.
Compare results across source types.
Gather evidence before writing reports.
## Setup
This skill requires the `AISA_API_KEY` environment variable. When installed as a Claude plugin, the key is configured via the plugin's `userConfig`.
## Usage
Run the search client with the `verity` subcommand:
```bash theme={null}
python3 ${CLAUDE_PLUGIN_ROOT}/skills/multi-search/scripts/search_client.py verity --query "" --count
```
### Arguments
| Argument | Required | Default | Description |
| ---------------- | -------- | ------- | --------------------------------- |
| `--query` / `-q` | Yes | — | Search query |
| `--count` / `-c` | No | 5 | Maximum results per source (1–20) |
### Example
```bash theme={null}
python3 ${CLAUDE_PLUGIN_ROOT}/skills/multi-search/scripts/search_client.py verity --query "impact of AI on healthcare diagnostics" --count 5
```
## Output
The script prints:
1. **Individual results** from each source (Web, Smart, Scholar, Tavily)
2. **Confidence Assessment** with:
* **Score** (0–100) — Overall confidence in the search results
* **Level** — Very High / High / Medium / Low / Very Low
* **Sources queried** and **Sources OK** — How many sources responded
* **Total results** — Combined result count across all sources
3. **AI Synthesis** — A coherent summary combining insights from all sources, with citations
### Confidence Scoring Breakdown
| Factor | Weight | Description |
| ------------------- | ------ | ------------------------------------------------- |
| Source availability | 40% | How many of the 4 sources returned results |
| Result quality | 35% | Ratio of actual results to expected results |
| Source diversity | 15% | Whether both academic and web sources are present |
| Recency bonus | 10% | Bonus for having at least one successful source |
## When to Use
Use this skill when the user needs the most thorough and reliable search results possible. Best for fact-checking, comprehensive research, verifying claims across multiple sources, or any query where cross-source validation adds significant value. This tool is slower but more reliable than individual search tools.
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. Set your key and install the skill:
```bash theme={null}
export AISA_API_KEY="your-key"
npm install -g @aisa-one/cli
aisa skills install multi-search
```
4. Start a new agent session so the runtime loads the updated skill instructions.
## Related
Full search skill with web, scholar, Perplexity, and Tavily.
Hybrid web and scholarly search.
Current web results with snippets.
# AIsa Perplexity Deep Research
Source: https://aisa.one/docs/agent-skills/perplexity-research
Generate citation-backed research answers with Perplexity Sonar.
[View on GitHub ->](https://github.com/AIsa-team/agent-skills/tree/main/perplexity-research)
**Citation-backed research answers.** Use Perplexity Sonar through AIsa when an agent needs synthesized answers, not just links.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install perplexity-research
```
## What can agents do with it?
Generate longer answers with cited sources.
Use Sonar for concise grounded responses.
Route complex questions to reasoning-capable Sonar models.
Keep links and citations attached to claims.
## Setup
This skill requires the `AISA_API_KEY` environment variable. When installed as a Claude plugin, the key is configured via the plugin's `userConfig`.
## Usage
Run the search client with the `sonar` subcommand:
```bash theme={null}
python3 ${CLAUDE_PLUGIN_ROOT}/skills/perplexity-research/scripts/search_client.py sonar --query "" --model
```
### Arguments
| Argument | Required | Default | Description |
| ---------------- | -------- | ------- | -------------------------- |
| `--query` / `-q` | Yes | — | Research question or query |
| `--model` / `-m` | No | sonar | Model to use (see below) |
### Available Models
| Model | Speed | Depth | Best For |
| --------------------- | ------- | ---------- | ------------------------------ |
| `sonar` | Fast | Standard | Quick factual lookups |
| `sonar-pro` | Medium | Detailed | In-depth topic exploration |
| `sonar-reasoning-pro` | Slower | Deep | Complex reasoning and analysis |
| `sonar-deep-research` | Slowest | Exhaustive | Comprehensive research reports |
### Examples
```bash theme={null}
# Quick factual lookup
python3 ${CLAUDE_PLUGIN_ROOT}/skills/perplexity-research/scripts/search_client.py sonar --query "What is the current state of quantum computing?"
# Detailed research
python3 ${CLAUDE_PLUGIN_ROOT}/skills/perplexity-research/scripts/search_client.py sonar --query "Compare transformer and state-space model architectures" --model sonar-pro
# Complex reasoning
python3 ${CLAUDE_PLUGIN_ROOT}/skills/perplexity-research/scripts/search_client.py sonar --query "Will AGI be achieved by 2030? Analyze arguments for and against." --model sonar-reasoning-pro
# Exhaustive deep research
python3 ${CLAUDE_PLUGIN_ROOT}/skills/perplexity-research/scripts/search_client.py sonar --query "Comprehensive analysis of AI regulation frameworks worldwide" --model sonar-deep-research
```
## Output
The script prints:
* **Synthesized answer** — A coherent, well-structured response
* **Citations** — Source URLs backing the answer
* **Cost** — API usage cost (when available)
## When to Use
Use this skill when the user needs a synthesized, well-researched answer rather than raw search results. Best for complex questions, comparative analyses, trend reports, and any query where a thoughtful, citation-backed response is more valuable than a list of links.
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. Set your key and install the skill:
```bash theme={null}
export AISA_API_KEY="your-key"
npm install -g @aisa-one/cli
aisa skills install perplexity-research
```
4. Start a new agent session so the runtime loads the updated skill instructions.
## Related
Existing Perplexity Sonar skill.
Sonar endpoint documentation.
Combine Perplexity with other search sources.
# Perplexity Search
Source: https://aisa.one/docs/agent-skills/perplexity-search
Citation-backed web answers and deep research reports for autonomous agents. Four tiers of Perplexity Sonar — fast answers, synthesis, multi-step reasoning, and exhaustive deep research — all through one AIsa API key.
[View on GitHub →](https://github.com/AIsa-team/agent-skills/tree/main/perplexity-search)
**Citation-backed web answers and deep research for autonomous agents.** Access the full Perplexity Sonar family with one `AISA_API_KEY` — from sub-second lookups to exhaustive research reports.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install perplexity-search
```
## What can agents do with it?
"What shipped in OpenAI's latest release?" — answered in seconds with citations.
"Compare the top three AI coding agents in 2026 across pricing and features."
"Walk through the tradeoffs of using x402 vs. traditional API keys."
"Generate a 2,000-word structured report on agentic browser frameworks."
"Summarize this week's AI infrastructure announcements."
"Should we adopt this library? Cite adoption, issues, and alternatives."
## Model tiers
| Model | Use when you need… |
| --------------------- | ------------------------------------------------------------------------ |
| `sonar` | Fast, cited answers to simple questions (sub-second) |
| `sonar-pro` | Synthesis, comparisons, longer answers with more sources |
| `sonar-reasoning-pro` | Multi-step analytical reasoning, tradeoff analysis, technical deep-dives |
| `sonar-deep-research` | Exhaustive long-form reports; accepts multi-minute processing |
## Quick start
```bash theme={null}
export AISA_API_KEY="your-key"
```
### Sonar (fast answers)
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/perplexity/sonar" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "sonar",
"messages": [{"role": "user", "content": "What is the Model Context Protocol?"}]
}'
```
### Sonar Pro (synthesis)
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/perplexity/sonar-pro" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "sonar-pro",
"messages": [{"role": "user", "content": "Compare the performance of top AI coding agents in 2026."}]
}'
```
### Sonar Reasoning Pro (analysis)
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/perplexity/sonar-reasoning-pro" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "sonar-reasoning-pro",
"messages": [{"role": "user", "content": "Analyze the tradeoffs of adopting x402 vs. traditional billing."}]
}'
```
### Sonar Deep Research
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/perplexity/sonar-deep-research" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "sonar-deep-research",
"messages": [{"role": "user", "content": "Create a 2,000-word deep research report on autonomous browser agents."}]
}'
```
Deep research accepts longer processing times and the Python client implements automatic retry logic. For time-sensitive requests, downgrade to `sonar-pro` or `sonar-reasoning-pro` rather than waiting for a long timeout.
## Python client
```bash theme={null}
# Fast
python3 scripts/perplexity_search_client.py sonar --query "What is MCP?"
# Synthesis
python3 scripts/perplexity_search_client.py sonar-pro --query "Compare AI coding agents 2026"
# Analytical reasoning
python3 scripts/perplexity_search_client.py sonar-reasoning-pro --query "x402 tradeoffs"
# Deep research (accepts long processing)
python3 scripts/perplexity_search_client.py sonar-deep-research --query "Agentic payments landscape"
# Optional system message to control output formatting
python3 scripts/perplexity_search_client.py sonar-pro \
--query "Explain RAG" \
--system "Answer in bullet points with citations inline as [1], [2]..."
```
## Endpoint reference
| Endpoint | Method | Purpose |
| --------------------------------- | ------ | ----------------------------------------------------------------------------------------- |
| `/perplexity/sonar` | POST | [Sonar — fast answers](/docs/api-reference/perplexity/post_perplexity-sonar) |
| `/perplexity/sonar-pro` | POST | [Sonar Pro — synthesis](/docs/api-reference/perplexity/post_perplexity-sonar-pro) |
| `/perplexity/sonar-reasoning-pro` | POST | [Sonar Reasoning Pro](/docs/api-reference/perplexity/post_perplexity-sonar-reasoning-pro) |
| `/perplexity/sonar-deep-research` | POST | [Sonar Deep Research](/docs/api-reference/perplexity/post_perplexity-sonar-deep-research) |
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. `export AISA_API_KEY="your-key"` and install the skill:
```bash theme={null}
npm install -g @aisa-one/cli
aisa skills install perplexity-search
```
## Related
All four Sonar endpoints with interactive playgrounds.
Per-token rates for each Sonar variant.
Handling timeouts and upstream errors.
# Prediction Market Arbitrage
Source: https://aisa.one/docs/agent-skills/prediction-market-arbitrage
Cross-platform prediction-market research using the currently mounted Polymarket and Kalshi discovery endpoints.
[View on GitHub →](https://github.com/AIsa-team/agent-skills/tree/main/prediction-market-arbitrage)
**Research prediction-market opportunities with AIsa.** One `AISA_API_KEY` can pull mounted Polymarket and Kalshi market-discovery data so agents can identify candidate events before using venue-specific tooling for pricing, orderbook depth, or execution.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install prediction-market-arbitrage
```
## What can agents do with it?
"Find related NFL, macro, or election markets on Polymarket and Kalshi."
"Compare titles, event tickers, slugs, and close times to identify likely equivalent markets."
"Use volume and liquidity fields from discovery responses to prioritize venues for deeper checks."
"Build a same-day candidate list from available Polymarket and Kalshi market feeds."
"Surface comparable event markets before running venue-specific pricing checks."
"Produce a research shortlist; perform execution and orderbook checks directly with each venue."
## How it works
Query `/polymarket/markets`, `/polymarket/events`, and `/kalshi/markets` to find relevant market/event records.
Match candidates by title, event ticker, slug, event date, sport/team names, or market close time.
Use venue-native APIs or trading systems for current price, orderbook depth, and execution checks before trading.
AIsa currently mounts the Prediction Market discovery endpoints listed below. Older examples for AIsa-hosted `market-price`, `orderbooks`, and `matching-markets` routes were removed because authenticated probes returned `api endpoint not found`.
## Quick start
```bash theme={null}
export AISA_API_KEY="your-key"
```
### 1. Find Polymarket candidates
```bash theme={null}
curl "https://api.aisa.one/apis/v1/polymarket/markets?limit=5" \
-H "Authorization: Bearer $AISA_API_KEY"
```
### 2. Find Kalshi candidates
```bash theme={null}
curl "https://api.aisa.one/apis/v1/kalshi/markets?limit=5&status=open" \
-H "Authorization: Bearer $AISA_API_KEY"
```
### 3. Compare manually or with venue-native tooling
Use shared fields such as Polymarket `slug`/`question` and Kalshi `ticker`/`event_ticker`/`title` to pair likely equivalents, then verify live prices and orderbooks with the relevant venue's official API before execution.
## Endpoint reference
| Endpoint | Method | Purpose |
| ---------------------- | ------ | ------------------------------------------------------------------------------------ |
| `/polymarket/markets` | GET | [Polymarket markets](/docs/api-reference/prediction-market/get_polymarket-markets) |
| `/polymarket/events` | GET | [Polymarket events](/docs/api-reference/prediction-market/get_polymarket-events) |
| `/polymarket/activity` | GET | [Polymarket activity](/docs/api-reference/prediction-market/get_polymarket-activity) |
| `/kalshi/markets` | GET | [Kalshi markets](/docs/api-reference/prediction-market/get_kalshi-markets) |
| `/kalshi/trades` | GET | [Kalshi trades](/docs/api-reference/prediction-market/get_kalshi-trades) |
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. `export AISA_API_KEY="your-key"` and install the skill:
```bash theme={null}
npm install -g @aisa-one/cli
aisa skills install prediction-market-arbitrage
```
## Related
Mounted Polymarket and Kalshi discovery endpoints.
The underlying data skill this one builds on.
Concurrency caps when running research scans.
# Prediction Market Arbitrage ZH
Source: https://aisa.one/docs/agent-skills/prediction-market-arbitrage-zh
基于当前已挂载的 Polymarket 和 Kalshi discovery endpoint 做跨市场候选研究。
[View on GitHub ->](https://github.com/AIsa-team/agent-skills/tree/main/prediction-market-arbitrage-zh)
**预测市场跨平台研究。** 用 AIsa 查询当前已挂载的 Polymarket 和 Kalshi 市场发现数据,识别可能相同或相关的事件;如需实时价格、订单簿深度或交易执行,请继续使用交易所官方 API 或交易系统验证。
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install prediction-market-arbitrage-zh
```
## What can agents do with it?
Find related Polymarket and Kalshi markets for the same topic.
Compare titles, slugs, tickers, event names, and close times.
Use discovery response volume/liquidity fields to decide where to investigate further.
Produce Chinese-language research notes from mounted market data.
## 配置
```bash theme={null}
export AISA_API_KEY="your-key"
```
在 [aisa.one](https://aisa.one) 获取 Key(按量付费)。
## 工作流程
跨平台研究步骤:
1. **发现候选市场**:查询 `/polymarket/markets`、`/polymarket/events` 和 `/kalshi/markets`。
2. **人工/程序化配对**:按标题、slug、ticker、event\_ticker、队伍/赛事名、结束时间等字段找可能等价的市场。
3. **外部验证价格与深度**:AIsa 当前未挂载 price/orderbook/matching endpoint;交易前请用交易所官方 API 或交易系统验证实时价格、订单簿和可成交规模。
旧版 AIsa-hosted price、orderbook、matching-market 示例已移除,因为鉴权实测返回 `api endpoint not found`。不要把 discovery 数据直接当成可执行报价。
## 快速示例
### 1. 查询 Polymarket 候选市场
```bash theme={null}
python3 scripts/prediction_market_client.py polymarket markets --limit 5
python3 scripts/prediction_market_client.py polymarket events --limit 5
```
### 2. 查询 Kalshi 候选市场
```bash theme={null}
python3 scripts/prediction_market_client.py kalshi markets --status open --limit 5
python3 scripts/prediction_market_client.py kalshi trades --limit 5 --is-block-trade false
```
### 3. 配对并外部验证
用 Polymarket `slug`/`question`/`conditionId` 和 Kalshi `ticker`/`event_ticker`/`title` 做候选配对。若要判断是否有价差,继续调用交易所官方 API 获取实时 YES/NO 价格与订单簿深度。
## 命令参考
### prediction\_market\_client.py — 已挂载市场数据
```bash theme={null}
# Polymarket discovery
python3 scripts/prediction_market_client.py polymarket markets [--limit <数值>]
python3 scripts/prediction_market_client.py polymarket events [--limit <数值>]
python3 scripts/prediction_market_client.py polymarket activity --user <钱包地址> [--limit <数值>]
# Kalshi discovery/trades
python3 scripts/prediction_market_client.py kalshi markets [--status unopened|open|paused|closed|settled] [--limit <数值>]
python3 scripts/prediction_market_client.py kalshi trades [--ticker ] [--is-block-trade true|false] [--limit <数值>]
```
## 理解套利
真正的套利需要实时、可成交的互斥结果报价,并考虑手续费、滑点、订单簿深度和平台风险。当前 AIsa Prediction Market surface 适合做候选发现,不应单独用于下单判断。
## 安全与权限
**需要:** `AISA_API_KEY` 环境变量。
所有 AIsa 调用均为**只读**,通过 HTTPS GET 请求 `api.aisa.one`。不执行交易、不连接钱包、除 API Key 外不发送个人数据。
完整文档:[AIsa API 参考](https://aisa.one/docs/api-reference)。
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. Set your key and install the skill:
```bash theme={null}
export AISA_API_KEY="your-key"
npm install -g @aisa-one/cli
aisa skills install prediction-market-arbitrage-zh
```
4. Start a new agent session so the runtime loads the updated skill instructions.
## Related
English-language cross-market research workflow.
Chinese-language market data workflow.
Mounted Polymarket and Kalshi endpoint reference.
# Prediction Market Data
Source: https://aisa.one/docs/agent-skills/prediction-market-data
Mounted Polymarket and Kalshi discovery/trade-history data for autonomous agents.
[View on GitHub →](https://github.com/AIsa-team/agent-skills/tree/main/prediction-market-data)
**Prediction-market discovery data for autonomous agents.** One `AISA_API_KEY` reads mounted Polymarket and Kalshi endpoints for market discovery, event lookup, activity, and Kalshi trade history.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install prediction-market-data
```
## What can agents do with it?
"Find Polymarket and Kalshi markets related to a topic."
"Browse Polymarket event groups and associated markets."
"Pull recent Kalshi trade records with optional ticker and block-trade filters."
"Inspect Polymarket activity for a specific user over a time range."
"Use volume and liquidity fields from market discovery responses to prioritize deeper venue checks."
"Build candidate sets before using venue-native tools for pricing, orderbooks, or execution."
## Core capabilities
* **Market discovery** — fetch Polymarket and Kalshi markets with provider-supported filters.
* **Event index** — fetch Polymarket event/group data.
* **Trade history** — fetch Kalshi trades using `limit`, `cursor`, `ticker`, `min_ts`, `max_ts`, and `is_block_trade`.
* **Activity lookup** — fetch Polymarket user activity with `user` and optional time/market filters.
AIsa currently mounts the endpoints listed below. Older examples for AIsa-hosted price, orderbook, wallet, candlestick, and matching-market endpoints were removed because authenticated probes returned `api endpoint not found`.
## Quick start
```bash theme={null}
export AISA_API_KEY="your-key"
```
### Polymarket
```bash theme={null}
# Market discovery
curl "https://api.aisa.one/apis/v1/polymarket/markets?limit=5" \
-H "Authorization: Bearer $AISA_API_KEY"
# Events
curl "https://api.aisa.one/apis/v1/polymarket/events?limit=5" \
-H "Authorization: Bearer $AISA_API_KEY"
# Activity for a specific user address
curl "https://api.aisa.one/apis/v1/polymarket/activity?user=WALLET_ADDRESS&limit=5" \
-H "Authorization: Bearer $AISA_API_KEY"
```
### Kalshi
```bash theme={null}
# Market discovery
curl "https://api.aisa.one/apis/v1/kalshi/markets?limit=5&status=open" \
-H "Authorization: Bearer $AISA_API_KEY"
# Trades
curl "https://api.aisa.one/apis/v1/kalshi/trades?limit=5&is_block_trade=false" \
-H "Authorization: Bearer $AISA_API_KEY"
```
## Python client
```bash theme={null}
# Polymarket
python3 scripts/prediction_market_client.py poly markets --limit 5
python3 scripts/prediction_market_client.py poly events --limit 5
python3 scripts/prediction_market_client.py poly activity --user WALLET_ADDRESS --limit 5
# Kalshi
python3 scripts/prediction_market_client.py kalshi markets --limit 5 --status open
python3 scripts/prediction_market_client.py kalshi trades --limit 5 --is-block-trade false
```
## Endpoint reference
| Endpoint | Method | Purpose |
| ---------------------- | ------ | ---------------------------------------------------------------------------------- |
| `/polymarket/markets` | GET | [Polymarket markets](/docs/api-reference/prediction-market/get_polymarket-markets) |
| `/polymarket/events` | GET | [Polymarket events](/docs/api-reference/prediction-market/get_polymarket-events) |
| `/polymarket/activity` | GET | [Activity](/docs/api-reference/prediction-market/get_polymarket-activity) |
| `/kalshi/markets` | GET | [Kalshi markets](/docs/api-reference/prediction-market/get_kalshi-markets) |
| `/kalshi/trades` | GET | [Kalshi trades](/docs/api-reference/prediction-market/get_kalshi-trades) |
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. `export AISA_API_KEY="your-key"` and install the skill:
```bash theme={null}
npm install -g @aisa-one/cli
aisa skills install prediction-market-data
```
## Related
Mounted Polymarket and Kalshi discovery endpoints.
Candidate discovery for cross-platform market research.
Handling upstream exchange errors.
# Prediction Market Data ZH
Source: https://aisa.one/docs/agent-skills/prediction-market-data-zh
查询当前已挂载的 Polymarket 和 Kalshi 市场发现、事件、活动与交易历史数据。
[View on GitHub ->](https://github.com/AIsa-team/agent-skills/tree/main/prediction-market-data-zh)
**预测市场数据查询。** 用 AIsa 访问当前已挂载的 Polymarket 和 Kalshi 只读数据接口:市场发现、事件查询、用户活动和 Kalshi 交易历史。
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install prediction-market-data-zh
```
## What can agents do with it?
Find relevant prediction markets for a topic.
Review Polymarket event groups and related markets.
Pull recent Kalshi trades with optional ticker and block-trade filters.
Summarize mounted market-discovery evidence in Chinese.
## 配置
```bash theme={null}
export AISA_API_KEY="your-key"
```
在 [aisa.one](https://aisa.one) 获取 Key(按量付费)。
## 工作流程
查询预测市场数据的步骤:
1. **搜索市场/事件**:先用 Polymarket 或 Kalshi discovery endpoint 找候选市场。
2. **提取标识符**:例如 Polymarket `slug`/`conditionId`/`clobTokenIds`,Kalshi `ticker`/`event_ticker`。
3. **继续验证**:如果需要实时价格、订单簿或交易执行,请使用交易所官方 API 或交易系统继续验证。
AIsa 当前挂载的是下面列出的 discovery/trade-history endpoint。旧版 AIsa-hosted price、orderbook、wallet、candlestick、matching-market 示例已移除,因为鉴权实测返回 `api endpoint not found`。
## 快速示例
### Polymarket:市场与事件
```bash theme={null}
# 市场发现
python3 scripts/prediction_market_client.py polymarket markets --limit 5
# 事件查询
python3 scripts/prediction_market_client.py polymarket events --limit 5
# 指定用户活动
python3 scripts/prediction_market_client.py polymarket activity --user <钱包地址> --limit 5
```
### Kalshi:市场与交易
```bash theme={null}
# 市场发现
python3 scripts/prediction_market_client.py kalshi markets --status open --limit 5
# 交易历史
python3 scripts/prediction_market_client.py kalshi trades --limit 5 --is-block-trade false
```
## ID 参考
大多数后续分析需要从 discovery 返回中获取 ID 或 ticker。
| 平台 | ID 字段 | 获取位置 |
| ---------- | -------------- | ----------------------------------------- |
| Polymarket | `slug` | `/polymarket/markets` 返回中的 `slug` |
| Polymarket | `conditionId` | `/polymarket/markets` 返回中的 `conditionId` |
| Polymarket | `clobTokenIds` | `/polymarket/markets` 返回中的 `clobTokenIds` |
| Kalshi | `ticker` | `/kalshi/markets` 返回中的 `ticker` |
| Kalshi | `event_ticker` | `/kalshi/markets` 返回中的 `event_ticker` |
## 命令参考
### Polymarket
```bash theme={null}
python3 scripts/prediction_market_client.py polymarket markets [--limit <数值>]
python3 scripts/prediction_market_client.py polymarket events [--limit <数值>]
python3 scripts/prediction_market_client.py polymarket activity --user <钱包地址> [--market-slug ] [--limit <数值>]
```
### Kalshi
```bash theme={null}
python3 scripts/prediction_market_client.py kalshi markets [--status unopened|open|paused|closed|settled] [--limit <数值>]
python3 scripts/prediction_market_client.py kalshi trades [--ticker ] [--min-ts ] [--max-ts ] [--is-block-trade true|false] [--limit <数值>]
```
## 理解返回数据
* Polymarket `/markets` 和 `/events` 返回顶层 JSON 数组。
* Kalshi `/markets` 返回 `{ markets, cursor }`。
* Kalshi `/trades` 返回 `{ trades, cursor }`。
* 如需实时可执行价格、订单簿深度或交易动作,请以交易所官方接口/交易系统为准。
## 安全与权限
**需要:** `AISA_API_KEY` 环境变量。
所有操作均为**只读**,通过 HTTPS GET 请求 `api.aisa.one`。不执行交易、不连接钱包、除 API Key 外不发送个人数据。
完整文档:[AIsa API 参考](https://aisa.one/docs/api-reference)。
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. Set your key and install the skill:
```bash theme={null}
export AISA_API_KEY="your-key"
npm install -g @aisa-one/cli
aisa skills install prediction-market-data-zh
```
4. Start a new agent session so the runtime loads the updated skill instructions.
## Related
English-language prediction market data skill.
Chinese-language cross-market research workflow.
Polymarket and Kalshi mounted endpoint docs.
# Agent Skills Quickstart
Source: https://aisa.one/docs/agent-skills/quickstart
Install the official AIsa skill, sign in, and start using AIsa from your agent.
Give this prompt to the agent you already use. No API key to copy or manage.
## Copy setup prompt
```txt theme={null}
Set up AIsa using https://aisa.one/docs/agent-quickstart.md.
```
You can append `Then use AIsa to …` in the same message.
## What happens next
1. The agent installs one official AIsa skill and reuses or installs the CLI, or connects through remote MCP if it cannot run commands.
2. You sign in with your browser. You should not copy a key from the dashboard.
3. After a real authenticated check succeeds, the agent reports **AIsa is connected.**
## Optional first task
After **AIsa is connected.**, tell your agent what to do. If you do not, it will ask what you want next.
Example: `Find three recent public updates about a company and include source links.` A paid example runs only if you choose it.
Setup installs and signs in. It is not approval to spend.
The agent follows [Agent Quickstart](/docs/agent-quickstart). Official skill: [AIsa-team/agent-skills](https://github.com/AIsa-team/agent-skills), slug `aisa`.
Extra catalog skills and authoring are optional:
* [Agent Skills catalog](/docs/agent-skills)
* [Standards](/docs/agent-skills/standards)
# AIsa Scholar Search
Source: https://aisa.one/docs/agent-skills/scholar-search
Find academic papers, citations, and scholarly sources.
[View on GitHub ->](https://github.com/AIsa-team/agent-skills/tree/main/scholar-search)
**Academic search for agents.** Find papers, scholarly articles, citations, and year-bounded research sources through AIsa.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install scholar-search
```
## What can agents do with it?
Find academic papers for a research question.
Gather papers around a topic or method.
Summarize claims with scholarly context.
Use scholarly evidence in agent reports.
## Setup
This skill requires the `AISA_API_KEY` environment variable. When installed as a Claude plugin, the key is configured via the plugin's `userConfig`.
## Usage
Run the search client with the `scholar` subcommand:
```bash theme={null}
python3 ${CLAUDE_PLUGIN_ROOT}/skills/scholar-search/scripts/search_client.py scholar --query "" --count [--year-from YYYY] [--year-to YYYY]
```
### Arguments
| Argument | Required | Default | Description |
| ---------------- | -------- | ------- | --------------------------------- |
| `--query` / `-q` | Yes | — | Academic search query |
| `--count` / `-c` | No | 10 | Maximum number of results (1–100) |
| `--year-from` | No | — | Year lower bound (e.g., 2023) |
| `--year-to` | No | — | Year upper bound (e.g., 2026) |
### Examples
```bash theme={null}
# Search for recent transformer papers
python3 ${CLAUDE_PLUGIN_ROOT}/skills/scholar-search/scripts/search_client.py scholar --query "transformer architecture attention mechanism" --count 10 --year-from 2024
# Search papers in a specific year range
python3 ${CLAUDE_PLUGIN_ROOT}/skills/scholar-search/scripts/search_client.py scholar --query "reinforcement learning from human feedback" --year-from 2022 --year-to 2025
```
## Output
The script prints structured academic results including:
* **Title** — Paper title
* **URL** — Link to the paper or abstract
* **Publication info** — Journal, conference, or preprint source
* **Snippet** — Abstract excerpt
## When to Use
Use this skill when the user needs academic papers, scholarly articles, research citations, or peer-reviewed sources. Best for literature reviews, citation lookups, and academic research tasks.
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. Set your key and install the skill:
```bash theme={null}
export AISA_API_KEY="your-key"
npm install -g @aisa-one/cli
aisa skills install scholar-search
```
4. Start a new agent session so the runtime loads the updated skill instructions.
## Related
Academic search endpoint docs.
Combine web and scholar sources.
Broader research retrieval skill.
# Multi-source Search
Source: https://aisa.one/docs/agent-skills/search
Unified web, academic, Tavily, and Perplexity Sonar search for autonomous agents. One skill covers ranked web results, scholar papers, citation-backed answers, content extraction, recursive crawling, and site mapping.
[View on GitHub →](https://github.com/AIsa-team/agent-skills/tree/main/multi-source-search)
**Multi-source intelligent retrieval for autonomous agents.** One `AISA_API_KEY` unlocks structured web search, academic paper lookup, Tavily extraction/crawling, and the full Perplexity Sonar family for citation-rich answers.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install multi-source-search
```
## What can agents do with it?
"Summarize the latest AI infrastructure launches this month."
"Find recent academic papers on self-correcting agent frameworks."
"Answer this question with inline citations using Perplexity Sonar Pro."
"Generate a 2,000-word report on autonomous browser agents."
"Pull the main article text from these 5 URLs for analysis."
"Map the structure of this docs site and crawl it for RAG."
## Core capabilities
* **Web search** (`/scholar/search/web`) — structured web results for current information
* **Scholar search** (`/scholar/search/scholar`) — academic papers with optional date filtering
* **Smart/hybrid search** (`/scholar/search/mixed`) — combines web + scholar in one call
* **Explain search** (`/scholar/explain`) — explanatory synthesis over results
* **Perplexity Sonar family** — `sonar`, `sonar-pro`, `sonar-reasoning-pro`, `sonar-deep-research`
* **Tavily** — `search`, `extract`, `crawl`, `map`
* **Verity multi-source** — parallel retrieval across source types
## Quick start
```bash theme={null}
export AISA_API_KEY="your-key"
```
### Web + scholar
```bash theme={null}
# Structured web search
curl -X POST "https://api.aisa.one/apis/v1/scholar/search/web" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "latest AI infrastructure launches 2026"}'
# Academic papers
curl -X POST "https://api.aisa.one/apis/v1/scholar/search/scholar" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "self-correcting agent frameworks"}'
# Smart hybrid (web + scholar)
curl -X POST "https://api.aisa.one/apis/v1/scholar/search/mixed" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "retrieval-augmented generation"}'
```
### Perplexity Sonar
```bash theme={null}
# Fast answers
curl -X POST "https://api.aisa.one/apis/v1/perplexity/sonar" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "sonar", "messages": [{"role": "user", "content": "What is MCP?"}]}'
# Deep research
curl -X POST "https://api.aisa.one/apis/v1/perplexity/sonar-deep-research" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "sonar-deep-research", "messages": [{"role": "user", "content": "State of agentic payments in 2026"}]}'
```
### Tavily utilities
```bash theme={null}
# Search
curl -X POST "https://api.aisa.one/apis/v1/tavily/search" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "LLM agent frameworks"}'
# Extract clean article text
curl -X POST "https://api.aisa.one/apis/v1/tavily/extract" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"urls": ["https://example.com/article"]}'
# Recursive crawl
curl -X POST "https://api.aisa.one/apis/v1/tavily/crawl" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com", "depth": 2}'
# Site map
curl -X POST "https://api.aisa.one/apis/v1/tavily/map" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com"}'
```
## Python client
```bash theme={null}
# Web + scholar + smart
python3 scripts/search_client.py web --query "AI agent news"
python3 scripts/search_client.py scholar --query "self-correcting agents"
python3 scripts/search_client.py smart --query "RAG patterns"
# Perplexity
python3 scripts/search_client.py sonar --query "What is MCP?"
python3 scripts/search_client.py sonar-pro --query "Compare OpenRouter vs AIsa"
python3 scripts/search_client.py sonar-reasoning-pro --query "Analyze x402 adoption"
python3 scripts/search_client.py sonar-deep-research --query "State of agentic payments"
# Tavily
python3 scripts/search_client.py tavily-search --query "LLM agents"
python3 scripts/search_client.py tavily-extract --urls "https://example.com/article"
python3 scripts/search_client.py tavily-crawl --url "https://example.com" --depth 2
python3 scripts/search_client.py tavily-map --url "https://example.com"
# Multi-source parallel retrieval
python3 scripts/search_client.py verity --query "AI agent benchmarks 2026"
```
## Endpoint reference
| Endpoint | Method | Purpose |
| --------------------------------- | ------ | ----------------------------------------------------------------------------------------- |
| `/scholar/search/web` | POST | [Web search](/docs/api-reference/scholar/post_scholar-search-web) |
| `/scholar/search/scholar` | POST | [Academic papers](/docs/api-reference/scholar/post_scholar-search-scholar) |
| `/scholar/search/mixed` | POST | [Smart hybrid search](/docs/api-reference/scholar/post_scholar-search-mixed) |
| `/scholar/explain` | POST | [Explain search](/docs/api-reference/scholar/post_scholar-search-explain) |
| `/perplexity/sonar` | POST | [Sonar — fast answers](/docs/api-reference/perplexity/post_perplexity-sonar) |
| `/perplexity/sonar-pro` | POST | [Sonar Pro — synthesis](/docs/api-reference/perplexity/post_perplexity-sonar-pro) |
| `/perplexity/sonar-reasoning-pro` | POST | [Sonar Reasoning Pro](/docs/api-reference/perplexity/post_perplexity-sonar-reasoning-pro) |
| `/perplexity/sonar-deep-research` | POST | [Sonar Deep Research](/docs/api-reference/perplexity/post_perplexity-sonar-deep-research) |
| `/tavily/search` | POST | [Tavily search](/docs/api-reference/search/post_tavily-search) |
| `/tavily/extract` | POST | [Tavily extract](/docs/api-reference/search/post_tavily-extract) |
| `/tavily/crawl` | POST | [Tavily crawl](/docs/api-reference/search/post_tavily-crawl) |
| `/tavily/map` | POST | [Tavily map](/docs/api-reference/search/post_tavily-map) |
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. `export AISA_API_KEY="your-key"` and install the skill:
```bash theme={null}
npm install -g @aisa-one/cli
aisa skills install multi-source-search
```
## Related
Tavily search, extract, crawl, map — with live playgrounds.
Web, scholar, smart, and explain endpoints.
Full Sonar family endpoint docs.
# SEO Keyword Research
Source: https://aisa.one/docs/agent-skills/seo-keyword-research
Find keyword clusters, search intent, competitor gaps, and page ideas.
[View on GitHub ->](https://github.com/AIsa-team/agent-skills/tree/main/seo-keyword-research)
**SEO keyword research for agents.** Turn a site, product, or competitor set into keyword clusters, intent insights, and page ideas.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install seo-keyword-research
```
## What can agents do with it?
Build a validated keyword plan for a product, market, or domain.
Compare competing domains and identify missing organic opportunities.
Group keywords by search intent and map them to page types.
Review live results before recommending a page or content angle.
## Requirements
This skill requires an AIsa API key.
```bash theme={null}
export AISA_API_KEY="your-aisa-api-key"
```
Use these AIsa endpoints:
* Data APIs: `https://api.aisa.one/apis/v1/...`
* LLM gateway: `https://api.aisa.one/v1/chat/completions`
Never print or commit API keys. If the key is missing, ask the user to set `AISA_API_KEY`.
## Compatibility
Works with any agentskills.io-compatible harness, including Claude Code, Claude, OpenAI Codex, Cursor, Gemini CLI, OpenCode, Goose, OpenClaw, Hermes, and other agent runtimes that support skill folders.
Requires Python 3, curl, and `AISA_API_KEY`. Get an API key at `https://aisa.one`.
## Quick Start
```bash theme={null}
export AISA_API_KEY="your-aisa-api-key"
python3 {baseDir}/scripts/site_crawler.py \
https://example.com \
--max-pages 12 \
--out site-profile.json
python3 {baseDir}/scripts/aisa_client.py data \
/apis/v1/dataforseo/dataforseo_labs/google/keyword_suggestions/live \
payload.json \
--out keyword-suggestions.json
```
Use the crawl output to generate seed topics first. Then use AIsa DataForSEO endpoints to validate search demand, difficulty, intent, and SERP reality. Finally use the AIsa LLM gateway to cluster, score, and summarize the verified keyword data.
## When to Use
Use this skill for requests like:
* "Find SEO keywords for this site."
* "Build a keyword strategy for my SaaS."
* "Research keywords for this product category."
* "Find keyword gaps between us and competitors."
* "Cluster these keywords by search intent."
* "Pick the best SEO content topics for next month."
* "Create a keyword map for these landing pages."
Do not use this skill for full technical audits, backlink audits, schema implementation, or content writing unless the user specifically asks for keyword research as part of that workflow.
## Core Workflow
### 1. Define the research scope
Collect or infer:
* Target domain or URL
* Seed topics, products, services, or categories
* Target country, language, and search engine
* Competitors, if provided
* Business goal: traffic, leads, sales, awareness, local visibility, or content planning
* Constraints: brand terms only, non-brand terms only, blog topics, landing pages, commercial pages, or programmatic pages
If country and language are missing, default to the user's market when obvious. Otherwise use United States and English, and note the assumption.
### 2. Crawl the website before keyword research
When the user provides a domain or URL, crawl the site before querying keyword tools.
```bash theme={null}
python3 {baseDir}/scripts/site_crawler.py \
https://example.com \
--max-pages 12 \
--out site-profile.json
```
Prioritize:
* Homepage
* Product, feature, pricing, docs, integrations, use case, comparison, blog, and about pages
* Sitemap URLs when available
* Navigation labels and internal links
* Page titles, meta descriptions, headings, schema hints, and visible copy
Use the crawl to produce a short business profile:
* Product category
* Main features and capabilities
* Target audience and buyer roles
* Use cases and jobs to be done
* Integrations, platforms, APIs, or supported tools
* Pricing model or conversion goal, if visible
* Competitors, alternatives, and category language mentioned on the site
* Existing content themes and gaps
Do not start with brand or domain keywords unless the user explicitly asks for brand SEO. Keep brand keywords in a separate "brand validation" section only after the product and category opportunities are mapped.
If the local crawl is blocked, shallow, or heavily JavaScript-rendered, use AIsa/DataForSEO OnPage helpers as fallback evidence:
* `/apis/v1/dataforseo/on_page/content_parsing/live`
* `/apis/v1/dataforseo/on_page/task_post`
* `/apis/v1/dataforseo/on_page/pages`
* `/apis/v1/dataforseo/on_page/raw_html`
* `/apis/v1/dataforseo/on_page/summary/{id}`
### 3. Convert the site profile into seed topics
Use AIsa LLM reasoning to turn the crawl into seed topics. These are hypotheses, not final keywords.
Generate seed topics from:
* Product category terms
* Feature and capability terms
* Use case terms
* Integration and platform terms
* Pain points and problem terms
* Competitor and alternative terms
* Buyer role terms
* Transactional modifiers: pricing, alternative, best, tool, API, software, platform, comparison
* Informational modifiers: what is, how to, guide, examples, tutorial, checklist
Require the LLM to explain why each seed topic matches the crawled site. Remove seeds that cannot be justified from the crawl.
### 4. Build the initial keyword universe
Use AIsa DataForSEO endpoints in this order when inputs are available:
1. Crawl-derived seed expansion:
* `/apis/v1/dataforseo/dataforseo_labs/google/keyword_suggestions/live`
* `/apis/v1/dataforseo/dataforseo_labs/google/keyword_ideas/live`
* `/apis/v1/dataforseo/dataforseo_labs/google/related_keywords/live`
* `/apis/v1/dataforseo/keywords_data/google_ads/keywords_for_keywords/live`
2. Site-derived validation, after seed expansion:
* `/apis/v1/dataforseo/dataforseo_labs/google/keywords_for_site/live`
* `/apis/v1/dataforseo/keywords_data/google_ads/keywords_for_site/live`
3. Demand and trend checks:
* `/apis/v1/dataforseo/keywords_data/google_ads/search_volume/live`
* `/apis/v1/dataforseo/keywords_data/clickstream_data/global_search_volume/live`
* `/apis/v1/dataforseo/keywords_data/dataforseo_trends/explore/live`
4. Difficulty and intent:
* `/apis/v1/dataforseo/dataforseo_labs/google/bulk_keyword_difficulty/live`
* `/apis/v1/dataforseo/dataforseo_labs/google/search_intent/live`
* `/apis/v1/dataforseo/dataforseo_labs/google/keyword_overview/live`
Keep source labels for each keyword: `site`, `seed`, `suggestion`, `related`, `competitor`, `trend`, `serp`, or `llm-generated`. Treat `llm-generated` keywords as hypotheses until validated by search volume or SERP data.
### 5. Expand through competitors and SERPs
When competitors are provided, or when DataForSEO returns SERP competitors:
* Use `/apis/v1/dataforseo/dataforseo_labs/google/competitors_domain/live`
* Use `/apis/v1/dataforseo/dataforseo_labs/google/domain_intersection/live`
* Use `/apis/v1/dataforseo/dataforseo_labs/google/ranked_keywords/live`
* Use `/apis/v1/dataforseo/dataforseo_labs/google/serp_competitors/live`
* Use `/apis/v1/dataforseo/dataforseo_labs/google/relevant_pages/live`
For the strongest candidate keywords, inspect live search results:
* `/apis/v1/dataforseo/serp/google/organic/live/advanced`
* `/apis/v1/dataforseo/serp/ai_summary`
* `/apis/v1/dataforseo/serp/screenshot`
Use SERP data to identify ranking page types, dominant content formats, user intent, SERP features, freshness patterns, weak results, and content gaps.
### 6. Normalize and clean the data
Before scoring:
* Lowercase only for deduplication; preserve original keyword casing in output.
* Merge close duplicates, singular/plural variants, and obvious spelling variants.
* Remove irrelevant brand, adult, navigational, and off-market terms unless requested.
* Mark keywords with missing volume, difficulty, or intent as incomplete rather than guessing numbers.
* Keep localized variants separate when intent differs by geography.
### 7. Cluster by intent and topic
Use AIsa LLM reasoning to cluster validated keywords. Prefer compact structured output.
Suggested cluster dimensions:
* Parent topic
* Subtopic
* Search intent: informational, commercial, transactional, navigational, local, comparison, or troubleshooting
* Funnel stage: awareness, consideration, conversion, retention
* Best page type: blog post, comparison page, landing page, product page, category page, tool page, glossary page, local page, or programmatic template
Do not let the LLM invent metrics. It may classify, summarize, and prioritize, but metrics must come from AIsa/DataForSEO data or be marked as qualitative.
Each final keyword cluster must include five representative keywords with metrics when at least five validated keywords exist. If a cluster has fewer than five validated keywords, show every validated keyword and mark the cluster as needing more expansion.
### 8. Identify high-opportunity keywords
High-opportunity keywords must meet both thresholds:
* Keyword difficulty is lower than 40
* Search volume is greater than 1000
Do not loosen this threshold silently. If no keywords meet both thresholds, say so and provide a separate "near opportunities" section using the closest candidates.
For every high-opportunity keyword, explain:
* Why it fits the crawled site
* Which feature, use case, product category, or audience insight from the crawl supports it
* Why the metric profile is attractive
* What risk remains after reviewing the SERP
### 9. Score opportunities
Score each keyword or cluster from 0 to 25:
* Demand: search volume, trend, and market size
* Relevance: fit with the domain, product, ICP, or page
* Intent value: likelihood to drive qualified traffic
* Ranking feasibility: inverse of difficulty plus SERP weakness
* Strategic value: supports product positioning, topical authority, or conversion
Use a simple label:
* `High priority`: strong demand, clear fit, feasible SERP, valuable intent
* `Medium priority`: useful but constrained by difficulty, ambiguity, or lower demand
* `Low priority`: weak fit, weak demand, or poor feasibility
* `Validate first`: interesting idea with incomplete data
### 10. Generate SERP-based page recommendations
Inspect SERPs for high-opportunity keywords and the strongest representative keyword in each cluster. Recommend a page type based on observed ranking results:
* Landing page: SERP is dominated by product, software, API, platform, or tool pages.
* Feature page: SERP shows feature-specific vendor pages, docs, or tool capability pages.
* Comparison page: query includes `vs`, `alternative`, `competitor`, `best`, or SERP contains comparison lists and review pages.
* Blog article or guide: SERP is dominated by explainers, tutorials, how-to articles, or People Also Ask.
* Pricing page: query includes pricing, cost, cheap, free, plan, or SERP contains pricing pages.
* Documentation page: SERP contains API references, SDK docs, GitHub repos, or developer guides.
* Programmatic page: the pattern can be repeated across locations, integrations, categories, competitors, templates, or use cases.
For each recommendation, explain the SERP evidence and the suggested page angle.
### 11. Produce the final deliverable
Return a concise keyword research report with:
* Executive summary
* Research assumptions
* Crawled-site business profile
* Top keyword clusters
* Five representative keywords per cluster
* High-opportunity keywords where difficulty is lower than 40 and volume is greater than 1000
* Why those keywords are opportunities
* Priority keyword shortlist
* Best content opportunities
* SERP-based page recommendations
* Recommended next pages, updates, or programmatic templates
* Data gaps and validation notes
Use `references/report-template.md` when a full report is requested.
## AIsa LLM Usage
Use the AIsa LLM gateway for:
* Summarizing the crawled site into a product and business profile
* Generating justified seed topics from the crawl
* Classifying search intent
* Grouping keywords into clusters
* Summarizing SERP patterns
* Translating raw metrics into SEO decisions
* Drafting a keyword strategy report
* Turning keywords into page recommendations
Recommended request pattern:
```bash theme={null}
curl -sS "https://api.aisa.one/v1/chat/completions" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.4-mini",
"messages": [
{
"role": "system",
"content": "You are an SEO strategist. Use only provided metrics as facts. Mark unverified ideas clearly."
},
{
"role": "user",
"content": "Cluster these keyword rows by topic, search intent, and best page type."
}
]
}'
```
## Helper Script
Use `scripts/aisa_client.py` for quick API calls:
```bash theme={null}
python3 {baseDir}/scripts/site_crawler.py \
https://example.com \
--max-pages 12 \
--out site-profile.json
```
```bash theme={null}
python3 {baseDir}/scripts/aisa_client.py data \
/apis/v1/dataforseo/dataforseo_labs/google/keyword_suggestions/live \
payload.json \
--out keyword-suggestions.json
```
```bash theme={null}
python3 {baseDir}/scripts/aisa_client.py chat \
--model gpt-5.4-mini \
--system system-prompt.txt \
--prompt cluster-prompt.txt \
--out clusters.md
```
## Quality Rules
* When a website is provided, crawl the website before keyword research.
* Do not begin with brand keywords unless the user explicitly asks for brand SEO.
* Prefer the local crawler and live AIsa/DataForSEO data over manual browser scraping.
* Cite which endpoint groups were used.
* Separate facts from recommendations.
* Do not invent search volume, CPC, keyword difficulty, rank, or trend values.
* Use LLM output for interpretation, not as a substitute for keyword data.
* Every keyword cluster should show five representative keywords with available metrics.
* High-opportunity keywords must satisfy difficulty \< 40 and search volume > 1000.
* SERP-based page recommendations must say whether the user should create a landing page, feature page, comparison page, pricing page, documentation page, programmatic page, or blog article, and why.
* Keep raw exports private if they contain customer domains, competitors, or internal strategy.
* Make the final answer actionable: the user should know which keywords to target, which page type to create, and why.
## References
* `references/aisa-api-map.md` for endpoint groups and usage notes.
* `references/report-template.md` for the final keyword research report structure.
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. Set your key and install the skill:
```bash theme={null}
export AISA_API_KEY="your-key"
npm install -g @aisa-one/cli
aisa skills install seo-keyword-research
```
4. Start a new agent session so the runtime loads the updated skill instructions.
## Related
Keyword expansion and SERP intelligence endpoints.
Search current web sources before building content plans.
Pick an LLM for clustering and strategy synthesis.
# AIsa Smart Search
Source: https://aisa.one/docs/agent-skills/smart-search
Blend web and scholarly search for broader evidence.
[View on GitHub ->](https://github.com/AIsa-team/agent-skills/tree/main/smart-search)
**Hybrid web and scholar search.** Combine current web results with academic sources when a task needs broader evidence.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install smart-search
```
## What can agents do with it?
Search web and scholarly sources together.
Reduce blind spots from single-source search.
Summarize findings across source types.
Compare current sources with academic evidence.
## Setup
This skill requires the `AISA_API_KEY` environment variable. When installed as a Claude plugin, the key is configured via the plugin's `userConfig`.
## Usage
Run the search client with the `smart` subcommand:
```bash theme={null}
python3 ${CLAUDE_PLUGIN_ROOT}/skills/smart-search/scripts/search_client.py smart --query "" --count
```
### Arguments
| Argument | Required | Default | Description |
| ---------------- | -------- | ------- | --------------------------------- |
| `--query` / `-q` | Yes | — | Search query |
| `--count` / `-c` | No | 10 | Maximum number of results (1–100) |
### Example
```bash theme={null}
python3 ${CLAUDE_PLUGIN_ROOT}/skills/smart-search/scripts/search_client.py smart --query "impact of large language models on software engineering" --count 10
```
## Output
The script prints a mixed set of results from both web and academic sources, including titles, URLs, and content snippets.
## When to Use
Use this skill when the user's query spans both general knowledge and academic research. For example, questions about emerging technologies, scientific topics with practical applications, or any query where both web articles and papers would be valuable.
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. Set your key and install the skill:
```bash theme={null}
export AISA_API_KEY="your-key"
npm install -g @aisa-one/cli
aisa skills install smart-search
```
4. Start a new agent session so the runtime loads the updated skill instructions.
## Related
Academic paper and scholarly source search.
Current web source search.
Broader search and answer workflow.
# Standards of Agent Skills
Source: https://aisa.one/docs/agent-skills/standards
Learn the AIsa Agent Skills structure, SKILL.md specification, and standards for portable, auditable skills across supported AI agents.
Agent Skills are a lightweight, open format for extending AI agent capabilities with specialized knowledge and workflows. By following a standardized structure, skills become portable, self-documenting, and easy for agents to discover and execute.
AIsa's agent skills are built upon the open standards defined at [agentskills.io](https://agentskills.io), adapted for the AIsa ecosystem to ensure high reliability and seamless integration with our API proxy. Importantly, AIsa agent skills are designed for broad compatibility and can be seamlessly integrated with all major agent harnesses, including **OpenClaw**, **Claude Code**, and **Hermes**.
## Core Concepts
### 1. Progressive Disclosure
To manage context efficiently, skills use a three-tier loading strategy:
* **Discovery**: Agents only load the skill's `name` and `description` initially to determine relevance.
* **Activation**: When a task matches, the full `SKILL.md` instructions are read into context.
* **Execution**: Detailed scripts, references, or assets are loaded only when specifically required by the agent.
### 2. Portability and Auditability
A skill is simply a folder containing a `SKILL.md` file. This makes them:
* **Self-documenting**: Humans can read and audit the instructions as easily as agents.
* **Versionable**: Skills can be managed in Git repositories, allowing for clear change tracking.
* **Extensible**: They can range from simple text instructions to complex executable code.
## Directory Structure
A standard AIsa skill follows this directory layout:
```text theme={null}
skill-name/
├── SKILL.md # Required: Metadata and instructions
├── scripts/ # Optional: Executable code (Python, Bash, etc.)
├── references/ # Optional: Technical documentation or reference guides
└── assets/ # Optional: Templates, images, or static data
```
## The SKILL.md Specification
The `SKILL.md` file is the heart of every skill. It must contain YAML frontmatter followed by Markdown content.
### Frontmatter Fields
* **name**: A short, unique identifier (lowercase alphanumeric and hyphens).
* **description**: A clear explanation of what the skill does and when the agent should use it. This is the primary signal for discovery.
* **metadata**: (Optional) A map for additional properties like author, version, or platform-specific tags.
* **homepage**: (Optional) A link to the skill's home or repository.
### Body Content
The Markdown body contains the actual instructions. For AIsa skills, we recommend including:
* **Step-by-step instructions**: Clear, actionable steps for the agent.
* **Usage examples**: Concrete cURL or Python snippets.
* **Edge cases**: Guidance on how to handle common errors or limitations.
## AIsa-Specific Standards
While AIsa skills adhere to the general specification, we apply additional standards to ensure they work perfectly with our platform:
| Standard | Description |
| :---------------------- | :--------------------------------------------------------------------------------------------------------- |
| **API Proxy Alignment** | All skills must use the AIsa API proxy (`api.aisa.one`) instead of direct upstream provider URLs. |
| **Authentication** | Skills should rely on the `AISA_API_KEY` environment variable for authentication. |
| **Bundled Clients** | We recommend providing a `scripts/` directory with a standalone Python client for complex interactions. |
| **Citation Support** | For search and research skills, instructions must emphasize providing inline citations for factual claims. |
## References
1. [What are skills? - Agent Skills](https://agentskills.io/what-are-skills)
2. [Specification - Agent Skills](https://agentskills.io/specification)
3. [AIsa Agent Skills Repository](https://github.com/AIsa-team/agent-skills)
# Stock & Crypto Analysis
Source: https://aisa.one/docs/agent-skills/stock-analysis
Analyze stock and crypto tickers with live market context.
[View on GitHub ->](https://github.com/AIsa-team/agent-skills/tree/main/stock-analysis)
**Stock and crypto analysis with live data.** Analyze tickers, risk signals, targets, and market context through AIsa.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install stock-analysis
```
## What can agents do with it?
Create structured stock or crypto analysis reports.
Surface volatility, liquidity, and catalyst risks.
Suggest watch levels, targets, and stops for review.
Compare opportunities with a repeatable scoring rubric.
## Setup
This skill requires an AIsa API key. Set it via plugin configuration or environment variable:
```bash theme={null}
export AISA_API_KEY=your_key_here
export AISA_BASE_URL=https://api.aisa.one/v1 # optional
export AISA_MODEL=gpt-4o # optional
```
Or use the plugin's `userConfig` values (set automatically when the plugin is enabled).
## Usage
Run the analysis script with one or more ticker symbols:
```bash theme={null}
python3 "${CLAUDE_PLUGIN_ROOT}/skills/stock-analysis/scripts/analyze_stock.py" AAPL
python3 "${CLAUDE_PLUGIN_ROOT}/skills/stock-analysis/scripts/analyze_stock.py" BTC-USD ETH-USD
python3 "${CLAUDE_PLUGIN_ROOT}/skills/stock-analysis/scripts/analyze_stock.py" AAPL MSFT GOOGL
python3 "${CLAUDE_PLUGIN_ROOT}/skills/stock-analysis/scripts/analyze_stock.py" AAPL --fast
python3 "${CLAUDE_PLUGIN_ROOT}/skills/stock-analysis/scripts/analyze_stock.py" AAPL --output json
```
### Arguments
* **Tickers**: One or more stock symbols (e.g., `AAPL`, `MSFT`) or crypto symbols (e.g., `BTC-USD`, `ETH-USD`)
* `--fast`: Skip slow analyses (insider trading, detailed news) for faster results
* `--output json`: Append a structured JSON summary after the analysis
### Multi-Ticker Comparison
When multiple tickers are provided, the script produces individual analyses followed by a ranked comparison table:
| Ticker | Score | Signal | Key Strength | Key Risk |
| ------ | ----- | ------ | ------------ | -------- |
## 8-Dimension Scoring (Stocks)
| # | Dimension | Weight |
| - | ---------------------------------------- | ------ |
| 1 | Earnings Surprise | 30% |
| 2 | Fundamentals (P/E, margins, growth) | 20% |
| 3 | Analyst Sentiment | 20% |
| 4 | Historical Patterns | 10% |
| 5 | Market Context (VIX, SPY/QQQ) | 10% |
| 6 | Sector Performance | 15% |
| 7 | Momentum (RSI, 52w range) | 15% |
| 8 | Sentiment (Fear/Greed, shorts, insiders) | 10% |
## 3-Dimension Scoring (Crypto)
| # | Dimension | Weight |
| - | ----------------------------- | ------ |
| 1 | Market Cap & Category | 40% |
| 2 | BTC Correlation (30-day) | 30% |
| 3 | Momentum (RSI, range, volume) | 30% |
## Risk Flags
Automatically detected: Pre-earnings, Post-spike, Overbought, Risk-Off, Breaking News
## Output
Final recommendation includes: **Score (0-10)**, **Signal (BUY/HOLD/SELL)**, **Confidence (High/Medium/Low)**, and **Entry / Target / Stop prices**.
**NOT FINANCIAL ADVICE.** For informational purposes only.
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. Set your key and install the skill:
```bash theme={null}
export AISA_API_KEY="your-key"
npm install -g @aisa-one/cli
aisa skills install stock-analysis
```
4. Start a new agent session so the runtime loads the updated skill instructions.
## Related
Broad stock and crypto market data.
Track targets, stops, and alert checks.
Deeper US equity analysis reports.
# Dividend Analysis
Source: https://aisa.one/docs/agent-skills/stock-dividend
Compare dividend yield, payout safety, and income quality.
[View on GitHub ->](https://github.com/AIsa-team/agent-skills/tree/main/stock-dividend)
**Dividend research for income ideas.** Compare yield, payout safety, growth, and related metrics without connecting brokerage accounts.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install stock-dividend
```
## What can agents do with it?
Compare yield against payout and business quality.
Check whether dividends appear sustainable.
Review dividend growth and track records.
Summarize cash-flow support and risk factors.
## Usage
```bash theme={null}
python3 "${CLAUDE_PLUGIN_ROOT}/skills/stock-dividend/scripts/dividends.py" JNJ
python3 "${CLAUDE_PLUGIN_ROOT}/skills/stock-dividend/scripts/dividends.py" JNJ PG KO
python3 "${CLAUDE_PLUGIN_ROOT}/skills/stock-dividend/scripts/dividends.py" JNJ PG KO --output json
```
### Arguments
* **Tickers**: One or more dividend-paying stock symbols. Inputs are validated before they are sent to the model.
* `--output json`: Append structured JSON summary
## Permission Boundary
* The only required secret is `AISA_API_KEY`.
* Requests go to `https://api.aisa.one/v1` by default.
* `AISA_BASE_URL` is optional and should only point to a trusted AIsa-compatible HTTPS endpoint.
* Do not provide brokerage credentials, trading passwords, cookies, or payment details. This skill has no purchase or order-placement workflow.
## Analysis Output
For each ticker, the analysis includes:
* **Core Metrics**: Yield, ex-date, frequency, last payment amount
* **Payout Analysis**: Payout ratio, FCF payout, coverage ratio
* **Growth**: 1Y, 3Y CAGR, 5Y CAGR, consecutive years of increases
* **Last 5 Annual Dividends** table
* **Safety Score (0-100)**: Based on payout ratio (25pts), FCF coverage (20pts), growth consistency (20pts), balance sheet (15pts), earnings stability (10pts), consecutive years (10pts)
* **Income Rating**: Excellent (80+), Good (60-79), Moderate (40-59), Poor (\<40)
* **Dividend Aristocrat/King** status check
When multiple tickers are provided, a ranked comparison table is included.
**NOT FINANCIAL ADVICE.** For informational purposes only.
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. Set your key and install the skill:
```bash theme={null}
export AISA_API_KEY="your-key"
npm install -g @aisa-one/cli
aisa skills install stock-dividend
```
4. Start a new agent session so the runtime loads the updated skill instructions.
## Related
Financial statements and market data.
Broader asset analysis workflow.
Track portfolio allocation and P\&L.
# Hot Scanner
Source: https://aisa.one/docs/agent-skills/stock-hot
Find high-momentum stocks, crypto movers, and market catalysts.
[View on GitHub ->](https://github.com/AIsa-team/agent-skills/tree/main/stock-hot)
**Hot market scans for agents.** Find trending stocks and crypto movers with live AIsa market data.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install stock-hot
```
## What can agents do with it?
Surface stocks and crypto assets with unusual movement.
Connect price movement to recent news or events.
Summarize top gainers, losers, and volume spikes.
Turn scans into candidates for follow-up alerts.
## Usage
```bash theme={null}
python3 "${CLAUDE_PLUGIN_ROOT}/skills/stock-hot/scripts/hot_scanner.py"
python3 "${CLAUDE_PLUGIN_ROOT}/skills/stock-hot/scripts/hot_scanner.py" --focus stocks
python3 "${CLAUDE_PLUGIN_ROOT}/skills/stock-hot/scripts/hot_scanner.py" --focus crypto
python3 "${CLAUDE_PLUGIN_ROOT}/skills/stock-hot/scripts/hot_scanner.py" --output json
```
### Arguments
* `--focus`: Filter by `stocks`, `crypto`, or `both` (default)
* `--output json`: Append structured JSON summary
## Output Sections
* **Top Stock Movers**: Gainers (>3%), losers, most active by volume
* **Crypto Highlights**: BTC price, dominance, trending coins, gainers/losers
* **News-Driven Movers**: 5-8 items with ticker mentions from last 6 hours
* **Top 5 Watchlist Picks**: With risk level assessment
* **Quick Take**: 2-3 sentence market summary
**NOT FINANCIAL ADVICE.** For informational purposes only.
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. Set your key and install the skill:
```bash theme={null}
export AISA_API_KEY="your-key"
npm install -g @aisa-one/cli
aisa skills install stock-hot
```
4. Start a new agent session so the runtime loads the updated skill instructions.
## Related
Track candidates after a scan.
Scan early market signals and rumors.
Retrieve supporting market data.
# Portfolio Management
Source: https://aisa.one/docs/agent-skills/stock-portfolio
Track positions, allocation, and live P&L.
[View on GitHub ->](https://github.com/AIsa-team/agent-skills/tree/main/stock-portfolio)
**Portfolio tracking for agents.** Manage positions, allocation, and live P\&L snapshots with AIsa market data.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install stock-portfolio
```
## What can agents do with it?
Summarize portfolio holdings and exposure.
Check concentration by asset, sector, or theme.
Estimate current profit and loss from market data.
Flag positions that need review.
## Usage
```bash theme={null}
# Create a new portfolio
python3 "${CLAUDE_PLUGIN_ROOT}/skills/stock-portfolio/scripts/portfolio.py" create "My Portfolio"
# Add a position
python3 "${CLAUDE_PLUGIN_ROOT}/skills/stock-portfolio/scripts/portfolio.py" add AAPL --quantity 10 --cost 150
python3 "${CLAUDE_PLUGIN_ROOT}/skills/stock-portfolio/scripts/portfolio.py" add BTC-USD --quantity 0.5 --cost 40000
# Show portfolio with live P&L
python3 "${CLAUDE_PLUGIN_ROOT}/skills/stock-portfolio/scripts/portfolio.py" show
python3 "${CLAUDE_PLUGIN_ROOT}/skills/stock-portfolio/scripts/portfolio.py" show --portfolio "My Portfolio"
# Update a position
python3 "${CLAUDE_PLUGIN_ROOT}/skills/stock-portfolio/scripts/portfolio.py" update AAPL --quantity 15 --cost 160
# Remove a position
python3 "${CLAUDE_PLUGIN_ROOT}/skills/stock-portfolio/scripts/portfolio.py" remove AAPL
# List all portfolios
python3 "${CLAUDE_PLUGIN_ROOT}/skills/stock-portfolio/scripts/portfolio.py" list
# Rename a portfolio
python3 "${CLAUDE_PLUGIN_ROOT}/skills/stock-portfolio/scripts/portfolio.py" rename "My Portfolio" "Tech Holdings"
# Delete a portfolio
python3 "${CLAUDE_PLUGIN_ROOT}/skills/stock-portfolio/scripts/portfolio.py" delete "Old Portfolio"
```
### Actions
| Action | Description |
| ---------------- | ------------------------------------------- |
| `create NAME` | Create a new portfolio |
| `list` | List all portfolios |
| `show` | Show portfolio summary with live P\&L |
| `add TICKER` | Add position with `--quantity` and `--cost` |
| `update TICKER` | Update position quantity/cost |
| `remove TICKER` | Remove position from portfolio |
| `rename OLD NEW` | Rename a portfolio |
| `delete NAME` | Delete a portfolio |
## Data Storage
Portfolio data is stored in `${CLAUDE_PLUGIN_DATA}/portfolios.json` for persistence across sessions.
**NOT FINANCIAL ADVICE.** For informational purposes only.
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. Set your key and install the skill:
```bash theme={null}
export AISA_API_KEY="your-key"
npm install -g @aisa-one/cli
aisa skills install stock-portfolio
```
4. Start a new agent session so the runtime loads the updated skill instructions.
## Related
Track targets and alert checks.
Analyze individual holdings.
Market data for portfolio review.
# Rumor Scanner
Source: https://aisa.one/docs/agent-skills/stock-rumors
Scan rumors, insider moves, analyst changes, and regulatory signals.
[View on GitHub ->](https://github.com/AIsa-team/agent-skills/tree/main/stock-rumors)
**Early market signal scanning.** Track rumors, analyst moves, insider activity, and social whispers with AIsa.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install stock-rumors
```
## What can agents do with it?
Scan for early market narratives and unconfirmed signals.
Surface acquisition or deal-related chatter.
Track upgrades, downgrades, and estimate revisions.
Add regulatory and filing context to alerts.
## Usage
```bash theme={null}
python3 scripts/rumor_scanner.py
python3 scripts/rumor_scanner.py --focus ma
python3 scripts/rumor_scanner.py --focus insider
python3 scripts/rumor_scanner.py --focus analyst
python3 scripts/rumor_scanner.py --focus social
python3 scripts/rumor_scanner.py --output json
```
### Arguments
* `--focus`: Filter by `all` (default), `ma` (M\&A), `insider`, `analyst`, or `social`
* `--output json`: Append structured JSON summary
## Signal Categories
* **M\&A / Takeover Signals**: Acquisition, merger, buyout, strategic review keywords
* **Insider Trading Activity**: SEC EDGAR Form 4, cluster buying, 10b5-1 deviations
* **Analyst Actions**: Upgrades, downgrades, price target changes >15%, double-upgrades
* **Social & News Whispers**: "hearing that", "sources say", "rumored to", unusual social spikes
* **Regulatory / SEC Activity**: 13D/13G filings, investigations, Wells notices
## Output
Top 5 signals ranked by Impact Score with quality assessment, followed by an analyst note on the most actionable signals.
**NOT FINANCIAL ADVICE.** Rumors are unconfirmed. For informational purposes only.
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. Set your key and install the skill:
```bash theme={null}
export AISA_API_KEY="your-key"
npm install -g @aisa-one/cli
aisa skills install stock-rumors
```
4. Start a new agent session so the runtime loads the updated skill instructions.
## Related
Find high-momentum market movers.
Check filings, news, and financial context.
Monitor follow-up targets and stops.
# Watchlist Management
Source: https://aisa.one/docs/agent-skills/stock-watchlist
Manage ticker watchlists with targets, stops, and alert checks.
[View on GitHub ->](https://github.com/AIsa-team/agent-skills/tree/main/stock-watchlist)
**Watchlists with live alert checks.** Track tickers against targets, stops, and signal changes using AIsa market data.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install stock-watchlist
```
## What can agents do with it?
Maintain symbols, thesis notes, and follow-up actions.
Check whether prices reached target levels.
Flag downside levels that need attention.
Summarize watchlist changes for review.
## Usage
```bash theme={null}
# Add a ticker with price target and stop-loss
python3 "${CLAUDE_PLUGIN_ROOT}/skills/stock-watchlist/scripts/watchlist.py" add AAPL --target 220 --stop 160
# Add with signal-change alert
python3 "${CLAUDE_PLUGIN_ROOT}/skills/stock-watchlist/scripts/watchlist.py" add AAPL --alert-on signal
# List all watchlist items
python3 "${CLAUDE_PLUGIN_ROOT}/skills/stock-watchlist/scripts/watchlist.py" list
# Check live prices and trigger alerts
python3 "${CLAUDE_PLUGIN_ROOT}/skills/stock-watchlist/scripts/watchlist.py" check
# Check with notification
python3 "${CLAUDE_PLUGIN_ROOT}/skills/stock-watchlist/scripts/watchlist.py" check --notify
# Remove a ticker
python3 "${CLAUDE_PLUGIN_ROOT}/skills/stock-watchlist/scripts/watchlist.py" remove AAPL
```
### Actions
| Action | Description |
| --------------- | ------------------------------------------------------------------ |
| `add TICKER` | Add ticker with optional `--target`, `--stop`, `--alert-on signal` |
| `remove TICKER` | Remove ticker from watchlist |
| `list` | Show all watchlist items |
| `check` | Fetch live prices and check alerts |
## Data Storage
Watchlist data is stored in `${CLAUDE_PLUGIN_DATA}/watchlist.json` for persistence across sessions.
**NOT FINANCIAL ADVICE.** For informational purposes only.
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. Set your key and install the skill:
```bash theme={null}
export AISA_API_KEY="your-key"
npm install -g @aisa-one/cli
aisa skills install stock-watchlist
```
4. Start a new agent session so the runtime loads the updated skill instructions.
## Related
Analyze assets before adding them.
Review holdings and allocation.
Find new watchlist candidates.
# AIsa Tavily Extract
Source: https://aisa.one/docs/agent-skills/tavily-extract
Extract clean readable content from public URLs.
[View on GitHub ->](https://github.com/AIsa-team/agent-skills/tree/main/tavily-extract)
**Clean web page extraction.** Turn one or more public URLs into readable text with Tavily Extract through AIsa.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install tavily-extract
```
## What can agents do with it?
Pull readable article text from a public URL.
Extract source text before analysis.
Keep source content attached to summaries.
Remove page chrome and keep useful content.
## Setup
This skill requires the `AISA_API_KEY` environment variable. When installed as a Claude plugin, the key is configured via the plugin's `userConfig`.
## Usage
Run the search client with the `extract` subcommand:
```bash theme={null}
python3 ${CLAUDE_PLUGIN_ROOT}/skills/tavily-extract/scripts/search_client.py extract --urls ""
```
### Arguments
| Argument | Required | Default | Description |
| --------------- | -------- | ------- | ---------------------------------------------------- |
| `--urls` / `-u` | Yes | — | Comma-separated list of URLs to extract content from |
### Examples
```bash theme={null}
# Extract a single article
python3 ${CLAUDE_PLUGIN_ROOT}/skills/tavily-extract/scripts/search_client.py extract --urls "https://example.com/article"
# Extract multiple pages
python3 ${CLAUDE_PLUGIN_ROOT}/skills/tavily-extract/scripts/search_client.py extract --urls "https://example.com/page1,https://example.com/page2"
```
## Output
For each URL, the script prints:
* **URL** — The source URL
* **Content** — Clean extracted text (up to 3000 characters per page)
## When to Use
Use this skill when the user provides a URL and wants to read or analyze its content, or when you need to fetch the full text of an article found via search. This is the best tool for "read this page" or "summarize this URL" requests.
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. Set your key and install the skill:
```bash theme={null}
export AISA_API_KEY="your-key"
npm install -g @aisa-one/cli
aisa skills install tavily-extract
```
4. Start a new agent session so the runtime loads the updated skill instructions.
## Related
Search the web before extracting sources.
Combined search and extraction workflow.
Endpoint reference for extraction.
# Tavily Search
Source: https://aisa.one/docs/agent-skills/tavily-search
Run configurable web searches with Tavily through AIsa.
[View on GitHub ->](https://github.com/AIsa-team/agent-skills/tree/main/tavily-search)
**Flexible web search through Tavily.** Run focused web, news, and domain searches with AIsa-managed access.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install tavily-search
```
## What can agents do with it?
Find fresh web results for a query.
Include or exclude domains for focused retrieval.
Search within relevant recency ranges.
Narrow search to the right kind of source.
## Setup
This skill requires the `AISA_API_KEY` environment variable. When installed as a Claude plugin, the key is configured via the plugin's `userConfig`.
## Usage
Run the search client with the `tavily` subcommand:
```bash theme={null}
python3 ${CLAUDE_PLUGIN_ROOT}/skills/tavily-search/scripts/search_client.py tavily --query "" [options]
```
### Arguments
| Argument | Required | Default | Description |
| ------------------ | -------- | ------- | ------------------------------------------------------- |
| `--query` / `-q` | Yes | — | Search query |
| `--count` / `-c` | No | 5 | Maximum results (1–20) |
| `--depth` | No | basic | Search depth: `basic`, `advanced`, `fast`, `ultra-fast` |
| `--topic` | No | — | Topic filter: `general`, `news`, `finance` |
| `--time-range` | No | — | Time range filter |
| `--include-answer` | No | false | Include an LLM-generated answer summary |
### Examples
```bash theme={null}
# Basic search
python3 ${CLAUDE_PLUGIN_ROOT}/skills/tavily-search/scripts/search_client.py tavily --query "OpenAI latest announcements" --count 10
# Advanced news search with answer
python3 ${CLAUDE_PLUGIN_ROOT}/skills/tavily-search/scripts/search_client.py tavily --query "AI regulation 2026" --depth advanced --topic news --include-answer
# Finance-focused search
python3 ${CLAUDE_PLUGIN_ROOT}/skills/tavily-search/scripts/search_client.py tavily --query "NVIDIA earnings Q1 2026" --topic finance --include-answer
```
## Output
The script prints structured results including:
* **Title** — Page title
* **URL** — Direct link
* **Date** — Publication date (when available)
* **Content** — Relevant excerpt
* **Answer** — LLM-generated summary (when `--include-answer` is used)
## When to Use
Use this skill when the user needs advanced search with specific filtering requirements: news-only results, finance-focused results, time-bounded searches, or when they want an AI-generated answer alongside raw results. This is the most feature-rich search tool in the plugin.
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. Set your key and install the skill:
```bash theme={null}
export AISA_API_KEY="your-key"
npm install -g @aisa-one/cli
aisa skills install tavily-search
```
4. Start a new agent session so the runtime loads the updated skill instructions.
## Related
Endpoint reference for Tavily search.
Extract full content from selected URLs.
General web search with structured results.
# Trend Forecast
Source: https://aisa.one/docs/agent-skills/trend-forecast
Forecast trends from prediction markets, social signals, news, and market data.
[View on GitHub ->](https://github.com/AIsa-team/agent-skills/tree/main/trend-forecast)
**Trend forecasts from multiple signals.** Combine prediction markets, social data, news, and market movement into confidence-scored analysis.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install trend-forecast
```
## What can agents do with it?
Turn mixed signals into a concise trend forecast.
Use Polymarket and Kalshi odds as probability evidence.
Read X/Twitter movement around topics, entities, and narratives.
Add stocks, crypto, and macro context where relevant.
## Context
You are a trend forecasting agent. When the user asks about a topic's trajectory,
outlook, or probability, you gather signals from five independent data sources
through AIsa's unified API, then synthesize a forecast with a confidence score.
This skill is NOT a web search tool. It is a **multi-signal aggregation engine**
that pulls structured data from prediction markets, social media, news, and
financial markets — then uses an LLM to synthesize a trend report.
All endpoints share one auth header: `Authorization: Bearer $AISA_API_KEY`.
The REST surface lives under `https://api.aisa.one/apis/v1`; the OpenAI-compatible
LLM gateway lives under `https://api.aisa.one/v1` (note: no `/apis`).
## Example Prompts
* "What's the outlook on the AI chip market over the next 6 months?"
* "Will the Fed cut rates before September?"
* "Forecast the trend for Tesla stock based on current sentiment"
* "What are prediction markets saying about the 2026 midterms?"
* "Trend analysis for remote work adoption — combine social, news, and market data"
## Environment
```bash theme={null}
export AISA_API_KEY="your-aisa-api-key"
```
## Architecture
```
┌─────────────────────────────────────────────────────────┐
│ USER QUERY │
│ "What's the outlook on X?" │
└──────────────────────┬──────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ QUERY DECOMPOSITION (LLM) │
│ Break topic into search terms per data source │
└──────────────────────┬──────────────────────────────────┘
│
┌────────────┼────────────┬────────────┐
▼ ▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│Prediction│ │ Twitter │ │ News │ │ Stock │
│ Markets │ │Sentiment │ │ Velocity │ │ Data │
│ (odds) │ │ (volume) │ │ (tavily) │ │(financial)│
└────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘
│ │ │ │
└────────────┴─────┬──────┴─────────────┘
▼
┌─────────────────────────────────────────────────────────┐
│ SIGNAL SYNTHESIS (LLM) │
│ Weigh signals, detect agreement/conflict, │
│ produce confidence score (0-100) + forecast │
└─────────────────────────────────────────────────────────┘
```
## Workflow
Follow these steps in order. Each step calls a specific AIsa API endpoint.
### Step 1: Decompose the Query
Use the AIsa LLM gateway to break the user's query into source-specific search terms.
```bash theme={null}
curl -X POST "https://api.aisa.one/v1/chat/completions" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4.1-mini",
"messages": [
{
"role": "system",
"content": "You decompose a user query into search terms for 4 data sources. Respond ONLY with JSON: {\"prediction_market_query\": \"...\", \"twitter_query\": \"...\", \"news_query\": \"...\", \"stock_symbols\": [\"...\"], \"topic_summary\": \"...\"}. stock_symbols must be real tickers (AAPL, NVDA, TLT) — never institution abbreviations like FED/SEC/FDA."
},
{"role": "user", "content": ""}
],
"temperature": 0.2
}'
```
### Step 2: Gather Prediction Market Signals
Use mounted prediction-market discovery endpoints to collect market context. AIsa currently exposes Polymarket market/event discovery and Kalshi markets/trades; use venue-native APIs or trading systems for current price and orderbook checks when the forecast requires executable odds.
```bash theme={null}
# Polymarket markets
curl "https://api.aisa.one/apis/v1/polymarket/markets?limit=5" \
-H "Authorization: Bearer $AISA_API_KEY"
# Polymarket events
curl "https://api.aisa.one/apis/v1/polymarket/events?limit=5" \
-H "Authorization: Bearer $AISA_API_KEY"
```
For Kalshi:
```bash theme={null}
curl "https://api.aisa.one/apis/v1/kalshi/markets?limit=5&status=open" \
-H "Authorization: Bearer $AISA_API_KEY"
curl "https://api.aisa.one/apis/v1/kalshi/trades?limit=5&is_block_trade=false" \
-H "Authorization: Bearer $AISA_API_KEY"
```
Extract: market titles, status, volume/liquidity fields, close times, and recent trade context.
### Step 3: Gather Twitter/X Social Sentiment
Search Twitter for recent discussion volume and sentiment signals. The tweet
search endpoint is `/twitter/tweet/advanced_search` with params `query` and
`queryType` (`Latest` or `Top`).
```bash theme={null}
curl "https://api.aisa.one/apis/v1/twitter/tweet/advanced_search?query=&queryType=Latest" \
-H "Authorization: Bearer $AISA_API_KEY"
```
Extract: tweet count, engagement metrics (likes, retweets, replies), notable accounts
posting about the topic, and overall sentiment tone.
### Step 4: Gather News Signals
Use AIsa's Tavily relay to search recent news articles about the topic.
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/tavily/search" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "",
"search_depth": "advanced",
"max_results": 10,
"topic": "news",
"days": 7
}'
```
Extract: article count, source diversity, headline sentiment, publication velocity
(are articles accelerating or decelerating?).
### Step 5: Gather Stock/Market Signals (if applicable)
If the topic relates to a publicly traded company, sector, or financial instrument,
query AIsa's MarketPulse `/financial/` endpoints. Pull three signals per ticker:
```bash theme={null}
# Historical prices (interval is required: day, week, month, etc.)
curl "https://api.aisa.one/apis/v1/financial/prices?ticker=&interval=day" \
-H "Authorization: Bearer $AISA_API_KEY"
# Real-time financial metrics snapshot
curl "https://api.aisa.one/apis/v1/financial/financial-metrics/snapshot?ticker=" \
-H "Authorization: Bearer $AISA_API_KEY"
# Company news
curl "https://api.aisa.one/apis/v1/financial/news?ticker=" \
-H "Authorization: Bearer $AISA_API_KEY"
```
Extract: recent price trend (1d, 5d, 30d), valuation/profitability metrics, and
headline sentiment. For deeper signals, add `/financial/analyst-estimates`,
`/financial/insider-trades`, or the macro `/financial/macro/interest-rates/snapshot`.
Use only real ticker symbols (AAPL, NVDA, TLT) — never institution abbreviations
like FED/SEC/FDA. If no stock symbols are relevant, skip this step and note
"N/A — non-financial topic".
### Step 6: Synthesize Forecast
Pass all gathered signals to the AIsa LLM gateway for synthesis.
```bash theme={null}
curl -X POST "https://api.aisa.one/v1/chat/completions" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4.1-mini",
"messages": [
{
"role": "system",
"content": "You are a trend analyst. Given structured signals from prediction markets, Twitter, news, and stock data, produce a forecast. Output JSON: {\"trend_direction\": \"bullish|bearish|neutral|mixed\", \"confidence_score\": 0-100, \"time_horizon\": \"...\", \"headline\": \"...\", \"analysis\": \"...\", \"signal_agreement\": \"high|medium|low\", \"key_signals\": [...], \"risks\": [...], \"data_gaps\": [...]}"
},
{
"role": "user",
"content": "TOPIC: \n\nPREDICTION MARKETS:\n\n\nTWITTER SENTIMENT:\n\n\nNEWS VELOCITY:\n\n\nMARKET DATA:\n"
}
],
"temperature": 0.3
}'
```
### Step 7: Format and Deliver
Present the forecast to the user in this format:
```
📈 TREND FORECAST:
Direction:
Confidence: /100
Signal Agreement:
Time Horizon:
ANALYSIS:
KEY SIGNALS:
-
-
-
RISKS & CAVEATS:
-
-
DATA GAPS:
-
```
## Rules
* ALWAYS call at least 3 of the 4 data sources before synthesizing. A forecast
from fewer than 3 sources must include a prominent "LOW CONFIDENCE — limited
data sources" warning.
* NEVER present prediction market odds as certainties. Always frame them as
"prediction markets currently price X at Y%" not "X will happen".
* NEVER provide financial advice. Frame all output as informational analysis,
not investment recommendations. Include a disclaimer when stock data is involved.
* For stock signals, use only real ticker symbols. Never pass institution
abbreviations (FED, SEC, FDA) to the `/financial/` endpoints — they will fail.
* If the AISA\_API\_KEY is not set, prompt the user to set it and provide a link
to [https://aisa.one](https://aisa.one) to create an account.
* If any API call fails, log the error, continue with remaining sources, and
note the gap in the final output.
## Automation
For recurring forecasts, use the Python script:
```bash theme={null}
python3 scripts/trend_forecast.py "Will the Fed cut rates in 2026?" --output json
python3 scripts/trend_forecast.py "Tesla outlook" --output markdown --save report.md
python3 scripts/trend_forecast.py "Bitcoin outlook" --model gpt-4.1
```
See `scripts/trend_forecast.py` for the full implementation and `references/api_endpoints.md`
for complete AIsa endpoint documentation.
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. Set your key and install the skill:
```bash theme={null}
export AISA_API_KEY="your-key"
npm install -g @aisa-one/cli
aisa skills install trend-forecast
```
4. Start a new agent session so the runtime loads the updated skill instructions.
## Related
Market odds, prices, and trade history.
X/Twitter search and social intelligence.
Equity, filing, and macro market context.
# Twitter Autopilot
Source: https://aisa.one/docs/agent-skills/twitter-autopilot
Full X/Twitter intelligence for autonomous agents — profiles, timelines, mentions, followers, tweet search, trends, lists, communities, and Spaces. Plus OAuth-gated write operations for posting, liking, and following.
[View on GitHub →](https://github.com/AIsa-team/agent-skills/tree/main/twitter-autopilot)
**Full Twitter intelligence for autonomous agents.** One `AISA_API_KEY` unlocks every read endpoint; OAuth unlocks write actions (post, like, follow).
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install twitter-autopilot
```
## What can agents do with it?
"Get Elon Musk's latest tweets and notify me of AI-related posts."
"What's trending on Twitter worldwide right now?"
"Search for tweets mentioning our product and analyze sentiment."
"Monitor @anthropic and @GoogleAI — alert me on new announcements."
"Fetch the full conversation thread around a viral tweet."
"Like, unlike, follow, or unfollow via OAuth (requires user consent)."
## Core capabilities
* **Users** — profile info, "about" metadata, batch lookup by IDs, latest tweets, mentions, followers, followings, verified followers, follow-relationship check, keyword search
* **Tweets** — advanced search (Latest/Top), by IDs, replies, quotes, retweeters, full thread context, article extraction
* **Trends** — worldwide and regional trending topics by WOEID
* **Lists** — members and followers
* **Communities** — info, members, moderators, tweets, cross-community search
* **Spaces** — Space detail lookup
* **Engagement (OAuth)** — like / unlike / follow / unfollow / post / reply / quote via the local relay
## Quick start
```bash theme={null}
export AISA_API_KEY="your-key"
```
### User endpoints
```bash theme={null}
# Profile
curl "https://api.aisa.one/apis/v1/twitter/user/info?userName=elonmusk" \
-H "Authorization: Bearer $AISA_API_KEY"
# Latest tweets
curl "https://api.aisa.one/apis/v1/twitter/user/last_tweets?userName=elonmusk" \
-H "Authorization: Bearer $AISA_API_KEY"
# Mentions
curl "https://api.aisa.one/apis/v1/twitter/user/mentions?userName=elonmusk" \
-H "Authorization: Bearer $AISA_API_KEY"
# Followers / followings
curl "https://api.aisa.one/apis/v1/twitter/user/followers?userName=elonmusk" \
-H "Authorization: Bearer $AISA_API_KEY"
# Verified followers (note: requires numeric user_id, not userName)
curl "https://api.aisa.one/apis/v1/twitter/user/verifiedFollowers?user_id=44196397" \
-H "Authorization: Bearer $AISA_API_KEY"
# Follow-relationship check
curl "https://api.aisa.one/apis/v1/twitter/user/check_follow_relationship?source_user_name=elonmusk&target_user_name=BillGates" \
-H "Authorization: Bearer $AISA_API_KEY"
# User search
curl "https://api.aisa.one/apis/v1/twitter/user/search?query=AI+researcher" \
-H "Authorization: Bearer $AISA_API_KEY"
```
### Tweet endpoints
```bash theme={null}
# Advanced search (queryType is required: Latest or Top)
curl "https://api.aisa.one/apis/v1/twitter/tweet/advanced_search?query=AI+agents&queryType=Latest" \
-H "Authorization: Bearer $AISA_API_KEY"
# Tweets by IDs
curl "https://api.aisa.one/apis/v1/twitter/tweets?tweet_ids=1895096451033985024" \
-H "Authorization: Bearer $AISA_API_KEY"
# Replies, quotes, retweeters, thread context
curl "https://api.aisa.one/apis/v1/twitter/tweet/replies?tweetId=1895096451033985024" \
-H "Authorization: Bearer $AISA_API_KEY"
curl "https://api.aisa.one/apis/v1/twitter/tweet/thread_context?tweetId=1895096451033985024" \
-H "Authorization: Bearer $AISA_API_KEY"
```
### Trends, lists, communities, Spaces
```bash theme={null}
# Worldwide trends
curl "https://api.aisa.one/apis/v1/twitter/trends?woeid=1" \
-H "Authorization: Bearer $AISA_API_KEY"
# List members
curl "https://api.aisa.one/apis/v1/twitter/list/members?list_id=1585430245762441216" \
-H "Authorization: Bearer $AISA_API_KEY"
# Community tweets
curl "https://api.aisa.one/apis/v1/twitter/community/tweets?community_id=1708485837274263614" \
-H "Authorization: Bearer $AISA_API_KEY"
# Space detail
curl "https://api.aisa.one/apis/v1/twitter/spaces/detail?space_id=1dRJZlbLkjexB" \
-H "Authorization: Bearer $AISA_API_KEY"
```
## Python client
```bash theme={null}
# User
python3 scripts/twitter_client.py user-info --username elonmusk
python3 scripts/twitter_client.py user-about --username elonmusk
python3 scripts/twitter_client.py tweets --username elonmusk
python3 scripts/twitter_client.py mentions --username elonmusk
python3 scripts/twitter_client.py followers --username elonmusk
python3 scripts/twitter_client.py followings --username elonmusk
python3 scripts/twitter_client.py verified-followers --user-id 44196397
python3 scripts/twitter_client.py check-follow --source elonmusk --target BillGates
python3 scripts/twitter_client.py user-search --query "AI researcher"
# Search & trends
python3 scripts/twitter_client.py search --query "AI agents"
python3 scripts/twitter_client.py search --query "AI agents" --type Top
python3 scripts/twitter_client.py trends --woeid 1
# Tweets
python3 scripts/twitter_client.py detail --tweet-ids 1895096451033985024
python3 scripts/twitter_client.py replies --tweet-id 1895096451033985024
python3 scripts/twitter_client.py quotes --tweet-id 1895096451033985024
python3 scripts/twitter_client.py retweeters --tweet-id 1895096451033985024
python3 scripts/twitter_client.py thread --tweet-id 1895096451033985024
# Lists & communities
python3 scripts/twitter_client.py list-members --list-id 1585430245762441216
python3 scripts/twitter_client.py community-info --community-id 1708485837274263614
python3 scripts/twitter_client.py community-tweets --community-id 1708485837274263614
# Engagement (OAuth-gated; use the local relay)
python3 scripts/twitter_engagement_client.py like-latest --user "@elonmusk"
python3 scripts/twitter_engagement_client.py follow-user --user "@elonmusk"
```
## Endpoint reference
| Endpoint | Method | Purpose |
| -------------------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------- |
| `/twitter/user/info` | GET | [User profile](/docs/api-reference/twitter/get_twitter-user-info) |
| `/twitter/user_about` | GET | [User about](/docs/api-reference/twitter/get_twitter-user-about) |
| `/twitter/user/batch_info_by_ids` | GET | [Batch user info](/docs/api-reference/twitter/get_twitter-user-batch-info-by-ids) |
| `/twitter/user/last_tweets` | GET | [User last tweets](/docs/api-reference/twitter/get_twitter-user-last-tweets) |
| `/twitter/user/mentions` | GET | [User mentions](/docs/api-reference/twitter/get_twitter-user-mentions) |
| `/twitter/user/followers` | GET | [User followers](/docs/api-reference/twitter/get_twitter-user-followers) |
| `/twitter/user/followings` | GET | [User followings](/docs/api-reference/twitter/get_twitter-user-followings) |
| `/twitter/user/verifiedFollowers` | GET | [Verified followers](/docs/api-reference/twitter/get_twitter-user-verifiedfollowers) |
| `/twitter/user/check_follow_relationship` | GET | [Follow relationship](/docs/api-reference/twitter/get_twitter-user-check-follow-relationship) |
| `/twitter/user/search` | GET | [User search](/docs/api-reference/twitter/get_twitter-user-search) |
| `/twitter/tweet/advanced_search` | GET | [Tweet advanced search](/docs/api-reference/twitter/get_twitter-tweet-advanced-search) |
| `/twitter/tweets` | GET | [Tweets by IDs](/docs/api-reference/twitter/get_twitter-tweets) |
| `/twitter/tweet/replies` | GET | [Tweet replies](/docs/api-reference/twitter/get_twitter-tweet-replies) |
| `/twitter/tweet/quotes` | GET | [Tweet quotes](/docs/api-reference/twitter/get_twitter-tweet-quotes) |
| `/twitter/tweet/retweeters` | GET | [Tweet retweeters](/docs/api-reference/twitter/get_twitter-tweet-retweeters) |
| `/twitter/tweet/thread_context` | GET | [Thread context](/docs/api-reference/twitter/get_twitter-tweet-thread-context) |
| `/twitter/article` | GET | [Article by tweet](/docs/api-reference/twitter/get_twitter-article) |
| `/twitter/trends` | GET | [Trends](/docs/api-reference/twitter/get_twitter-trends) |
| `/twitter/list/members` | GET | [List members](/docs/api-reference/twitter/get_twitter-list-members) |
| `/twitter/list/followers` | GET | [List followers](/docs/api-reference/twitter/get_twitter-list-followers) |
| `/twitter/community/info` | GET | [Community info](/docs/api-reference/twitter/get_twitter-community-info) |
| `/twitter/community/members` | GET | [Community members](/docs/api-reference/twitter/get_twitter-community-members) |
| `/twitter/community/moderators` | GET | [Community moderators](/docs/api-reference/twitter/get_twitter-community-moderators) |
| `/twitter/community/tweets` | GET | [Community tweets](/docs/api-reference/twitter/get_twitter-community-tweets) |
| `/twitter/community/get_tweets_from_all_community` | GET | [All-community search](/docs/api-reference/twitter/get_twitter-community-get-tweets-from-all-community) |
| `/twitter/spaces/detail` | GET | [Space detail](/docs/api-reference/twitter/get_twitter-spaces-detail) |
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. `export AISA_API_KEY="your-key"` and install the skill:
```bash theme={null}
npm install -g @aisa-one/cli
aisa skills install twitter-autopilot
```
4. For write actions (post, like, follow), complete OAuth via the local relay — see `./references/post_twitter.md` and `./references/engage_twitter.md` in the skill folder.
## Related
Every read endpoint with interactive playgrounds.
Bearer-token auth plus OAuth for write actions.
Twitter RPM caps per key.
# Twitter Command Center Search + Post
Source: https://aisa.one/docs/agent-skills/twitter-command-center-search-post
Search X/Twitter and prepare approved posting workflows.
[View on GitHub ->](https://github.com/AIsa-team/agent-skills/tree/main/twitter-command-center-search-post)
**Twitter/X search and posting in one workflow.** Research profiles and tweets, then move into OAuth-approved posting when needed.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install twitter-command-center-search-post
```
## What can agents do with it?
Search users, tweets, trends, communities, and lists.
Draft and prepare posts from research context.
Use linked-account actions only after authorization.
Include DM context when the workflow needs it.
## What Can You Do?
### Monitor Influencers
```text theme={null}
"Get Elon Musk's latest tweets and notify me of any AI-related posts"
```
### Track Trends
```text theme={null}
"What's trending on Twitter worldwide right now?"
```
### Social Listening
```text theme={null}
"Search for tweets mentioning our product and analyze sentiment"
```
### Competitor Intel
```text theme={null}
"Monitor @anthropic and @GoogleAI - alert me on new announcements"
```
## Posting Workflows
This file does not define publishing logic.
If the user asks to send, publish, or reply, or quote on X/Twitter, handle that workflow with `./references/post_twitter.md`.
## Quick Start
```bash theme={null}
export AISA_API_KEY="your-key"
```
## Core Capabilities
### Read Operations (No Login Required)
#### User Endpoints
```bash theme={null}
# Get user info
curl "https://api.aisa.one/apis/v1/twitter/user/info?userName=elonmusk" \
-H "Authorization: Bearer $AISA_API_KEY"
# Get user profile about (account country, verification, username changes)
curl "https://api.aisa.one/apis/v1/twitter/user_about?userName=elonmusk" \
-H "Authorization: Bearer $AISA_API_KEY"
# Batch get user info by IDs
curl "https://api.aisa.one/apis/v1/twitter/user/batch_info_by_ids?userIds=44196397,123456" \
-H "Authorization: Bearer $AISA_API_KEY"
# Get user's latest tweets
curl "https://api.aisa.one/apis/v1/twitter/user/last_tweets?userName=elonmusk" \
-H "Authorization: Bearer $AISA_API_KEY"
# Get user mentions
curl "https://api.aisa.one/apis/v1/twitter/user/mentions?userName=elonmusk" \
-H "Authorization: Bearer $AISA_API_KEY"
# Get user followers
curl "https://api.aisa.one/apis/v1/twitter/user/followers?userName=elonmusk" \
-H "Authorization: Bearer $AISA_API_KEY"
# Get user followings
curl "https://api.aisa.one/apis/v1/twitter/user/followings?userName=elonmusk" \
-H "Authorization: Bearer $AISA_API_KEY"
# Get user verified followers (requires user_id, not userName)
curl "https://api.aisa.one/apis/v1/twitter/user/verifiedFollowers?user_id=44196397" \
-H "Authorization: Bearer $AISA_API_KEY"
# Check follow relationship between two users
curl "https://api.aisa.one/apis/v1/twitter/user/check_follow_relationship?source_user_name=elonmusk&target_user_name=BillGates" \
-H "Authorization: Bearer $AISA_API_KEY"
# Search users by keyword
curl "https://api.aisa.one/apis/v1/twitter/user/search?query=AI+researcher" \
-H "Authorization: Bearer $AISA_API_KEY"
```
#### Tweet Endpoints
```bash theme={null}
# Advanced tweet search (queryType is required: Latest or Top)
curl "https://api.aisa.one/apis/v1/twitter/tweet/advanced_search?query=AI+agents&queryType=Latest" \
-H "Authorization: Bearer $AISA_API_KEY"
# Search top tweets
curl "https://api.aisa.one/apis/v1/twitter/tweet/advanced_search?query=AI+agents&queryType=Top" \
-H "Authorization: Bearer $AISA_API_KEY"
# Get tweets by IDs (comma-separated)
curl "https://api.aisa.one/apis/v1/twitter/tweets?tweet_ids=1895096451033985024" \
-H "Authorization: Bearer $AISA_API_KEY"
# Get tweet replies
curl "https://api.aisa.one/apis/v1/twitter/tweet/replies?tweetId=1895096451033985024" \
-H "Authorization: Bearer $AISA_API_KEY"
# Get tweet quotes
curl "https://api.aisa.one/apis/v1/twitter/tweet/quotes?tweetId=1895096451033985024" \
-H "Authorization: Bearer $AISA_API_KEY"
# Get tweet retweeters
curl "https://api.aisa.one/apis/v1/twitter/tweet/retweeters?tweetId=1895096451033985024" \
-H "Authorization: Bearer $AISA_API_KEY"
# Get tweet thread context (full conversation thread)
curl "https://api.aisa.one/apis/v1/twitter/tweet/thread_context?tweetId=1895096451033985024" \
-H "Authorization: Bearer $AISA_API_KEY"
# Get article by tweet ID
curl "https://api.aisa.one/apis/v1/twitter/article?tweet_id=1895096451033985024" \
-H "Authorization: Bearer $AISA_API_KEY"
```
#### Trends, Lists, Communities & Spaces
```bash theme={null}
# Get trending topics (worldwide)
curl "https://api.aisa.one/apis/v1/twitter/trends?woeid=1" \
-H "Authorization: Bearer $AISA_API_KEY"
# Get list members
curl "https://api.aisa.one/apis/v1/twitter/list/members?list_id=1585430245762441216" \
-H "Authorization: Bearer $AISA_API_KEY"
# Get list followers
curl "https://api.aisa.one/apis/v1/twitter/list/followers?list_id=1585430245762441216" \
-H "Authorization: Bearer $AISA_API_KEY"
# Get community info
curl "https://api.aisa.one/apis/v1/twitter/community/info?community_id=1708485837274263614" \
-H "Authorization: Bearer $AISA_API_KEY"
# Get community members
curl "https://api.aisa.one/apis/v1/twitter/community/members?community_id=1708485837274263614" \
-H "Authorization: Bearer $AISA_API_KEY"
# Get community moderators
curl "https://api.aisa.one/apis/v1/twitter/community/moderators?community_id=1708485837274263614" \
-H "Authorization: Bearer $AISA_API_KEY"
# Get community tweets
curl "https://api.aisa.one/apis/v1/twitter/community/tweets?community_id=1708485837274263614" \
-H "Authorization: Bearer $AISA_API_KEY"
# Search tweets from all communities
curl "https://api.aisa.one/apis/v1/twitter/community/get_tweets_from_all_community?query=AI" \
-H "Authorization: Bearer $AISA_API_KEY"
# Get Space detail
curl "https://api.aisa.one/apis/v1/twitter/spaces/detail?space_id=1dRJZlbLkjexB" \
-H "Authorization: Bearer $AISA_API_KEY"
```
## Python Client
```bash theme={null}
# User operations
python3 scripts/twitter_client.py user-info --username elonmusk
python3 scripts/twitter_client.py user-about --username elonmusk
python3 scripts/twitter_client.py tweets --username elonmusk
python3 scripts/twitter_client.py mentions --username elonmusk
python3 scripts/twitter_client.py followers --username elonmusk
python3 scripts/twitter_client.py followings --username elonmusk
python3 scripts/twitter_client.py verified-followers --user-id 44196397
python3 scripts/twitter_client.py check-follow --source elonmusk --target BillGates
# Search & discovery
python3 scripts/twitter_client.py search --query "AI agents"
python3 scripts/twitter_client.py search --query "AI agents" --type Top
python3 scripts/twitter_client.py user-search --query "AI researcher"
python3 scripts/twitter_client.py trends --woeid 1
# Tweet operations
python3 scripts/twitter_client.py detail --tweet-ids 1895096451033985024
python3 scripts/twitter_client.py replies --tweet-id 1895096451033985024
python3 scripts/twitter_client.py quotes --tweet-id 1895096451033985024
python3 scripts/twitter_client.py retweeters --tweet-id 1895096451033985024
python3 scripts/twitter_client.py thread --tweet-id 1895096451033985024
# List operations
python3 scripts/twitter_client.py list-members --list-id 1585430245762441216
python3 scripts/twitter_client.py list-followers --list-id 1585430245762441216
# Community operations
python3 scripts/twitter_client.py community-info --community-id 1708485837274263614
python3 scripts/twitter_client.py community-members --community-id 1708485837274263614
python3 scripts/twitter_client.py community-tweets --community-id 1708485837274263614
python3 scripts/twitter_client.py community-search --query "AI"
```
## API Endpoints Reference
### Read Endpoints (GET)
| Endpoint | Description | Key Params |
| -------------------------------------------------- | --------------------------- | ------------------------------------------- |
| `/twitter/user/info` | Get user profile | `userName` |
| `/twitter/user_about` | Get user profile about | `userName` |
| `/twitter/user/batch_info_by_ids` | Batch get users by IDs | `userIds` |
| `/twitter/user/last_tweets` | Get user's recent tweets | `userName`, `cursor` |
| `/twitter/user/mentions` | Get user mentions | `userName`, `cursor` |
| `/twitter/user/followers` | Get user followers | `userName`, `cursor` |
| `/twitter/user/followings` | Get user followings | `userName`, `cursor` |
| `/twitter/user/verifiedFollowers` | Get verified followers | `user_id`, `cursor` |
| `/twitter/user/check_follow_relationship` | Check follow relationship | `source_user_name`, `target_user_name` |
| `/twitter/user/search` | Search users by keyword | `query`, `cursor` |
| `/twitter/tweet/advanced_search` | Advanced tweet search | `query`, `queryType` (Latest/Top), `cursor` |
| `/twitter/tweets` | Get tweets by IDs | `tweet_ids` (comma-separated) |
| `/twitter/tweet/replies` | Get tweet replies | `tweetId`, `cursor` |
| `/twitter/tweet/quotes` | Get tweet quotes | `tweetId`, `cursor` |
| `/twitter/tweet/retweeters` | Get tweet retweeters | `tweetId`, `cursor` |
| `/twitter/tweet/thread_context` | Get tweet thread context | `tweetId`, `cursor` |
| `/twitter/article` | Get article by tweet | `tweet_id` |
| `/twitter/trends` | Get trending topics | `woeid` (1=worldwide) |
| `/twitter/list/members` | Get list members | `list_id`, `cursor` |
| `/twitter/list/followers` | Get list followers | `list_id`, `cursor` |
| `/twitter/community/info` | Get community info | `community_id` |
| `/twitter/community/members` | Get community members | `community_id`, `cursor` |
| `/twitter/community/moderators` | Get community moderators | `community_id`, `cursor` |
| `/twitter/community/tweets` | Get community tweets | `community_id`, `cursor` |
| `/twitter/community/get_tweets_from_all_community` | Search all community tweets | `query`, `cursor` |
| `/twitter/spaces/detail` | Get Space detail | `space_id` |
## Pricing
| API | Cost |
| ------------------ | ---------- |
| Twitter read query | \~\$0.0004 |
Every response includes `usage.cost` and `usage.credits_remaining`.
## Get Started
1. Sign up at [aisa.one](https://aisa.one)
2. Get your API key
3. Add credits (pay-as-you-go)
4. Set environment variable: `export AISA_API_KEY="your-key"`
## Full API Reference
See [API Reference](https://aisa.one/docs/api-reference) for complete endpoint documentation.
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. Set your key and install the skill:
```bash theme={null}
export AISA_API_KEY="your-key"
npm install -g @aisa-one/cli
aisa skills install twitter-command-center-search-post
```
4. Start a new agent session so the runtime loads the updated skill instructions.
## Related
Full command-center workflow.
X/Twitter data and intelligence access.
Broad X/Twitter automation skill.
# US Stock Analyst
Source: https://aisa.one/docs/agent-skills/us-stock-analyst
Create US stock reports from financials, filings, news, and sentiment.
[View on GitHub ->](https://github.com/AIsa-team/agent-skills/tree/main/us-stock-analyst)
**Equity research reports for agents.** Pull financials, news, filings, sentiment, and model synthesis into one US stock analysis workflow.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install us-stock-analyst
```
## What can agents do with it?
Create structured analysis for US-listed stocks.
Use SEC filings and company disclosures.
Add news and social signal context.
Summarize risks, catalysts, and watch items.
## 🔥 What Can You Do?
### Investment Research
```
"Analyze NVDA: financial metrics, analyst estimates, insider trades,
news sentiment, and AI-powered valuation"
```
### Portfolio Monitoring
```
"Track my portfolio (AAPL, MSFT, GOOGL): daily updates on metrics,
news, and sentiment changes"
```
### Earnings Analysis
```
"Full Tesla Q4 earnings analysis: results vs estimates, guidance,
price reaction, analyst updates"
```
### Competitor Analysis
```
"Compare AMD vs NVDA: financials, growth, valuation, market sentiment"
```
### Screening & Discovery
```
"Find tech stocks with P/E < 30, revenue growth > 20%,
and positive insider activity"
```
## Quick Start
```bash theme={null}
export AISA_API_KEY="your-key"
```
***
## Core Capabilities
### 📊 Financial Data (MarketPulse APIs)
**Real-time Financial Metrics**
```bash theme={null}
curl "https://api.aisa.one/apis/v1/financial/financial-metrics/snapshot?ticker=AAPL" \
-H "Authorization: Bearer $AISA_API_KEY"
```
Returns: Market cap, P/E ratio, revenue, EPS, profit margin, ROE, debt/equity, and more.
**Historical Stock Prices**
```bash theme={null}
# Daily prices for last 30 days
curl "https://api.aisa.one/apis/v1/financial/prices?ticker=AAPL&start_date=2025-01-01&end_date=2025-01-31&interval=day&interval_multiplier=1" \
-H "Authorization: Bearer $AISA_API_KEY"
# 5-minute intraday data
curl "https://api.aisa.one/apis/v1/financial/prices?ticker=AAPL&start_date=2025-02-07&end_date=2025-02-07&interval=minute&interval_multiplier=5" \
-H "Authorization: Bearer $AISA_API_KEY"
```
**Financial Statements**
```bash theme={null}
# All statements (income, balance, cash flow)
curl "https://api.aisa.one/apis/v1/financial/financial_statements/all?ticker=AAPL" \
-H "Authorization: Bearer $AISA_API_KEY"
```
**Analyst Estimates**
```bash theme={null}
# EPS forecasts and ratings
curl "https://api.aisa.one/apis/v1/financial/analyst/eps?ticker=AAPL&period=annual" \
-H "Authorization: Bearer $AISA_API_KEY"
```
**Insider Trading**
```bash theme={null}
# Track insider buy/sell activity
curl "https://api.aisa.one/apis/v1/financial/insider/trades?ticker=AAPL" \
-H "Authorization: Bearer $AISA_API_KEY"
```
**Institutional Ownership**
```bash theme={null}
# See who owns the stock
curl "https://api.aisa.one/apis/v1/financial/institutional/ownership?ticker=AAPL" \
-H "Authorization: Bearer $AISA_API_KEY"
```
**SEC Filings**
```bash theme={null}
# Access 10-K, 10-Q, 8-K filings
curl "https://api.aisa.one/apis/v1/financial/sec/filings?ticker=AAPL" \
-H "Authorization: Bearer $AISA_API_KEY"
```
***
### 📰 News & Research
**Company News**
```bash theme={null}
curl "https://api.aisa.one/apis/v1/financial/news?ticker=AAPL&limit=10" \
-H "Authorization: Bearer $AISA_API_KEY"
```
**Web Search (News & Articles)**
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/scholar/search/web?query=AAPL+stock+analysis&max_num_results=10" \
-H "Authorization: Bearer $AISA_API_KEY"
```
**Academic Research**
```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/scholar/search/scholar?query=semiconductor+industry+analysis&max_num_results=5" \
-H "Authorization: Bearer $AISA_API_KEY"
```
***
### 🐦 Social Sentiment
**Twitter Search**
```bash theme={null}
curl "https://api.aisa.one/apis/v1/twitter/tweet/advanced_search?query=\$AAPL&queryType=Latest" \
-H "Authorization: Bearer $AISA_API_KEY"
```
***
### 📺 Video Content
**YouTube Search (Earnings Calls, Analysis)**
```bash theme={null}
curl "https://api.aisa.one/apis/v1/youtube/search?engine=youtube&q=AAPL+earnings+call&gl=us&hl=en" \
-H "Authorization: Bearer $AISA_API_KEY"
```
***
### 🤖 AI Analysis (Multi-Model)
**LLM Gateway (OpenAI Compatible)**
```bash theme={null}
curl -X POST "https://api.aisa.one/v1/chat/completions" \
-H "Authorization: Bearer $AISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4",
"messages": [
{
"role": "system",
"content": "You are a professional equity analyst."
},
{
"role": "user",
"content": "Analyze Apple stock investment prospects"
}
],
"temperature": 0.3,
"max_tokens": 2000
}'
```
**Supported Models:**
* GPT-4, GPT-4 Turbo (OpenAI)
* Claude 3 Opus, Sonnet, Haiku (Anthropic)
* Gemini 1.5 Pro, Ultra (Google)
* Qwen Max, Plus (Alibaba)
* DeepSeek V2 (DeepSeek)
* Grok (xAI)
***
## Python Client
```bash theme={null}
# Basic analysis
python3 scripts/stock_analyst.py analyze --ticker AAPL
# Standard analysis with multiple models
python3 scripts/stock_analyst.py analyze --ticker NVDA --depth standard --models gpt-4 claude-3-opus
# Deep analysis (all data sources)
python3 scripts/stock_analyst.py analyze --ticker TSLA --depth deep
# Quick screening
python3 scripts/stock_analyst.py analyze --ticker MSFT --depth quick
# Save report to file
python3 scripts/stock_analyst.py analyze --ticker GOOGL --output report.json
```
***
## Analysis Depth Options
| Mode | Time | Cost | Data Sources |
| ------------ | ----- | ----------- | -------------------------------------------- |
| **quick** | \~10s | \$0.01-0.02 | Metrics, News, Twitter, Basic AI |
| **standard** | \~20s | \$0.02-0.05 | + Analyst Estimates, Insider Trades, YouTube |
| **deep** | \~30s | \$0.05-0.10 | + Statements, Institutional, SEC, Research |
***
## API Reference
| Category | Endpoint | Method | Cost |
| --------------------- | --------------------------------------- | ------ | ----------- |
| **Financial Metrics** | `/financial/financial-metrics/snapshot` | GET | \$0.002 |
| **Stock Prices** | `/financial/prices` | GET | \$0.001 |
| **News** | `/financial/news` | GET | \$0.001 |
| **Statements** | `/financial/financial_statements/*` | GET | \$0.002 |
| **Analyst Estimates** | `/financial/analyst/eps` | GET | \$0.002 |
| **Insider Trades** | `/financial/insider/trades` | GET | \$0.001 |
| **Institutional** | `/financial/institutional/ownership` | GET | \$0.001 |
| **SEC Filings** | `/financial/sec/filings` | GET | \$0.001 |
| **Web Search** | `/scholar/search/web` | POST | \$0.001 |
| **Scholar Search** | `/scholar/search/scholar` | POST | \$0.002 |
| **Twitter** | `/twitter/tweet/advanced_search` | GET | \$0.0004 |
| **YouTube** | `/youtube/search` | GET | \$0.002 |
| **LLM** | `/v1/chat/completions` | POST | Token-based |
Every response includes `usage.cost` and `usage.credits_remaining`.
***
## Example Output
```json theme={null}
{
"ticker": "NVDA",
"analysis_date": "2025-02-07T10:30:00Z",
"investment_summary": "NVIDIA maintains dominant position in AI chip market with strong data center revenue growth. Recent Blackwell launch positions company for continued expansion...",
"key_metrics": {
"market_cap": 1780500000000,
"pe_ratio": 68.5,
"revenue": 60922000000,
"revenue_growth": 1.26,
"profit_margin": 0.489,
"roe": 1.152
},
"sentiment_analysis": {
"sentiment": "bullish",
"confidence": "high",
"key_themes": ["AI dominance", "Data center growth", "Blackwell launch"],
"summary": "Overwhelmingly positive sentiment following Q4 earnings beat"
},
"valuation": {
"assessment": "fairly_valued",
"price_target_12m": 850.00,
"reasoning": "Premium valuation justified by AI market leadership and strong growth trajectory"
},
"data_sources": {
"Financial Metrics": "Available",
"Stock News": 10,
"Analyst Estimates": "Available",
"Insider Trades": 15,
"Twitter": "Available",
"YouTube": 5
}
}
```
***
## Pricing
**Analysis Costs:**
* Quick: \$0.01-0.02 per stock
* Standard: \$0.02-0.05 per stock
* Deep: \$0.05-0.10 per stock
**Comparison:**
* Bloomberg Terminal: \$2,000/month
* FactSet: \$1,000/month
* Traditional Analyst Report: \$50-500 each
* **AIsa Stock Analyst: \$0.02-0.10 each** ✨
**Cost Breakdown:**
```
Standard Analysis ($0.02-0.05):
├── Financial Metrics: $0.002
├── Stock Prices: $0.001
├── Company News: $0.001
├── Analyst Estimates: $0.002
├── Insider Trades: $0.001
├── Twitter: $0.0004
├── YouTube: $0.002
└── LLM Analysis: $0.01-0.04
```
***
## Use Cases
### 1. Investment Research
Screen and analyze stocks before investing:
```python theme={null}
analyst.analyze_stock("NVDA", depth="deep")
```
### 2. Portfolio Monitoring
Daily updates on your holdings:
```python theme={null}
for ticker in ["AAPL", "MSFT", "GOOGL"]:
report = analyst.analyze_stock(ticker, depth="quick")
```
### 3. Earnings Season
Comprehensive earnings analysis:
```python theme={null}
analyst.analyze_stock("TSLA", depth="standard")
# Check estimates, actual results, guidance, reaction
```
### 4. Insider Tracking
Monitor insider activity:
```python theme={null}
report = analyst.analyze_stock("META", depth="standard")
print(report['raw_data']['insider_trades'])
```
### 5. Sentiment Analysis
Track market perception:
```python theme={null}
report = analyst.analyze_stock("COIN", depth="standard")
print(report['sentiment_analysis'])
```
***
## Compliance
**Disclaimer (Always Included):**
> This analysis is for informational purposes only and should not be
> considered personalized investment advice. Please conduct your own
> research and consult with licensed financial advisors before making
> investment decisions.
**Regulatory Compliance:**
* SEC Rule 15c2-1 (not investment advice)
* FINRA regulations (informational only)
* GDPR data privacy compliant
***
## Get Started
1. Sign up at [aisa.one](https://aisa.one)
2. Get your API key
3. Add credits (pay-as-you-go, minimum \$5)
4. Set environment variable: `export AISA_API_KEY="your-key"`
5. Run analysis: `python scripts/stock_analyst.py analyze --ticker AAPL`
***
## Full API Documentation
* **API Reference**: [https://aisa.one/docs/api-reference](https://aisa.one/docs/api-reference)
* **Complete Docs**: [https://aisa.one/docs/llms.txt](https://aisa.one/docs/llms.txt)
* **Support**: [support@aisa.one](mailto:support@aisa.one)
* **Discord**: [https://discord.gg/aisa](https://discord.gg/aisa)
***
## About AIsa
**AIsa** - Unified API infrastructure for AI agents.
Single API Key. Pay-Per-Use. Agent-Native.
* Website: [https://aisa.one](https://aisa.one)
* Documentation: [https://aisa.one/docs](https://aisa.one/docs)
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. Set your key and install the skill:
```bash theme={null}
export AISA_API_KEY="your-key"
npm install -g @aisa-one/cli
aisa skills install us-stock-analyst
```
4. Start a new agent session so the runtime loads the updated skill instructions.
## Related
Deep financial and filing data.
General asset analysis workflow.
Underlying financial endpoint docs.
# AIsa Web Search
Source: https://aisa.one/docs/agent-skills/web-search
Return current web results with titles, URLs, and snippets.
[View on GitHub ->](https://github.com/AIsa-team/agent-skills/tree/main/web-search)
**Simple current web search.** Return structured titles, URLs, and snippets through AIsa's web search endpoint.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install web-search
```
## What can agents do with it?
Search web sources for up-to-date information.
Return titles, URLs, and snippets for agent review.
Find sources before writing or analysis.
Feed structured links into a larger workflow.
## Setup
This skill requires the `AISA_API_KEY` environment variable. When installed as a Claude plugin, the key is configured via the plugin's `userConfig`.
## Usage
Run the search client with the `web` subcommand:
```bash theme={null}
python3 ${CLAUDE_PLUGIN_ROOT}/skills/web-search/scripts/search_client.py web --query "" --count
```
### Arguments
| Argument | Required | Default | Description |
| ---------------- | -------- | ------- | --------------------------------- |
| `--query` / `-q` | Yes | — | The search query string |
| `--count` / `-c` | No | 10 | Maximum number of results (1–100) |
### Example
```bash theme={null}
python3 ${CLAUDE_PLUGIN_ROOT}/skills/web-search/scripts/search_client.py web --query "latest AI agent frameworks 2026" --count 5
```
## Output
The script prints structured results including:
* **Title** — Page title
* **URL** — Direct link to the source
* **Snippet** — Content excerpt relevant to the query
## When to Use
Use this skill when the user asks to search the web, find information online, look up recent events, or needs general web results. This is the most versatile search tool for broad queries.
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. Set your key and install the skill:
```bash theme={null}
export AISA_API_KEY="your-key"
npm install -g @aisa-one/cli
aisa skills install web-search
```
4. Start a new agent session so the runtime loads the updated skill instructions.
## Related
Hybrid web and scholarly retrieval.
Web search with depth and filter controls.
Broader search coverage with multiple providers.
# X Intelligence Automation
Source: https://aisa.one/docs/agent-skills/x-intelligence-automation
Monitor X/Twitter competitors, influencers, trends, and conversations.
[View on GitHub ->](https://github.com/AIsa-team/agent-skills/tree/main/x-intelligence-automation)
**X intelligence for agents.** Monitor profiles, tweets, trends, and engagement signals through the AIsa relay.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install x-intelligence-automation
```
## What can agents do with it?
Track competitor accounts and market reactions.
Follow what key people are posting and discussing.
Spot emerging narratives in X/Twitter activity.
Summarize mentions, replies, and conversation themes.
## When to use
* The user wants Twitter/X research plus posting, liking, unliking, following, or unfollowing workflows.
* The task can use a Python client with `AISA_API_KEY` and explicit OAuth approval.
* The workflow needs a single package that covers read, post, and engagement actions.
## When NOT to use
* The user needs cookie extraction, password login, or a fully local Twitter client.
* The workflow must avoid relay-based network calls or media upload through `api.aisa.one`.
* The task needs undocumented secrets or browser-derived auth values.
## Quick Reference
* Required environment variable: `AISA_API_KEY`
* Read client: `scripts/twitter_client.py`
* Post client: `scripts/twitter_oauth_client.py`
* Engage client: `scripts/twitter_engagement_client.py`
* References: `references/post_twitter.md`, `references/engage_twitter.md`
## Setup
```bash theme={null}
export AISA_API_KEY="your-key"
```
## Common Commands
```bash theme={null}
python3 scripts/twitter_client.py search --query "AI agents" --type Latest
python3 scripts/twitter_oauth_client.py authorize
python3 scripts/twitter_engagement_client.py follow-user --user "@elonmusk"
```
## Capabilities
* Research Twitter/X accounts, tweets, trends, lists, communities, and Spaces.
* Publish text, image, and video posts after explicit OAuth approval.
* Like, unlike, follow, and unfollow after authorization exists.
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. Set your key and install the skill:
```bash theme={null}
export AISA_API_KEY="your-key"
npm install -g @aisa-one/cli
aisa skills install x-intelligence-automation
```
4. Start a new agent session so the runtime loads the updated skill instructions.
## Related
X/Twitter data access for intelligence tasks.
Multi-source recent evidence research.
Combine social signal with market and news data.
# YouTube SERP
Source: https://aisa.one/docs/agent-skills/youtube-search
YouTube search with ranked results and rich metadata for autonomous agents. Content gap analysis, competitor monitoring, keyword research, and region/language-specific audience research — powered by AIsa.
[View on GitHub →](https://github.com/AIsa-team/agent-skills/tree/main/youtube-serp)
**YouTube search results and rich metadata for autonomous agents.** One `AISA_API_KEY` returns ranked videos, view counts, publication dates, and thumbnails — filterable by country and language.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install youtube-serp
```
## What can agents do with it?
"Find what's ranking for 'AI agent tutorial' that our channel doesn't cover."
"Track new uploads from the top 5 channels in this niche."
"Which variations of 'RAG' pull the biggest view counts?"
"Surface top ML content in Japan (jp/ja) vs. the US (us/en)."
"What thumbnails and titles work for agent demos?"
"Flag videos with unusual velocity relative to channel baseline."
## Core capabilities
* **Keyword search** — ranked YouTube results for any query
* **Regional targeting** — `gl` (country: `us`, `jp`, `cn`, …) and `hl` (interface language: `en`, `ja`, `zh-CN`, …)
* **Rich metadata** — titles, channels, view counts, publication dates, durations, thumbnails
* **Pagination** — filter tokens for navigating beyond the first page
## Quick start
```bash theme={null}
export AISA_API_KEY="your-key"
```
### Basic search
```bash theme={null}
curl "https://api.aisa.one/apis/v1/youtube/search?engine=youtube&q=AI+agents+tutorial" \
-H "Authorization: Bearer $AISA_API_KEY"
```
### Region + language
```bash theme={null}
# ML content in Japan, Japanese interface
curl "https://api.aisa.one/apis/v1/youtube/search?engine=youtube&q=machine+learning&gl=jp&hl=ja" \
-H "Authorization: Bearer $AISA_API_KEY"
# AI trends in US, English interface
curl "https://api.aisa.one/apis/v1/youtube/search?engine=youtube&q=AI+trends+2026&gl=us&hl=en" \
-H "Authorization: Bearer $AISA_API_KEY"
```
### Pagination
The response includes a pagination token you can pass back to fetch the next page:
```bash theme={null}
curl "https://api.aisa.one/apis/v1/youtube/search?engine=youtube&q=AI+agents&sp=NEXT_PAGE_TOKEN" \
-H "Authorization: Bearer $AISA_API_KEY"
```
## Python client
```bash theme={null}
# Basic
python3 scripts/youtube_client.py search --query "autonomous agents"
# With country
python3 scripts/youtube_client.py search --query "coding tutorial" --country us
# With country + language
python3 scripts/youtube_client.py search --query "機械学習" --country jp --lang ja
```
## Endpoint reference
| Endpoint | Method | Purpose |
| ----------------- | ------ | --------------------------------------------------------------- |
| `/youtube/search` | GET | [YouTube search](/docs/api-reference/search/get_youtube-search) |
**Common parameters:**
* `engine` — always `youtube`
* `q` — search query (required)
* `gl` — country code (`us`, `jp`, `cn`, etc.)
* `hl` — language code (`en`, `ja`, `zh-CN`, etc.)
* `sp` — pagination token
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. `export AISA_API_KEY="your-key"` and install the skill:
```bash theme={null}
npm install -g @aisa-one/cli
aisa skills install youtube-serp
```
## Related
Full endpoint reference with interactive playground.
Combine YouTube search with web, scholar, and Tavily.
Handling YouTube API-level errors.
# YouTube Search
Source: https://aisa.one/docs/agent-skills/youtube-search-skill
Search YouTube videos, channels, and playlists with one AIsa key.
[View on GitHub ->](https://github.com/AIsa-team/agent-skills/tree/main/youtube-search)
**YouTube search without separate Google setup.** Search videos, channels, and playlists through AIsa with one API key.
## Install
First, install the AIsa CLI if you have not already:
```bash theme={null}
npm install -g @aisa-one/cli
```
Then install the skill:
```bash theme={null}
aisa skills install youtube-search
```
## What can agents do with it?
Find videos and channels around a topic.
Identify what is gaining attention on YouTube.
Monitor channels and content formats in a niche.
Gather video-first evidence for research workflows.
## Quick Start
```bash theme={null}
# Search for videos (using requests — recommended)
python <<'EOF'
import os, json, requests
results = requests.get(
'https://api.aisa.one/apis/v1/youtube/search',
headers={'Authorization': f'Bearer {os.environ["AISA_API_KEY"]}'},
params={'engine': 'youtube', 'q': 'coding tutorial'}
).json()
print(json.dumps(results, indent=2))
EOF
```
## Base URL
```
https://api.aisa.one/apis/v1/youtube/search
```
All YouTube search requests go through this single endpoint. AIsa handles authentication with the underlying YouTube data source — you only need your AIsa API key.
## Authentication
All requests require the AIsa API key in the Authorization header:
```
Authorization: Bearer $AISA_API_KEY
```
**Environment Variable:** Set your API key as `AISA_API_KEY`:
```bash theme={null}
export AISA_API_KEY="YOUR_AISA_API_KEY"
```
### Getting Your API Key
1. Sign in or create an account at [AIsa Console](https://console.aisa.one)
2. Navigate to your Dashboard
3. Copy your API key
## API Reference
### YouTube Search
```bash theme={null}
GET /apis/v1/youtube/search
```
#### Query Parameters
| Parameter | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------ |
| `engine` | string | Yes | Must be `youtube` |
| `q` | string | Yes | Search query (same syntax as YouTube search box) |
| `sp` | string | No | YouTube filter token for pagination or advanced filters |
| `gl` | string | No | Country code for localized results (e.g., `us`, `jp`, `gb`). Not all country codes are supported — see notes below |
| `hl` | string | No | Interface language (e.g., `en`, `zh`, `ja`) |
#### Example: Basic Search
```bash theme={null}
curl -s -X GET "https://api.aisa.one/apis/v1/youtube/search?engine=youtube&q=machine+learning+tutorial" \
-H "Authorization: Bearer $AISA_API_KEY"
```
#### Example: Search with Country & Language
```bash theme={null}
curl -s -X GET "https://api.aisa.one/apis/v1/youtube/search?engine=youtube&q=AI+news&gl=us&hl=en" \
-H "Authorization: Bearer $AISA_API_KEY"
```
#### Example: Pagination with `sp` Token
```bash theme={null}
# Use the sp token from a previous response to get the next page
curl -s -X GET "https://api.aisa.one/apis/v1/youtube/search?engine=youtube&q=python+tutorial&sp=EgIQAQ%3D%3D" \
-H "Authorization: Bearer $AISA_API_KEY"
```
#### Response
The API returns structured YouTube search results including video metadata, channel info, thumbnails, and pagination tokens.
**Note:** The response structure may vary by query language. English queries typically return results in the `videos` array. Some non-English queries may return results grouped in a `sections` array instead. Always check for both fields.
```json theme={null}
{
"search_metadata": {
"status": "Success",
"total_time_taken": 1.2
},
"search_parameters": {
"engine": "youtube",
"q": "machine learning tutorial"
},
"next_page_token": "CBQQABoCEgA%3D",
"videos": [
{
"position_on_page": 1,
"title": "Machine Learning Full Course for Beginners",
"link": "https://www.youtube.com/watch?v=abc123xyz",
"channel": {
"name": "Tech Academy",
"link": "https://www.youtube.com/channel/UCxyz123",
"thumbnail": "https://yt3.ggpht.com/..."
},
"published_date": "2 months ago",
"views": 1500000,
"length": "3:45:20",
"description": "Complete machine learning tutorial...",
"thumbnail": {
"static": "https://i.ytimg.com/vi/abc123xyz/hq720.jpg",
"rich": "https://i.ytimg.com/an_webp/abc123xyz/mqdefault_6s.webp"
}
}
]
}
```
**Alternate response structure (non-English / some queries):**
Some queries return results grouped in `sections` instead of a flat `videos` array:
```json theme={null}
{
"sections": [
{
"title": "搜索结果",
"videos": [
{
"title": "编程教程...",
"link": "https://www.youtube.com/watch?v=...",
...
}
]
}
]
}
```
**Parsing both formats:**
```python theme={null}
# Handle both response structures
videos = results.get('videos', [])
if not videos and 'sections' in results:
for section in results['sections']:
videos.extend(section.get('videos', []))
```
### Advanced Search Tips
YouTube's `q` parameter supports the same search syntax as the YouTube search box:
| Search Syntax | Description | Example |
| -------------- | ----------------------- | ----------------------------------- |
| Basic keywords | Standard search | `q=python tutorial` |
| Exact phrase | Quote for exact match | `q="machine learning basics"` |
| Channel filter | Search within a channel | `q=channel:GoogleDevelopers python` |
| Duration hint | Combine with keywords | `q=python tutorial long` |
### Using the `sp` Filter Token
The `sp` parameter accepts YouTube's encoded filter tokens. Common values:
| Filter | `sp` Value | Description |
| --------------- | -------------- | ------------------------------- |
| Videos only | `EgIQAQ%3D%3D` | Filter to video results only |
| Channels only | `EgIQAg%3D%3D` | Filter to channel results only |
| Playlists only | `EgIQAw%3D%3D` | Filter to playlist results only |
| Live now | `EgJAAQ%3D%3D` | Currently live streams |
| This week | `EgIIAw%3D%3D` | Uploaded this week |
| This month | `EgIIBA%3D%3D` | Uploaded this month |
| Short (\<4 min) | `EgIYAQ%3D%3D` | Short duration videos |
| Long (>20 min) | `EgIYAg%3D%3D` | Long duration videos |
You can also obtain `sp` tokens from the `next_page_token` field in previous API responses for pagination.
#### Pagination
Use the `next_page_token` from a response to fetch the next page of results:
```python theme={null}
# First page
results = requests.get(
'https://api.aisa.one/apis/v1/youtube/search',
headers=headers,
params={'engine': 'youtube', 'q': 'python tutorial'}
).json()
# Get next page token
next_token = results.get('next_page_token')
if next_token:
page2 = requests.get(
'https://api.aisa.one/apis/v1/youtube/search',
headers=headers,
params={'engine': 'youtube', 'q': 'python tutorial', 'sp': next_token}
).json()
```
## Code Examples
### JavaScript
```javascript theme={null}
const headers = {
'Authorization': `Bearer ${process.env.AISA_API_KEY}`
};
// Basic YouTube search
const results = await fetch(
'https://api.aisa.one/apis/v1/youtube/search?engine=youtube&q=AI+agents+tutorial',
{ headers }
).then(r => r.json());
console.log(results.videos);
// Search with filters
const filtered = await fetch(
'https://api.aisa.one/apis/v1/youtube/search?engine=youtube&q=deep+learning&gl=us&hl=en&sp=EgIQAQ%3D%3D',
{ headers }
).then(r => r.json());
```
### Python
```python theme={null}
import os
import requests
headers = {'Authorization': f'Bearer {os.environ["AISA_API_KEY"]}'}
# Basic YouTube search
results = requests.get(
'https://api.aisa.one/apis/v1/youtube/search',
headers=headers,
params={'engine': 'youtube', 'q': 'AI agents tutorial'}
).json()
for video in results.get('videos', []):
print(f"{video['title']} - {video.get('views', 'N/A')} views")
# Search with country and language
results_jp = requests.get(
'https://api.aisa.one/apis/v1/youtube/search',
headers=headers,
params={'engine': 'youtube', 'q': 'プログラミング', 'gl': 'jp', 'hl': 'ja'}
).json()
```
### Python (urllib, no dependencies)
> **Note:** `urllib` may encounter 403 errors due to its default User-Agent. Using `requests` (above) is recommended. If you must use `urllib`, always set a custom User-Agent header.
```python theme={null}
import urllib.request, urllib.parse, os, json
def youtube_search(query, gl=None, hl=None, sp=None):
"""Search YouTube via AIsa API."""
params = {'engine': 'youtube', 'q': query}
if gl: params['gl'] = gl
if hl: params['hl'] = hl
if sp: params['sp'] = sp
url = f'https://api.aisa.one/apis/v1/youtube/search?{urllib.parse.urlencode(params)}'
req = urllib.request.Request(url)
req.add_header('Authorization', f'Bearer {os.environ["AISA_API_KEY"]}')
req.add_header('User-Agent', 'AIsa-Skill/1.0')
return json.load(urllib.request.urlopen(req))
# Search
results = youtube_search('OpenClaw tutorial', gl='us', hl='en')
# Handle both response formats
videos = results.get('videos', [])
if not videos and 'sections' in results:
for section in results['sections']:
videos.extend(section.get('videos', []))
print(json.dumps(videos[:3], indent=2))
```
## Combining with Other AIsa APIs
One of the key advantages of AIsa is the **unified API key**. Use the same `AISA_API_KEY` to combine YouTube search with other AIsa capabilities:
### YouTube Search + LLM Summary
```python theme={null}
import os, requests, json
headers = {'Authorization': f'Bearer {os.environ["AISA_API_KEY"]}'}
# 1. Search YouTube
yt_results = requests.get(
'https://api.aisa.one/apis/v1/youtube/search',
headers=headers,
params={'engine': 'youtube', 'q': 'latest AI developments 2026'}
).json()
# 2. Summarize with LLM (same API key!)
video_titles = [v['title'] for v in yt_results.get('videos', [])[:5]]
summary = requests.post(
'https://api.aisa.one/v1/chat/completions',
headers={**headers, 'Content-Type': 'application/json'},
json={
'model': 'qwen3-flash',
'messages': [
{'role': 'user', 'content': f'Summarize the trending AI topics based on these YouTube videos: {json.dumps(video_titles)}'}
]
}
).json()
print(summary['choices'][0]['message']['content'])
```
### YouTube Search + Web Search
```python theme={null}
# Search both YouTube and the web for comprehensive research
yt_results = requests.get(
'https://api.aisa.one/apis/v1/youtube/search',
headers=headers,
params={'engine': 'youtube', 'q': 'AI agent frameworks 2026'}
).json()
web_results = requests.get(
'https://api.aisa.one/apis/v1/search/smart',
headers=headers,
params={'q': 'AI agent frameworks 2026'}
).json()
```
## Notes
* All requests are **pay-per-use** through your AIsa balance — no separate YouTube API quota management
* The `engine` parameter must always be set to `youtube`
* Video URLs follow the format `https://www.youtube.com/watch?v={videoId}`
* Channel URLs follow the format `https://www.youtube.com/channel/{channelId}`
* Use `next_page_token` from previous responses as the `sp` value for pagination
* The `gl` (country) parameter does **not** support all ISO country codes. Known unsupported values include `cn` (China). If you get `Unsupported value` errors, try omitting `gl` or use a different country code
* Non-English queries may return results in a `sections` array instead of a flat `videos` array — always handle both formats
* IMPORTANT: Python `urllib` may return 403 errors due to its default User-Agent. Use the `requests` library instead, or add a custom `User-Agent` header
* IMPORTANT: When using curl commands, ensure environment variables like `$AISA_API_KEY` are properly expanded
* IMPORTANT: When piping curl output to `jq`, use `-s` flag and ensure the API key is set
## Error Handling
| Status | Meaning |
| ------ | ---------------------------------------------------- |
| 200 | Successful search response |
| 400 | Invalid request parameters (missing `engine` or `q`) |
| 401 | Unauthorized — invalid or missing AIsa API key |
| 429 | Rate limited |
| 500 | Internal server error |
### Troubleshooting: API Key Issues
1. Check that the `AISA_API_KEY` environment variable is set:
```bash theme={null}
echo $AISA_API_KEY
```
2. Verify the API key works with a simple test:
```bash theme={null}
python <<'EOF'
import os, json, requests
try:
result = requests.get(
'https://api.aisa.one/apis/v1/youtube/search',
headers={'Authorization': f'Bearer {os.environ["AISA_API_KEY"]}'},
params={'engine': 'youtube', 'q': 'test'}
).json()
videos = result.get('videos', [])
print(f"✅ API key is valid. Results: {len(videos)} videos found")
except Exception as e:
print(f"❌ Error: {e}")
EOF
```
### Troubleshooting: No Results
1. Verify your query is not empty
2. Try a broader search term
3. If using `gl`, verify the country code is supported — not all ISO codes work (e.g., `cn` is unsupported). Try omitting `gl` to test
4. Ensure `engine=youtube` is included in every request
5. Check if results are in `sections` instead of `videos` (common for non-English queries)
## Resources
* [AIsa API Documentation](https://aisa.one/docs)
* [AIsa Console](https://console.aisa.one)
* [YouTube Search API Reference](https://aisa.one/docs/api-reference/search/get_youtube-search)
* [AIsa Smart Search API](https://aisa.one/docs/api-reference/scholar/post_scholar-search-mixed)
* [AIsa Chat Completions API](https://aisa.one/docs/api-reference/chat/post_chat-completions)
* [ClawHub Skills](https://clawhub.ai)
## Get started
1. Sign up at [aisa.one](https://aisa.one) (new accounts start with \$2 free credit).
2. Generate an API key from the console.
3. Set your key and install the skill:
```bash theme={null}
export AISA_API_KEY="your-key"
npm install -g @aisa-one/cli
aisa skills install youtube-search
```
4. Start a new agent session so the runtime loads the updated skill instructions.
## Related
Existing SERP-oriented YouTube skill.
AIsa-branded YouTube search workflow.
Endpoint reference for YouTube search.
# Credit Balance
Source: https://aisa.one/docs/api-reference/credits-balance
Read the current wallet balance and the amount available to an API key.
Read the current wallet balance and the amount available to the API key used for
the request. This is a read-only endpoint and does not accept query parameters.
## Request
```bash curl theme={null}
curl -sS https://api.aisa.one/v1/credits/balance \
-H "Authorization: Bearer $AISA_API_KEY"
```
The endpoint requires a standard AIsa API key in the `Authorization` header. It
does not accept MPP payment authorization.
## Response
```json theme={null}
{
"currency": "USD",
"account_balance_micros_usd": 3250000,
"available_balance_micros_usd": 1750000,
"go_to_market_balance_micros_usd": 750000,
"gtm": {
"active": true,
"balance_micros_usd": 750000,
"trial_balance_micros_usd": 250000,
"trial_expires_at": "2026-09-30T12:00:00Z",
"subscription_balance_micros_usd": 500000,
"expires_at": "2026-10-31T12:00:00Z"
},
"api_key": {
"unlimited": false,
"remaining_micros_usd": 1000000,
"used_micros_usd": 300000
},
"as_of": "2026-08-03T12:00:00Z"
}
```
All monetary values are integer microdollars. One dollar is `1,000,000`
microdollars. This avoids floating-point rounding in automated clients.
### Top-level fields
| Field | Type | Description |
| --------------------------------- | ------- | ------------------------------------------------------------------------- |
| `currency` | string | The balance currency. Currently always `USD`. |
| `account_balance_micros_usd` | integer | Effective PAYG balance plus the GTM balance. |
| `available_balance_micros_usd` | integer | PAYG balance available to the authenticated API key plus the GTM balance. |
| `go_to_market_balance_micros_usd` | integer | Total GTM balance. This equals `gtm.balance_micros_usd`. |
| `gtm` | object | GTM balance details, including trial and subscription balances. |
| `api_key` | object | Remaining and used balance for this API key. |
| `as_of` | string | UTC timestamp for the balance snapshot. |
### GTM fields
| Field | Type | Description |
| --------------------------------- | ------- | ---------------------------------------------------------------------------------- |
| `active` | boolean | Whether GTM funds are available or a GTM subscription period exists. |
| `balance_micros_usd` | integer | Total GTM balance. |
| `trial_balance_micros_usd` | integer | Unexpired GTM trial balance. |
| `trial_expires_at` | string | UTC expiry of the GTM trial balance. Omitted when no trial expiry applies. |
| `subscription_balance_micros_usd` | integer | GTM subscription balance. |
| `expires_at` | string | UTC expiry of the current GTM subscription period. Omitted when no period applies. |
### Balance calculation
The PAYG balance is the sum of the effective cash, Trial, promo, and credit
buckets. An expired Trial balance is excluded.
`go_to_market_balance_micros_usd` is the GTM balance. It is also exposed as
`gtm.balance_micros_usd`, with its trial and subscription components in the
`gtm` object.
`account_balance_micros_usd` is the PAYG balance plus
`go_to_market_balance_micros_usd`.
For a limited API key, `available_balance_micros_usd` is the lower of the PAYG
balance and `api_key.remaining_micros_usd`, plus the GTM balance. For an
unlimited API key, it equals the PAYG balance plus the GTM balance. The PAYG
portion available to the key is clamped at zero when the PAYG or key balance is
negative.
Expired Trial credit is not included in the effective balance.
## Errors
* `401 Unauthorized` — the API key is missing, invalid, revoked, or expired.
* `403 Forbidden` — the user is disabled or the key is not allowed from the
requesting IP address.
* `500 Internal Server Error` — the balance snapshot could not be read.
Errors from this endpoint use a string-valued `error` field:
```json theme={null}
{
"error": "invalid api key"
}
```
See [Error Codes](/docs/api-reference/errors) for general status-code and retry
guidance, and [Rate Limits](/docs/api-reference/rate-limits) for request limits.
# Error Codes
Source: https://aisa.one/docs/api-reference/errors
HTTP status codes, error payload shape, and recommended retry strategies for the AIsa API.
Every AIsa API response follows standard HTTP semantics. Successful calls return `2xx`; client errors return `4xx`; server or upstream errors return `5xx`. This page documents the error model and how to respond to each case.
## Error response shape
Error responses are always JSON with an `error` object:
```json theme={null}
{
"error": {
"type": "authentication_error",
"code": "invalid_api_key",
"message": "The API key provided is invalid or has been revoked.",
"request_id": "req_01JABCD9F1YYEXAMPLE"
}
}
```
| Field | Meaning |
| ------------ | ------------------------------------------------------------------------------------------------------------------------ |
| `type` | High-level category — `authentication_error`, `invalid_request_error`, `rate_limit_error`, `api_error`, `upstream_error` |
| `code` | Machine-readable code (stable; safe to match on) |
| `message` | Human-readable explanation |
| `request_id` | Unique ID for the request. **Include in support tickets.** |
## Status codes
The request payload is malformed: missing required parameter, wrong type, invalid JSON, or a value out of range.
**Common codes:** `invalid_request`, `missing_parameter`, `invalid_parameter_type`, `json_parse_error`
**Action:** Fix the request before retrying. Do not retry automatically.
No API key, malformed `Authorization` header, or the key is invalid/revoked.
**Common codes:** `missing_api_key`, `invalid_api_key`, `revoked_api_key`
**Action:** Verify the key in your [Dashboard](https://console.aisa.one) and resend with `Authorization: Bearer YOUR_AISA_API_KEY`.
The key is valid but lacks permission for this endpoint, model, or region.
**Common codes:** `insufficient_permissions`, `model_not_allowed`, `region_blocked`
**Action:** Check your workspace plan and per-key scopes. Contact support if the restriction is unexpected.
The endpoint path, model ID, or resource ID does not exist.
**Common codes:** `unknown_model`, `resource_not_found`, `unknown_endpoint`
**Action:** Double-check the model name against the [model catalog](/docs/guides/models) and the endpoint path against the [API reference](/docs/api-reference/chat/post_chat-completions).
Syntax is valid, but the request violates a business rule — e.g., `max_tokens` above the model's limit, an unsupported combination of parameters, or content that violates the upstream provider's safety policy.
**Common codes:** `max_tokens_exceeded`, `unsupported_parameter`, `content_policy_violation`
**Action:** Read the `message` carefully and adjust the payload. Do not retry blindly.
You hit a rate limit — either your account RPM/TPM cap or the upstream provider's throttle.
**Common codes:** `rate_limit_exceeded`, `upstream_rate_limit`, `quota_exceeded`
**Headers returned:**
* `Retry-After` — seconds until the next attempt is allowed
* `X-RateLimit-Limit` — your current limit
* `X-RateLimit-Remaining` — requests remaining in the window
* `X-RateLimit-Reset` — UNIX timestamp when the counter resets
**Action:** Back off and retry (see [Retry guidance](#retry-guidance) below). See [Rate Limits](/docs/api-reference/rate-limits) for the full quota table.
An unexpected error on AIsa's side. The `request_id` field is critical for support investigation.
**Action:** Retry with exponential backoff (see below). If the error persists, contact [developer@aisa.one](mailto:developer@aisa.one) with the `request_id`.
AIsa could not reach or got an error from the upstream model provider (OpenAI, Anthropic, etc.). Often transient.
**Common codes:** `upstream_unavailable`, `upstream_timeout`, `gateway_error`
**Action:** Retry with exponential backoff. For persistent issues, switch to an alternate model — the gateway can route Claude requests through different upstream deployments.
## Retry guidance
All `GET` requests and most chat/completions calls are safe to retry. Do not blindly retry `POST` requests that create side effects (e.g., posting a tweet).
On 429 responses, always honor the `Retry-After` header. On 5xx without `Retry-After`, fall back to exponential backoff.
Start with 1 s; double each attempt; add ±25% jitter; cap at 30 s.
```
1.0s → 2.0s → 4.0s → 8.0s → 16.0s → 30.0s (max)
```
Give up after 3–5 attempts or 60 s total — whichever comes first. Surface the error to the caller.
`400`, `401`, `403`, `404`, and `422` indicate bugs in the request itself. Retrying will not help.
### Minimal retry example (Python)
```python theme={null}
import time, random
from openai import OpenAI, APIError, RateLimitError
client = OpenAI(base_url="https://api.aisa.one/v1", api_key="sk-aisa-...")
def call_with_retry(messages, model="gpt-5", max_retries=5):
delay = 1.0
for attempt in range(max_retries):
try:
return client.chat.completions.create(model=model, messages=messages)
except RateLimitError as e:
wait = getattr(e.response.headers, "Retry-After", None) or delay
time.sleep(float(wait) * (1 + random.uniform(-0.25, 0.25)))
except APIError as e:
if e.status_code >= 500:
time.sleep(delay * (1 + random.uniform(-0.25, 0.25)))
else:
raise
delay = min(delay * 2, 30)
raise RuntimeError("Exceeded max retries")
```
## Getting help
When reporting an issue to [developer@aisa.one](mailto:developer@aisa.one), include:
* The `request_id` from the error response
* The HTTP status code and `error.code`
* Your model ID and a minimal reproduction (curl with a redacted key)
* The approximate timestamp of the failing request
# Rate Limits
Source: https://aisa.one/docs/api-reference/rate-limits
Request-per-minute, token-per-minute, and concurrency limits on the AIsa API, how to read rate-limit headers, and how to request a quota increase.
Every AIsa API endpoint applies rate limits to protect both the gateway and upstream providers. Limits are enforced per API key. This page documents the defaults, how to read the rate-limit headers, and how to handle throttling gracefully.
## What's limited
AIsa enforces three dimensions of capacity:
| Dimension | Applies to | What it measures |
| --------------- | ---------------------------------- | ------------------------------------------- |
| **RPM** | All endpoints | Requests per minute |
| **TPM** | LLM inference endpoints | Input + output tokens per minute (combined) |
| **Concurrency** | Streaming + long-running endpoints | Simultaneous in-flight requests |
TPM counts **input + output** tokens together. A request that sends 10K tokens and generates 5K tokens consumes 15K TPM.
## Default limits per tier
| Tier | RPM | TPM | Concurrency | Who gets it |
| -------------- | -----: | --------: | ----------: | ---------------------------------------- |
| **Free** | 60 | 60,000 | 5 | New accounts with \$2 signup credit |
| **Starter** | 600 | 600,000 | 20 | After first paid top-up |
| **Growth** | 3,000 | 3,000,000 | 50 | \$500+ topped up OR approved application |
| **Enterprise** | Custom | Custom | Custom | Contact sales |
Moving from **Free → Starter** is automatic on your first top-up in the [AIsa console](https://console.aisa.one/). Higher tiers require a quota-increase request — see [Requesting a quota increase](#requesting-a-quota-increase).
### Per-endpoint overrides
Some endpoints have tighter default limits independent of your tier because the upstream provider caps throughput:
| Endpoint group | Default override |
| -------------------------------------- | ---------------------------- |
| `POST /chat/completions` (GPT-5.4) | RPM capped at upstream quota |
| `POST /messages` (Claude Opus) | RPM capped at upstream quota |
| `POST /perplexity/sonar-deep-research` | 5 RPM per key (long-running) |
| `/v1beta/models/*:generateContent` | 30 RPM per key |
## Reading rate-limit headers
Every response (including `429`) includes four headers:
```
X-RateLimit-Limit-Requests: 600
X-RateLimit-Remaining-Requests: 587
X-RateLimit-Limit-Tokens: 600000
X-RateLimit-Remaining-Tokens: 592104
X-RateLimit-Reset-Requests: 1745012400
X-RateLimit-Reset-Tokens: 1745012400
Retry-After: 3
```
| Header | Meaning |
| -------------------------------- | ---------------------------------------------- |
| `X-RateLimit-Limit-Requests` | Your RPM cap |
| `X-RateLimit-Remaining-Requests` | Requests remaining this minute |
| `X-RateLimit-Limit-Tokens` | Your TPM cap |
| `X-RateLimit-Remaining-Tokens` | Tokens remaining this minute |
| `X-RateLimit-Reset-Requests` | UNIX timestamp when the request counter resets |
| `X-RateLimit-Reset-Tokens` | UNIX timestamp when the token counter resets |
| `Retry-After` | (429 only) Seconds until you can retry |
## Handling 429 responses
The response body follows the standard [error shape](/docs/api-reference/errors) with `error.type = "rate_limit_error"` and a `code` of `rate_limit_exceeded`, `upstream_rate_limit`, or `quota_exceeded`.
Always wait at least the number of seconds in `Retry-After` before the next attempt. Never retry immediately.
After the initial wait, double the delay on each subsequent 429, with ±25% jitter. Cap at 30 seconds. See the [retry example](/docs/api-reference/errors#retry-guidance).
Instead of tight retry loops, queue requests and drain them at a rate below your RPM. A simple token-bucket with a leak rate of `RPM/60` requests per second is robust.
Monitor `X-RateLimit-Remaining-*` on every response. When it drops below 10% of the limit, slow down preemptively — avoiding the 429 entirely.
## Example: staying under the limit
```python theme={null}
from openai import OpenAI
client = OpenAI(base_url="https://api.aisa.one/v1", api_key="sk-aisa-...")
response = client.chat.completions.with_raw_response.create(
model="gpt-5",
messages=[{"role": "user", "content": "Hello"}],
)
remaining = int(response.headers.get("x-ratelimit-remaining-requests", 1000))
if remaining < 50:
# Throttle preemptively — sleep a bit before the next call
time.sleep(1.0)
body = response.parse()
```
## Requesting a quota increase
If you need higher limits for production traffic:
1. Top up your balance in the [AIsa console](https://console.aisa.one/) — moving from Free → Starter is automatic.
2. For Growth or Enterprise tiers, email [developer@aisa.one](mailto:developer@aisa.one) with:
* Your workspace ID
* Expected peak RPM and TPM
* Which models or endpoints you need the increase for
* A brief description of your use case
Approvals for Growth typically land within one business day; Enterprise is negotiated with a dedicated account team.
## Related
Full list of HTTP status codes and recommended responses.
Per-request billing and rate-limit telemetry in the dashboard.
# Keyword Competitors
Source: https://aisa.one/docs/api-reference/similarweb/get_similarweb-search-keyword-competitors
openapi/similarweb.json GET /similarweb/search/keyword-competitors
Keyword Competitors — SimilarWeb
# Landing Pages
Source: https://aisa.one/docs/api-reference/similarweb/get_similarweb-search-landing-pages
openapi/similarweb.json GET /similarweb/search/landing-pages
Landing Pages — SimilarWeb
# SERP Players - Aggregated
Source: https://aisa.one/docs/api-reference/similarweb/get_similarweb-search-serp-players-aggregated
openapi/similarweb.json GET /similarweb/search/serp-players-aggregated
SERP Players - Aggregated — SimilarWeb
# SERP Players - Clicks over time
Source: https://aisa.one/docs/api-reference/similarweb/get_similarweb-search-serp-players-timeseries
openapi/similarweb.json GET /similarweb/search/serp-players-timeseries
SERP Players - Clicks over time — SimilarWeb
# Website Keywords
Source: https://aisa.one/docs/api-reference/similarweb/get_similarweb-search-website-keywords
openapi/similarweb.json GET /similarweb/search/website-keywords
Website Keywords — SimilarWeb
# Audience Interest
Source: https://aisa.one/docs/api-reference/similarweb/get_similarweb-website-audience-interest
openapi/similarweb.json GET /similarweb/website/audience-interest
Audience Interest — SimilarWeb
# Audience Overlap
Source: https://aisa.one/docs/api-reference/similarweb/get_similarweb-website-audience-overlap
openapi/similarweb.json GET /similarweb/website/audience-overlap
Audience Overlap — SimilarWeb
# Popular Pages
Source: https://aisa.one/docs/api-reference/similarweb/get_similarweb-website-popular-pages
openapi/similarweb.json GET /similarweb/website/popular-pages
Popular Pages — SimilarWeb
# Website Subdomains
Source: https://aisa.one/docs/api-reference/similarweb/get_similarweb-website-subdomains
openapi/similarweb.json GET /similarweb/website/subdomains
Website Subdomains — SimilarWeb
# Website Technologies
Source: https://aisa.one/docs/api-reference/similarweb/get_similarweb-website-technologies
openapi/similarweb.json GET /similarweb/website/technologies
Website Technologies — SimilarWeb