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

# Providers and routing

> How a request picks its provider, and how to reach a provider's native features.

Every tool endpoint takes a `provider` field. It accepts a provider id, `auto`, or, for search, `fusion`.

## `auto`

The default. Helve picks its default provider for that tool and tells you which one in the response's `provider` field. Treat `auto` as "a good engine" rather than "always the same engine": the default can change as Helve's routing improves.

## A named provider

```json theme={null}
{ "query": "…", "provider": "tavily" }
```

The request goes to that provider only. If it is not configured on Helve, the response is a `503 provider_not_configured`. If the tool has no such provider at all, for example `brave` on Extract, the request fails validation with a 400.

## `fusion`

Search only. Fans the request out to a panel of engines and merges their top picks by consensus. See [Fusion](/concepts/fusion).

## Native parameters with `provider_options`

Helve's request shape covers what most providers share. Everything else stays reachable:

```json theme={null}
{
  "query": "quarterly earnings",
  "provider": "serper",
  "provider_options": {
    "serper": { "tbs": "qdr:w", "gl": "gb" },
    "exa": { "type": "neural" }
  }
}
```

`provider_options.<id>` is merged into that provider's request verbatim, and every other key is ignored. That makes a request portable: the same body can carry native extras for several providers and only the serving one uses them. Helve never inspects these values, with one exception: `provider_options.fusion` is Helve's own and is typed.

For transcription, `provider_options` is validated by the adapter. Model selection lives there; transport settings such as callback URLs and authentication cannot be overridden.

## Which provider served the request

Always read `provider` from the response rather than assuming. With `fusion` it is the literal string `fusion`, and each result's `raw.providers` lists the engines that returned that page.
