# AI assistants

> Ask ChatGPT, Gemini, Copilot Search, Google AI Mode and Brave's AI answer by API as a logged-out user: answers, cited sources, products and brand mentions.

People now ask AI assistants what to buy, which tool to use and who to hire. The AI assistant endpoints show you what those assistants answer: send a `prompt`, and SerpKite asks the assistant the way a logged-out visitor would, in a standard browser, and returns its answer with the sources it cited, the searches it ran, the products and places it showed, and `mentions` for the brands and domains you `track`.

| Endpoint | Assistant | Credits | Typical latency | `country` | Also returns |
| --- | --- | --- | --- | --- | --- |
| [`/v1/chatgpt`](https://serpkite.com/docs/endpoints/chatgpt) | ChatGPT (chatgpt.com) | 4 | 10–30 s | Asks from an exit in that country | `products`, `places`, `model` |
| [`/v1/gemini`](https://serpkite.com/docs/endpoints/gemini) | Google Gemini (gemini.google.com) | 3 | 5–30 s | Asks from an exit in that country | `model` |
| [`/v1/copilot`](https://serpkite.com/docs/endpoints/copilot) | Microsoft Copilot Search (bing.com/copilotsearch) | 3 | 15–40 s | Sets the market it answers for | `products` |
| [`/v1/ai_mode`](https://serpkite.com/docs/endpoints/ai_mode) | Google AI Mode (google.com (udm=50)) | 2 | 5–45 s | Sets the market it answers for | `products` |
| [`/v1/brave_ai`](https://serpkite.com/docs/endpoints/brave_ai) | Brave Search AI answers (Ask Brave) (search.brave.com) | 2 | 1–10 s | Sets the market it answers for | `search_queries`, `products` |

Google's **AI Overview**, the summary above ordinary results, comes with [`/v1/search`](https://serpkite.com/docs/endpoints/search) as `ai_overview` (`text`, `markdown`, `sources`) whenever the page shows one, at the price of the search.

## Ask an assistant

cURL:

```bash
curl https://api.serpkite.com/v1/chatgpt \
  -H "Authorization: Bearer $SERPKITE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt":"What are the best CRMs for a 10-person startup?","track":["hubspot.com","Pipedrive"]}'
```

TypeScript:

```ts
import { SerpKite } from "serpkite";

const sk = new SerpKite(); // reads SERPKITE_API_KEY
const res = await sk.chatgpt({ prompt: "What are the best CRMs for a 10-person startup?", track: ["hubspot.com","Pipedrive"] });
console.log(res.markdown);
for (const m of res.mentions ?? []) console.log(m.term, m.mentioned, m.cited, m.sources);
```

Python:

```python
from serpkite import SerpKite

sk = SerpKite()  # reads SERPKITE_API_KEY
res = sk.chatgpt(prompt="What are the best CRMs for a 10-person startup?", track=["hubspot.com","Pipedrive"])
print(res.markdown)
for m in res.mentions or []:
    print(m.term, m.mentioned, m.cited, m.sources)
```

Go:

```go
package main

import (
	"context"
	"fmt"
	"log"

	serpkite "github.com/serpkite/serpkite-go"
)

func main() {
	ctx := context.Background()
	c := serpkite.NewClient() // reads SERPKITE_API_KEY
	res, err := c.ChatGPT(ctx, serpkite.ChatGPTParams{Prompt: "What are the best CRMs for a 10-person startup?", Track: []string{"hubspot.com", "Pipedrive"}})
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(res.Markdown)
	for _, m := range res.Mentions {
		fmt.Println(m.Term, m.Mentioned, m.Cited, m.Sources)
	}
}
```

Every assistant takes the same body:

| Field | Meaning |
| --- | --- |
| `prompt` | The message, up to 4,000 characters. Required; `q` is not accepted. |
| `country` | ChatGPT and Gemini: ask as a visitor in that country, because they localise by the visitor's location. Copilot Search and Brave: the market they answer for. AI Mode: the country Google answers for; we ask from that country. |
| `language` | Interface language (not on `/v1/chatgpt`). The answer follows the prompt's language. |
| `web_search` | `/v1/chatgpt` only, default `true`: make ChatGPT search the web. `false` lets it decide. |
| `track` | Up to 20 brands or domains to check the answer for; each comes back in `mentions`. |
| `include_html` | Also return the answer's HTML. |
| `format`, `fields` | `markdown` or `compact` output and field projection, as on every endpoint. See [Output formats](https://serpkite.com/docs/output-formats). |
| `max_age` | Accept a cached answer up to this many seconds old, at half price. Answers are cached for at most an hour. |

## What comes back

```json
{
  "request": { "endpoint": "chatgpt", "prompt": "What are the best CRMs for a 10-person startup?", "country": "us", "web_search": true },
  "text": "For a 10-person startup, HubSpot CRM and Pipedrive are the usual shortlist…",
  "markdown": "For a 10-person startup, **HubSpot CRM** and **Pipedrive** are the usual shortlist [1](https://www.example.com/best-crm-for-startups)…",
  "model": "instant",
  "sources": [
    { "position": 1, "title": "The best CRM software for startups in 2026", "link": "https://www.example.com/best-crm-for-startups", "domain": "example.com", "cited": true },
    { "position": 2, "title": "Free CRM software | HubSpot", "link": "https://www.hubspot.com/products/crm", "domain": "hubspot.com", "cited": true }
  ],
  "search_queries": [],
  "products": [],
  "mentions": [
    { "term": "hubspot.com", "mentioned": false, "cited": true, "sources": [2], "text_position": -1 },
    { "term": "Pipedrive", "mentioned": true, "cited": false, "sources": [], "text_position": 0.071 }
  ],
  "meta": { "request_id": "req_01J8ZK4M6Q2V7", "credits_used": 4, "cached": false, "engine": "chatgpt", "latency_ms": 31840 }
}
```

- `text` and `markdown` are the answer. Citations in `markdown` are `[n](link)`, where `n` is a source's `position`.
- `sources` lists what the assistant cited (`cited: true`) or only showed beside the answer (`cited: false`).
- `search_queries` are the searches it ran, where the assistant shows them (Brave does; ChatGPT doesn't show them to guests).
- `products` and `places` are the product cards and local businesses the answer showed. Copilot Search's products are Bing's sponsored cards.
- `mentions` (with `track`) says, per term, whether the text names it, whether a cited source matches it, which sources and products match, and how early the text names it. See [AI visibility tracking](https://serpkite.com/docs/guides/ai-visibility-tracking).

## Price, time and limits

- **Price:** ChatGPT 4, Gemini 3, Copilot Search 3, Google AI Mode 2 and Brave AI 2 credits per answer. The batch lane does not halve AI answers, and a cache hit with `max_age` costs half. Failed, refused and empty answers are free, as with every SerpKite request.
- **Time:** most answers take 2–65 seconds, depending on the assistant (see the table), and a few up to 90. Requests wait up to 90 seconds, so give your HTTP client a timeout of at least 120 seconds. The official SDKs already do.
- **Answers that take longer:** when ChatGPT or Gemini is still writing at the 90-second mark, the request fails with `503 upstream_timeout` (free) and the message says the answer is being finished in the background. Send the same request again within 10 minutes and you get that answer, billed once as a normal answer; a retry that arrives before it is done waits for it. Batches do this for you.
- **Many prompts:** queue them with [`POST /v1/batches`](https://serpkite.com/docs/batch) (up to 100 per call, delivered by webhook), or save them as [monitors](https://serpkite.com/docs/endpoints/monitors) that ask every hour, day or week.
- **Variance:** assistants answer the same prompt differently from one run to the next, and differently by country. One answer is an anecdote; sample each prompt several times before drawing conclusions.

## How we ask, and which assistants answer

We ask every assistant like a logged-out visitor in a standard browser. We never sign in, never use accounts, and never send anything an assistant shows only to signed-in users (see [How we collect data](https://serpkite.com/legal/how-we-collect)). That decides which assistants we can offer. What we saw when we tested them on 2026-10-28:

- **ChatGPT** answers logged-out visitors reliably; a full answer takes about 17 seconds at the median, most within 10 to 30. It localises prices, shops and places to where the visitor is.
- **Brave Search's AI answer** is the fastest, 1 to 10 seconds, and shows the searches it ran.
- **Copilot Search** and **Gemini** take longer: Gemini 5–30 s, Copilot Search 15–40 s. The Copilot app itself (copilot.microsoft.com) asks every logged-out visitor to sign in; Copilot Search on Bing is the Copilot answer Microsoft gives guests.
- **Google AI Mode** answers for the country it is asked from. **AI Overview** appeared for most informational and commercial queries in our test, not for every query, and whether Google shows one also depends on where the search comes from.
- **Perplexity, Grok and Meta AI** asked every logged-out visitor to sign up or sign in, so we don't offer them. **duck.ai** needs a terms click-through before its first answer, so we don't offer it either.

When an assistant refuses a visit or shows a sign-in wall, the request fails with `503 upstream_blocked` and costs nothing. Assistants change what they show logged-out visitors; the [API changelog](https://serpkite.com/docs/changelog) records what we add or retire.

## Privacy

A prompt is treated like a search query: we never log it, and an answer is cached for at most an hour under a hash of the request. The prompt is sent to the assistant you chose, as a logged-out visitor, without your identity. See [Privacy and data retention](https://serpkite.com/docs/privacy-and-data-retention).

## Next steps

- [AI visibility tracking](https://serpkite.com/docs/guides/ai-visibility-tracking): Prompt sets, track and mentions, monitors and how to read variance.
- [ChatGPT reference](https://serpkite.com/docs/endpoints/chatgpt): Every parameter and response field of /v1/chatgpt.
- [MCP server](https://serpkite.com/docs/mcp): chatgpt, gemini, copilot, ai_mode and brave_ai tools for agents.
- [SDKs and agent frameworks](https://serpkite.com/docs/sdks): Assistant tools for the Vercel AI SDK, LangChain and CrewAI.
- [Batch requests](https://serpkite.com/docs/batch): Queue up to 100 prompts per call, results by webhook.