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

# Início rápido

O AI Search dá à sua aplicação acesso em tempo real à web por meio de um único gateway da Novita. Em vez de se cadastrar em cada provedor de pesquisa, gerenciar chaves separadas e aprender diferentes esquemas de autenticação, você chama a Novita com uma chave de API e escolhe o mecanismo de pesquisa desejado em cada requisição.

Este guia leva você do zero a uma pesquisa na web funcionando em poucos minutos. Você se autenticará com uma única chave de API da Novita, executará uma pesquisa e verá como trocar de provedor sem alterar sua configuração.

## Antes de começar

1. Uma conta Novita e uma chave de API. Consulte [Gerenciamento de chaves de API](/docs/pt-BR/api-reference/basic-authentication) para criar uma.
2. Exporte sua chave para que os exemplos abaixo possam usá-la. `NOVITA_API_KEY` é apenas sua chave de API da Novita da etapa 1 — a mesma chave funciona para todos os provedores:

```bash theme={"system"}
export NOVITA_API_KEY="<Your API Key>"
```

Todos os endpoints do AI Search compartilham a mesma URL base e autenticação:

* **URL base:** `https://api.novita.ai`
* **Cabeçalho de autenticação:** `Authorization: Bearer <api_key>`
* **Tipo de conteúdo:** `application/json`

## Sua primeira pesquisa

O exemplo abaixo executa uma pesquisa Exa. Cada requisição é apenas uma rota mais um corpo JSON.

<CodeGroup>
  ```bash curl theme={"system"}
  curl -X POST 'https://api.novita.ai/v3/exa/search' \
    -H "Authorization: Bearer ${NOVITA_API_KEY}" \
    -H 'Content-Type: application/json' \
    -d '{
      "query": "latest open-source LLM releases",
      "numResults": 5
    }'
  ```

  ```python Python theme={"system"}
  import os
  import requests

  resp = requests.post(
      "https://api.novita.ai/v3/exa/search",
      headers={
          "Authorization": f"Bearer {os.environ['NOVITA_API_KEY']}",
          "Content-Type": "application/json",
      },
      json={
          "query": "latest open-source LLM releases",
          "numResults": 5,
      },
  )
  resp.raise_for_status()

  for result in resp.json()["results"]:
      print(result["title"], "-", result["url"])
  ```

  ```javascript JavaScript theme={"system"}
  const resp = await fetch("https://api.novita.ai/v3/exa/search", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.NOVITA_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      query: "latest open-source LLM releases",
      numResults: 5,
    }),
  });

  const data = await resp.json();
  for (const result of data.results) {
    console.log(`${result.title} - ${result.url}`);
  }
  ```
</CodeGroup>

## Alternando mecanismos de pesquisa

Alternar mecanismos de pesquisa significa alterar a **rota** e o **corpo da requisição** para corresponder ao provedor — sua chave, host e cabeçalho de autenticação permanecem os mesmos. Veja a mesma intenção expressa para Tavily:

```bash theme={"system"}
curl -X POST 'https://api.novita.ai/v3/tavily/search' \
  -H "Authorization: Bearer ${NOVITA_API_KEY}" \
  -H 'Content-Type: application/json' \
  -d '{
    "query": "latest open-source LLM releases",
    "max_results": 5
  }'
```

Observe as pequenas diferenças: Exa usa `numResults`, Tavily usa `max_results`. A lista completa de parâmetros de cada provedor fica em sua referência de API.

## Traga seu próprio SDK do provedor

O AI Search é uma integração pass-through, portanto o SDK oficial de um provedor funciona desde que permita substituir a URL base — aponte-o para a rota de gateway correspondente e passe sua chave Novita. O SDK Python da Exa, por exemplo, recebe um `base_url`:

```python theme={"system"}
import os
from exa_py import Exa

exa = Exa(
    api_key=os.environ["NOVITA_API_KEY"],
    base_url="https://api.novita.ai/v3/exa",
)

results = exa.search("latest open-source LLM releases", num_results=5)
for r in results.results:
    print(r.title, "-", r.url)
```

<Note>
  Se um SDK não expõe uma configuração de URL base, basta chamar os endpoints REST diretamente com qualquer cliente HTTP, como mostrado acima — esse caminho sempre funciona.
</Note>

## Como funciona

A Novita expõe cada provedor como um endpoint pass-through. Sua requisição é autenticada com sua chave de API da Novita e, em seguida, encaminhada ao provedor upstream usando o formato de requisição e resposta próprio do provedor.

