> ## Documentation Index
> Fetch the complete documentation index at: https://docs.querying.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# API do ChatGPT: respostas, fontes e consultas de busca

> Faça uma pergunta ao ChatGPT e receba a resposta, as fontes citadas, as consultas de busca, os produtos e conversas de acompanhamento.

`CHATGPT` pergunta ao ChatGPT com a busca na web ativada e retorna a resposta, cada fonte que ele encontrou, as buscas que fez e os cartões de produto e de lugar que desenhou.

| | |
| - | - |
| taskType | `CHATGPT` |
| Lê | `prompt` (recorre a `query`) |
| Créditos | 1 por resposta |
| País | Opcional, padrão `US`. `CN` e `HK` são perguntados de uma saída em Singapura com uma localização de dispositivo local. |
| Localização | Aceita `payload.location`. Veja [Regiões e localização](/pt/engines/capacity.md). |

## Requisição

```bash theme={"theme":"css-variables"}
curl -X POST https://api.querying.ai/v1/async/task \
  -H "Authorization: Bearer $QUERYING_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "taskType": "CHATGPT", "payload": { "prompt": "best CRM for a small team", "country": "US" } }'
```

## Resposta

| Campo | Tipo | Descrição |
| - | - | - |
| `text` | string | A resposta em texto simples. |
| `markdown` | string | A resposta em Markdown, com as fotos no lugar do seu cartão. Ligado por padrão. |
| `model` | string | O modelo com que o ChatGPT respondeu. |
| `sources` | array | Cada fonte: `position`, `url`, `label`, `footnote`, `datePublished`, `searchQueries`, `cited`, `citedText`. |
| `searchQueries` | string\[] | As buscas na web que o ChatGPT fez. Ligado por padrão. |
| `shoppingCards`, `inlineProducts` | array | Cartões de produto e nomes de produto com link na resposta. Ligado por padrão (`include.shopping`). |
| `ads` | array | Itens patrocinados na resposta. Ligado por padrão (`include.ads`). |
| `entities` | array | Lugares e produtos citados nos cartões, cada um com seu `type`, como `local_business` ou `product`, e seu `name`. |
| `entityDetails` | array | O painel de detalhes de cada cartão. Só com `include.entityDetails`. Veja [Detalhes dos cartões](#detalhes-dos-cartões). |
| `map` | array | Lugares mostrados nos cartões: endereço, coordenadas, telefone, avaliação e o emoji `icon` com que o ChatGPT os marca. `provider` é o feed de onde vem o registro (`serp` e `bright-feed` para Google Maps, `yelp-feed` para Yelp, `tripadvisor-feed` para Tripadvisor); `placeId` e `providerUrl` são o ID e a página do lugar nesse feed. `resolvedBy: "address"` marca um lugar que o ChatGPT encontrou pelo endereço escrito pelo modelo. `localName` é o outro nome do registro, como o nome coreano de uma loja na Coreia, e `closed` é `permanently` ou `temporarily`. |
| `citationPills` | array | As fontes por trás de cada chip de citação inline. |
| `layout` | object | O layout em cartões, quando o ChatGPT desenha a resposta em cartões. Veja abaixo. |
| `forms` | array | Formulários de acompanhamento na resposta, quando houver. Veja [Conversas](#continuar-uma-conversa-depois). |
| `conversation` | object | `id`, `turn` e `expiresAt` da conversa a que a resposta pertence. |
| `html` | object | A tela que o ChatGPT mostrou. Só com `include.html`. |
| `rawResponse` | array | Eventos de stream já interpretados. Só com `include.rawResponse`. |

Por exemplo, uma resposta resumida:

```json theme={"theme":"css-variables"}
{
  "text": "For a small team, HubSpot CRM and Pipedrive are the usual picks ...",
  "markdown": "For a small team, **HubSpot CRM** and **Pipedrive** are the usual picks ...",
  "model": "gpt-5-3",
  "sources": [
    {
      "position": 1,
      "url": "https://www.example.com/best-crm-small-business",
      "label": "The best CRM software for small businesses",
      "searchQueries": ["best CRM for small teams"],
      "cited": true,
      "citedText": ["HubSpot CRM and Pipedrive are the usual picks"]
    }
  ],
  "searchQueries": ["best CRM for small teams"],
  "conversation": { "id": "8f6c1d2e-...", "turn": 1, "expiresAt": "2026-10-19T12:00:00.000Z" }
}
```

Cada fonte traz `searchQueries` (as buscas cujos resultados a incluíram), `cited` (se a resposta a cita no texto) e `citedText` (o trecho da resposta que cada citação sustenta). Fontes que nenhuma busca retornou, como produtos, não têm `searchQueries`.

### Layout em cartões

`layout` aparece quando o ChatGPT desenha a resposta em cartões. Seus `nodes` seguem a ordem em que o ChatGPT os mostra:

| Nó | Contém |
| - | - |
| `row`, `box` | Grupos de cartões. |
| `title`, `text`, `badge` | O texto dos cartões. |
| `image` | A foto: `images[].url`, `thumbnailUrl` e `pageUrl`. |
| `markdown` | O restante da resposta. |
| `map` | Em `places`, a `position` de cada lugar que mostra. |
| `form` | Um formulário que pede para escolher uma pergunta de acompanhamento. Seus nós `choice` trazem as opções e a escolhida no início; seu nó `button` traz a pergunta que o ChatGPT enviaria em seguida (`prompt`). Os formulários ficam fora de `text` e `markdown`. |

## Flags include

`CHATGPT` respeita todas as flags de resposta. Todas vêm ligadas por padrão, exceto `rawResponse` e `html`; envie `false` para desligar uma.

| Flag | Padrão | Efeito |
| - | - | - |
| `markdown` | `true` | Adiciona `markdown`. |
| `searchQueries` | `true` | Adiciona `searchQueries`. |
| `shopping` | `true` | Adiciona os cartões de produto. |
| `ads` | `true` | Adiciona `ads`. |
| `rawResponse` | `false` | Adiciona `rawResponse`. Veja [Markdown e respostas brutas](/pt/engines/response-options.md). |
| `html` | `false` | Adiciona `html`, 0,25 crédito quando a página é armazenada. Recusado com `422 EVIDENCE_UNSUPPORTED` junto com `location`, `CN`, `HK` ou `continueFrom`. Veja [Páginas HTML](/pt/engines/html-pages.md). |
| `analysis` | `false` | Adiciona `analysis`, 1 crédito. Veja [Análise da resposta](/pt/engines/answer-analysis.md). |
| `citationAnalysis` | `false` | Executa uma [Citation Analysis](/pt/research/citation-analysis.md) sobre a resposta. |
| `entityDetails` | `false` | Adiciona `entityDetails` sem créditos extras. Veja [Detalhes dos cartões](#detalhes-dos-cartões). |

## Detalhes dos cartões

Com `include.entityDetails`, cada cartão da resposta (um produto, lugar, app ou marca) vem com o painel de detalhes que o ChatGPT abre quando o leitor clica nele: descrição, especificações, avaliações e as páginas que as sustentam. Os painéis citam páginas próprias e assim mostram fontes que o texto da resposta deixa de fora.

| Campo | Descrição |
| - | - |
| `name`, `category`, `query` | O cartão como a resposta o mostra, seu tipo (`product`, `local_business`, `software`, `organization`) e o nome com que o ChatGPT o pesquisou. |
| `status` | `ok`, ou `failed` com um `error`. |
| `markdown` | O painel em Markdown, com os chips de citação escritos como na resposta. |
| `sources` | Cada página citada uma vez, na ordem da primeira citação: `position`, `url`, `label`, `site`, `description`. |
| `products` | O cartão de compra no topo do painel de um produto: `title`, `price`, `merchant`, `rating`, `num_reviews`, `url` e `offers`, no formato de `shoppingCards[].products`. Só quando o painel mostra um. |
| `images` | As fotos do painel. |
| `complete` | `false` quando o ChatGPT parou de escrever o painel antes do fim. O texto e as fontes até esse ponto estão incluídos. |

`error` é `ENTITY_DETAIL_FAILED` se o pedido do painel falhar, `ENTITY_DETAIL_EMPTY` se o painel não tiver texto e `ENTITY_DETAIL_UNAVAILABLE` se faltarem os dados da conversa ou as credenciais do turno necessários. Os detalhes também funcionam com `payload.location`, `CN`, `HK`, respostas pelo caminho alternativo e `include.html`.

Um painel que o ChatGPT já escreveu antes volta em cerca de um segundo; um que ele escreve no pedido leva de 10 a 30 segundos, com até 4 painéis ao mesmo tempo. Até 20 cartões são abertos por resposta. Os painéis não somam créditos, e cada resposta de acompanhamento recebe seus próprios painéis.

```json theme={"theme":"css-variables"}
"entityDetails": [
  {
    "name": "Brooks Adrenaline GTS 25",
    "category": "product",
    "query": "Brooks Adrenaline GTS 25",
    "status": "ok",
    "markdown": "## Brooks Adrenaline GTS 25\n\nThe **Brooks Adrenaline GTS 25** is a **stability road running shoe** ... ([Brooks Running](https://www.brooksrunning.com/...))\n\n### Key specifications\n\n| Feature | Details |\n| --- | --- |\n| Heel-to-toe drop | 10 mm |\n...",
    "sources": [
      { "position": 1, "url": "https://www.brooksrunning.com/...", "label": "Men's Adrenaline GTS 25 Running Shoes | Brooks Running", "site": "Brooks Running" },
      { "position": 2, "url": "https://www.rei.com/product/249691/...", "label": "Brooks Adrenaline GTS 25 Road-Running Shoes - Men's | REI Co-op", "site": "REI" }
    ],
    "images": ["https://images.openai.com/..."],
    "complete": true
  }
]
```

## Perguntas de acompanhamento

`payload.followUps` faz até 4 perguntas a mais na mesma conversa depois da primeira resposta, em ordem. Cada item é um destes:

* `{ "prompt": "..." }`: uma pergunta sua.
* `{ "select": { "button": 0, "choices": { "budget": "Under $100" } } }`: pressiona o botão de um formulário de acompanhamento da resposta anterior.

`button` conta os botões da resposta a partir de 0 e, por padrão, é o primeiro. `choices` escolhe opções pelo `name` de cada nó `choice`, ou como um array na ordem do formulário; cada escolha é o `value` ou o `label` de uma opção, ou a sua posição a partir de 0. O que você não escolher mantém a opção que o ChatGPT deixou selecionada, então `{ "select": {} }` envia o `prompt` do próprio botão.

```json theme={"theme":"css-variables"}
{
  "taskType": "CHATGPT",
  "payload": {
    "prompt": "best CRM for a small team",
    "country": "US",
    "followUps": [{ "prompt": "Which of these has the best free plan?" }]
  }
}
```

Os campos de nível superior continuam sendo a primeira resposta. `followUps` na resposta lista cada resposta seguinte com a pergunta enviada (`prompt`), o que um `select` pressionou (`selection`: o `label` do botão e o valor de cada escolha) e os mesmos campos da primeira resposta.

Quando um `select` não pode ser pressionado, as perguntas restantes não são feitas, e `followUpsStopped` informa o `index` da pergunta, um `code` e uma `message`:

| Código | Significado |
| - | - |
| `NO_FOLLOW_UP_FORM` | A resposta anterior não mostrou formulário. |
| `BUTTON_NOT_FOUND` | Não há botão nesse índice. |
| `CHOICE_NOT_FOUND` | Não há escolha com esse nome. |
| `OPTION_NOT_FOUND` | Nenhuma opção corresponde à escolha. |
| `PROMPT_UNAVAILABLE` | O botão não tinha pergunta para enviar. |

A tarefa é concluída mesmo assim com as respostas obtidas. Cada resposta custa 1 crédito: a tarefa reserva créditos para todas as perguntas de acompanhamento e cobra apenas as respostas que devolve. `include.analysis`, `include.citationAnalysis` e `include.html` se aplicam à primeira resposta. Os outros mecanismos recusam `followUps` com `400 VALIDATION_ERROR`.

## Continuar uma conversa depois

Para ler uma resposta antes de escolher a próxima pergunta, envie uma nova tarefa `CHATGPT` com `payload.continueFrom` igual ao id de uma tarefa concluída e, junto, um `prompt` ou um `select` que pressiona um formulário da última resposta dessa tarefa (as mesmas regras de `followUps`).

```json theme={"theme":"css-variables"}
{
  "taskType": "CHATGPT",
  "payload": {
    "continueFrom": "8f6c1d2e-...",
    "select": { "button": 0 }
  }
}
```

* Uma resposta que mostra um formulário traz `forms`: os `buttons` de cada formulário, cuja ordem é `select.button`, e suas `choices` com `name`, a opção selecionada no início e as `options`.
* `conversation.id` é a tarefa que abriu a conversa, `turn` conta as respostas até agora e `expiresAt` é o último momento para continuá-la, 3 horas depois da primeira resposta.
* Uma continuação pergunta sob a última resposta da tarefa indicada, então indicar a mesma tarefa duas vezes ramifica a conversa.
* Ela mantém o `country` e a `location` originais. Omita-os ou envie os mesmos valores.
* Uma tarefa de outra conta ou de outro mecanismo, uma tarefa não concluída ou um `select` inválido é recusada com `400 VALIDATION_ERROR`. Uma conversa expirada é recusada com `400 CONVERSATION_EXPIRED`. Nenhum dos casos é cobrado.
* Uma continuação custa o mesmo que qualquer tarefa do ChatGPT.

## Relacionados

* [Página do produto ChatGPT](https://querying.ai/pt/engines/chatgpt)
* [Visão geral dos mecanismos](/pt/engines/overview.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.