> ## 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.

# Quickstart

AI Search geeft je applicatie live toegang tot het web via één enkele Novita-gateway. In plaats van je bij elke zoekprovider aan te melden, afzonderlijke sleutels te beheren en verschillende authenticatieschema's te leren, roep je Novita aan met één API-sleutel en kies je per verzoek de zoekmachine die je wilt gebruiken.

Deze gids brengt je in een paar minuten van nul naar een werkende webzoekopdracht. Je verifieert met één Novita API-sleutel, voert een zoekopdracht uit en ziet hoe je van provider kunt wisselen zonder je setup te wijzigen.

## Voordat je begint

1. Een Novita-account en een API-sleutel. Zie [API-sleutelbeheer](/docs/nl/api-reference/basic-authentication) om er een aan te maken.
2. Exporteer je sleutel zodat de onderstaande voorbeelden deze kunnen gebruiken. `NOVITA_API_KEY` is gewoon je Novita API-sleutel uit stap 1 — dezelfde sleutel werkt voor elke provider:

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

Alle AI Search-endpoints delen dezelfde basis-URL en authenticatie:

* **Basis-URL:** `https://api.novita.ai`
* **Auth-header:** `Authorization: Bearer <api_key>`
* **Contenttype:** `application/json`

## Je eerste zoekopdracht

Het onderstaande voorbeeld voert een Exa-zoekopdracht uit. Elk verzoek is slechts een route plus een JSON-body.

<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>

## Wisselen van zoekmachine

Wisselen van zoekmachine betekent dat je de **route** en de **request-body** wijzigt om bij de provider te passen — je sleutel, host en auth-header blijven hetzelfde. Hier is dezelfde intentie uitgedrukt voor 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
  }'
```

Let op de kleine verschillen: Exa gebruikt `numResults`, Tavily gebruikt `max_results`. De volledige parameterlijst van elke provider staat in de API-referentie.

## Gebruik je eigen provider-SDK

AI Search is een passthrough-integratie, dus de officiële SDK van een provider werkt zolang je hiermee de basis-URL kunt overschrijven — wijs deze naar de bijbehorende gatewayroute en geef je Novita-sleutel door. De Exa Python SDK neemt bijvoorbeeld een `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>
  Als een SDK geen instelling voor de basis-URL beschikbaar maakt, roep dan gewoon de REST-endpoints rechtstreeks aan met een willekeurige HTTP-client, zoals hierboven getoond — dat pad werkt altijd.
</Note>

## Zo werkt het

Novita stelt elke provider beschikbaar als een passthrough-endpoint. Je verzoek wordt geverifieerd met je Novita API-sleutel en vervolgens doorgestuurd naar de upstreamprovider met de eigen verzoek- en antwoordindeling van die provider.

* **Één credential.** Gebruik je bestaande Novita API-sleutel als `Bearer <api_key>` voor elke provider.
* **Provider-eigen bodies.** De structuur van verzoeken en antwoorden komt overeen met de upstreamprovider, dus de eigen voorbeelden en request-formaten van de provider blijven toepasbaar — wijs de basis-URL gewoon naar Novita.
* **Wissel engines per verzoek.** Wisselen van provider betekent dat je de route en de body wijzigt, niet je auth of je accountsetup.

Dit is nuttig wanneer een model informatie nodig heeft waarop het niet is getraind: actuele gebeurtenissen, snel veranderende documentatie, prijzen of elk feit dat op het open web staat. Combineer dit met de [LLM API](/docs/nl/guides/llm-api) om retrieval-augmented generation (RAG), onderzoeksagents en web-onderbouwde assistenten te bouwen.

## Ondersteunde providers

<CardGroup cols={2}>
  <Card title="Exa" icon="brain">
    Neurale en semantische webzoekfunctie met ingebouwde contentextractie en antwoordsynthese. Sterk voor onderzoek, pagina's vinden op betekenis en gestructureerde output.
  </Card>

  <Card title="Tavily" icon="bolt">
    Snelle, voor LLM's geoptimaliseerde zoek- en ophaalfuncties met sitecrawling en mapping. Sterk voor nieuws- en financiële onderwerpen, extractiepijplijnen en lookups met lage latency.
  </Card>
</CardGroup>

## Mogelijkheden in één oogopslag

| Mogelijkheid     | Wat het doet                                               |                         Exa                         |                           Tavily                          |
| ---------------- | ---------------------------------------------------------- | :-------------------------------------------------: | :-------------------------------------------------------: |
| Zoeken           | Vindt relevante pagina's op basis van een query            |  [Zoeken](/docs/nl/api-reference/model-apis-exa-search)  |    [Zoeken](/docs/nl/api-reference/model-apis-tavily-search)   |
| Contentextractie | Haalt schone tekst/metadata uit URL's                      | [Inhoud](/docs/nl/api-reference/model-apis-exa-contents) | [Extraheren](/docs/nl/api-reference/model-apis-tavily-extract) |
| Antwoordsynthese | Genereert een antwoord met bronvermeldingen uit resultaten | [Antwoord](/docs/nl/api-reference/model-apis-exa-answer) |                    via `include_answer`                   |
| Sitecrawling     | Volgt links om veel pagina's te verzamelen                 |                          —                          |    [Crawlen](/docs/nl/api-reference/model-apis-tavily-crawl)   |
| Sitemapping      | Ontdekt de bereikbare URL's van een site                   |                          —                          |       [Map](/docs/nl/api-reference/model-apis-tavily-map)      |

## Endpointreferentie

| Provider | Endpoint                                                  | Route                     |
| -------- | --------------------------------------------------------- | ------------------------- |
| Exa      | [Zoeken](/docs/nl/api-reference/model-apis-exa-search)         | `POST /v3/exa/search`     |
| Exa      | [Inhoud](/docs/nl/api-reference/model-apis-exa-contents)       | `POST /v3/exa/contents`   |
| Exa      | [Antwoord](/docs/nl/api-reference/model-apis-exa-answer)       | `POST /v3/exa/answer`     |
| Tavily   | [Zoeken](/docs/nl/api-reference/model-apis-tavily-search)      | `POST /v3/tavily/search`  |
| Tavily   | [Extraheren](/docs/nl/api-reference/model-apis-tavily-extract) | `POST /v3/tavily/extract` |
| Tavily   | [Crawlen](/docs/nl/api-reference/model-apis-tavily-crawl)      | `POST /v3/tavily/crawl`   |
| Tavily   | [Map](/docs/nl/api-reference/model-apis-tavily-map)            | `POST /v3/tavily/map`     |

## Probleemoplossing

* **400 Bad Request** — een parameter komt niet overeen met het schema van de provider. Controleer of je de veldnamen van die provider gebruikt (bijvoorbeeld `numResults` versus `max_results`).
* **429 Too Many Requests** — je hebt een ratelimiet bereikt. Wacht even en probeer opnieuw, of verlaag het requestvolume.

Voor de volledige lijst, zie de sectie Fouten op een AI Search-[API-referentie](/docs/nl/api-reference/model-apis-tavily-search)pagina.

## Waar nu naartoe

<Card title="Web-onderbouwde antwoorden & RAG" icon="link" href="/docs/nl/guides/ai-search-grounded-answers">
  Voer zoekresultaten in de LLM API in om retrieval-augmented generation (RAG)-pijplijnen met antwoorden met bronvermeldingen te bouwen.
</Card>
