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

# AI Search FAQs

## Getting Started

### What is AI Search?

AI Search is a single Novita gateway that gives your application live access to search the web. You call Novita with one API key and choose a search provider per request, instead of signing up with each provider separately. See the [Quickstart](/docs/guides/ai-search-quickstart) for the full picture.

### Which providers are supported?

Currently **Exa** and **Tavily**. Each is exposed as a passthrough endpoint that mirrors the provider's own request and response format. See the [Quickstart](/docs/guides/ai-search-quickstart) for the endpoint list.

### Do I need a separate Exa or Tavily account?

No. Your Novita API key authenticates every AI Search request. You don't manage upstream provider keys or accounts.

## Authentication & Setup

### How do I authenticate?

Use your Novita API key as a bearer token: `Authorization: Bearer <api_key>`. The same key works for every provider. To create or manage keys, see [API Key Management](/docs/api-reference/basic-authentication).

### Is there a Novita SDK for AI Search?

No — and you don't need one. AI Search is an integration, not a wrapped product: each endpoint is a passthrough that forwards your request to the provider (Exa or Tavily) in that provider's native format. That means you have two solid options:

* **Use the provider's own SDK.** If the SDK lets you set a custom base URL, point it at the matching gateway route and pass your Novita key. For example, the Exa Python SDK accepts `base_url="https://api.novita.ai/v3/exa"`. See the [Quickstart](/docs/guides/ai-search-quickstart#bring-your-own-provider-sdk) for a full example.
* **Call the REST endpoints directly.** Works with any HTTP client and needs no SDK at all. The [Quickstart](/docs/guides/ai-search-quickstart) shows curl, Python, and JavaScript examples.

If an SDK doesn't expose a base-URL setting, use the REST path instead.

## Can I switch providers without changing my code structure?

Mostly. Authentication, host, and the request flow stay identical — you change the route (e.g. `/v3/tavily/search` → `/v3/exa/search`) and align the body to that provider's field names (for example, Tavily's `max_results` vs Exa's `numResults`).

## Search Behavior

### How fresh are the results?

Results reflect live web content. For time-sensitive questions, constrain by date to keep stale pages out: Tavily exposes `time_range` and `start_date`/`end_date`; Exa exposes `startPublishedDate`/`endPublishedDate`.

### How do I restrict results to trusted sites?

Use domain filters — `include_domains`/`exclude_domains` on Tavily, `includeDomains`/`excludeDomains` on Exa — to keep retrieval within sources you trust.

### What's the difference between search, extract, and crawl?

* **Search** discovers relevant pages from a query.
* **Extract / Contents** pulls clean text from URLs you already have.
* **Crawl / Map** follows links to gather or list many pages from a site.

See [Web-Grounded Answers](/docs/guides/ai-search-grounded-answers#search-vs-extract-vs-crawl) for guidance on which to use.

### Can AI Search generate an answer, not just links?

Yes. Tavily Search returns an LLM answer when you set `include_answer`, and Exa offers a dedicated [Answer](/docs/api-reference/model-apis-exa-answer) endpoint. For full control over wording and citations, retrieve results and synthesize with the [LLM API](/docs/guides/llm-api) instead — see [Web-Grounded Answers](/docs/guides/ai-search-grounded-answers).

## Limits & Troubleshooting

### What are the rate limits?

AI Search requests are subject to both Novita platform limits and each upstream provider's own limits, which depend on the provider tier tied to your account. When you exceed a limit, the API returns `429 Too Many Requests` — back off and retry with exponential delay. These limits are separate from the [LLM API](/docs/guides/llm-api) rate limits; a search call doesn't draw down your LLM quota.

### Why am I getting a 400 error?

A parameter likely doesn't match the provider's schema. Confirm you're using that provider's field names — a common cause is sending Tavily's `max_results` to an Exa route (which expects `numResults`).

### Where can I get more help?

For integration questions or higher limits, [book a call with our team](https://meet.brevo.com/novita-ai/contact-sales).
