Migrating from Tavily
Point your existing TavilyClient at Brime — no code changes.
Brime exposes Tavily's wire format under /tavily/v1/*. Change one line and your existing Tavily integration keeps working.
One-line migration
from tavily import TavilyClient
client = TavilyClient(
api_key="sk-brime-...", # Brime key
api_base_url="https://api.brime.dev/tavily", # ← only change
)
result = client.search("Tesla Cybertruck recall 2025") # works as beforeimport { tavily } from "@tavily/core";
const client = tavily({
apiKey: "sk-brime-...",
apiBaseUrl: "https://api.brime.dev/tavily",
});
const result = await client.search("Tesla Cybertruck recall 2025");What's compatible
| Tavily endpoint | Brime path | Status |
|---|---|---|
/search | /tavily/v1/search | ✅ Full |
/extract | /tavily/v1/extract | ✅ Full |
/research (sync + stream + poll) | /tavily/v1/research + /research/{id} | ✅ Full |
/crawl | — | ❌ Not yet (Brime engine work) |
/map | — | ❌ Not yet (Brime engine work) |
Field mapping
Most fields are 1:1; a few are renamed or silently mapped. Highlights:
| Tavily field | Brime behaviour |
|---|---|
search_depth: fast / ultra-fast | mapped to Brime depth=instant |
chunks_per_source > 1 | silently capped to 1 (Brime engine gap) |
country, auto_parameters, citation_format | silently ignored |
output_schema | silently ignored (no structured output yet) |
images[] per result | always [] (no per-result image extraction yet) |
favicon per result | always null |
Pricing
You're billed in Brime credits, not Tavily credits. The Brime credit table applies — see Pricing. Tavily's per-feature multipliers are not emulated.
Authentication
Pass your Brime key in the standard Tavily slot. Both header (Authorization: Bearer) and body (api_key) variants work:
curl https://api.brime.dev/tavily/v1/search \
-H "Authorization: Bearer sk-brime-..." \
-H "Content-Type: application/json" \
-d '{"query":"renewable energy 2025"}'Errors
Tavily SDK error parsers expect {"detail": {"error": "<message>"}}. Brime's adapter translates native errors into that shape automatically — BadRequestError, InvalidAPIKeyError, etc., raise correctly in tavily-python.
When to use the Tavily adapter vs the native brime SDK
- Use the Tavily adapter when migrating an existing Tavily codebase with minimum churn.
- Use the native
brimeSDK when starting fresh — better ergonomics (deep research polling helper, SSE streaming withLast-Event-IDresume, depth presets, typed responses).
Hit a parity gap?
Open an issue at github.com/orgs/brime-dev/repositories and we'll triage it. The migration matrix is updated when a Tavily endpoint or field is added or remapped.