* **Uma credencial.** Use sua chave de API existente da Novita como `Bearer <api_key>` para todos os provedores.
* **Corpos nativos do provedor.** Os formatos de requisição e resposta correspondem ao provedor upstream, então os exemplos e formatos de requisição do próprio provedor continuam válidos — basta apontar a URL base para a Novita.
* **Troque mecanismos por requisição.** Alternar provedores significa alterar a rota e o corpo, não sua autenticação nem a configuração da sua conta.

Isso é útil sempre que um modelo precisa de informações nas quais não foi treinado: eventos atuais, documentação que muda rapidamente, preços ou qualquer fato que esteja na web aberta. Combine com a [LLM API](/docs/pt-BR/guides/llm-api) para criar geração aumentada por recuperação (RAG), agentes de pesquisa e assistentes fundamentados na web.

## Provedores compatíveis

<CardGroup cols={2}>
  <Card title="Exa" icon="brain">
    Pesquisa neural e semântica na web com extração de conteúdo e síntese de respostas integradas. Forte para pesquisa, encontrar páginas por significado e saída estruturada.
  </Card>

  <Card title="Tavily" icon="bolt">
    Pesquisa e recuperação rápidas, otimizadas para LLM, com rastreamento e mapeamento de sites. Forte para tópicos de notícias e finanças, pipelines de extração e consultas de baixa latência.
  </Card>
</CardGroup>

## Capacidades em resumo

| Capacidade           | O que faz                                              |                            Exa                           |                           Tavily                          |
| -------------------- | ------------------------------------------------------ | :------------------------------------------------------: | :-------------------------------------------------------: |
| Pesquisa             | Encontra páginas relevantes a partir de uma consulta   |   [Search](/docs/pt-BR/api-reference/model-apis-exa-search)   |  [Search](/docs/pt-BR/api-reference/model-apis-tavily-search)  |
| Extração de conteúdo | Extrai texto limpo/metadata de URLs                    | [Contents](/docs/pt-BR/api-reference/model-apis-exa-contents) | [Extract](/docs/pt-BR/api-reference/model-apis-tavily-extract) |
| Síntese de respostas | Gera uma resposta com citações a partir dos resultados |   [Answer](/docs/pt-BR/api-reference/model-apis-exa-answer)   |                    via `include_answer`                   |
| Rastreamento de site | Segue links para reunir muitas páginas                 |                             —                            |   [Crawl](/docs/pt-BR/api-reference/model-apis-tavily-crawl)   |
| Mapeamento de site   | Descobre as URLs acessíveis de um site                 |                             —                            |     [Map](/docs/pt-BR/api-reference/model-apis-tavily-map)     |

## Referência de endpoints

| Provedor | Endpoint                                                  | Rota                      |
| -------- | --------------------------------------------------------- | ------------------------- |
| Exa      | [Search](/docs/pt-BR/api-reference/model-apis-exa-search)      | `POST /v3/exa/search`     |
| Exa      | [Contents](/docs/pt-BR/api-reference/model-apis-exa-contents)  | `POST /v3/exa/contents`   |
| Exa      | [Answer](/docs/pt-BR/api-reference/model-apis-exa-answer)      | `POST /v3/exa/answer`     |
| Tavily   | [Search](/docs/pt-BR/api-reference/model-apis-tavily-search)   | `POST /v3/tavily/search`  |
| Tavily   | [Extract](/docs/pt-BR/api-reference/model-apis-tavily-extract) | `POST /v3/tavily/extract` |
| Tavily   | [Crawl](/docs/pt-BR/api-reference/model-apis-tavily-crawl)     | `POST /v3/tavily/crawl`   |
| Tavily   | [Map](/docs/pt-BR/api-reference/model-apis-tavily-map)         | `POST /v3/tavily/map`     |

## Solução de problemas

* **400 Bad Request** — um parâmetro não corresponde ao esquema do provedor. Verifique se você está usando os nomes de campos desse provedor (por exemplo, `numResults` vs `max_results`).
* **429 Too Many Requests** — você atingiu um limite de taxa. Aguarde e tente novamente, ou reduza o volume de requisições.

Para ver a lista completa, consulte a seção Erros em qualquer página de [referência de API](/docs/pt-BR/api-reference/model-apis-tavily-search) do AI Search.

## Para onde ir agora

<Card title="Respostas fundamentadas na web e RAG" icon="link" href="/docs/pt-BR/guides/ai-search-grounded-answers">
  Envie resultados de pesquisa para a LLM API para criar pipelines de geração aumentada por recuperação (RAG) com respostas citadas.
</Card>
