Search Key Manager

Tavily · Firecrawl · Exa — unified key pool & proxy

Invalid credentials
Keys
Keys
Tokens
Config
Docs
Tavily
-
Firecrawl
-
Exa
-
Total
-
Active
-
Inactive
-
Exhausted
-
Quota
-
Selected 0 items
ID Email API Key Service Status Quota Created Checked Uses Actions
◯

No API keys in the pool

Add keys manually or run the registration workflow

Access Tokens
IDTokenNameTypeQuotaUsedStatusExpiresLast UsedActions
◯

No access tokens

Create tokens for users to access the proxy

Configuration

Authentication, proxy behavior, and system settings.

Default admin access token.
Dashboard login password.
Accept requests without a valid token.
Off
Monthly request limit for new tokens.

Multi-Service Search Proxy

Unified proxy for Tavily, Firecrawl, and Exa APIs. Manages key pools with round-robin selection, automatic key rotation on 401/429, and per-user quota management.

Base URL:

Authentication

All proxy endpoints accept: Authorization: Bearer sk-your-token header.

Tavily endpoints also accept api_key in the request body for SDK compatibility. Firecrawl and Exa use the standard Bearer token — the proxy replaces it with a pool key server-side, so downstream callers only need the manager token.

Tavily Endpoints

MethodPathDescriptionTimeout
POST/searchWeb search30s
POST/extractContent extraction60s
POST/crawlWebsite crawling180s
POST/mapSite mapping180s
POST/researchResearch reports300s
GET/research/{id}Research status30s
GET/usageQuota info10s

All paths work with or without /v1 prefix.

Firecrawl Endpoints

All Firecrawl endpoints accept both /v1/ and /v2/ prefixes. Internally, requests are always forwarded to the upstream v2 API.

Scrape & Search

MethodPathDescriptionTimeout
POST/firecrawl/v1/scrapeScrape a single URL60s
POST/firecrawl/v1/searchWeb search + scrape30s

Crawl

MethodPathDescriptionTimeout
POST/firecrawl/v1/crawlStart crawl job180s
GET/firecrawl/v1/crawl/{id}Crawl status60s
GET/firecrawl/v2/crawl/{id}/statusCrawl status (alias)60s
DELETE/firecrawl/v1/crawl/{id}Cancel crawl60s
DELETE/firecrawl/v2/crawl/{id}/cancelCancel crawl (alias)60s
GET/firecrawl/v1/crawl/{id}/errorsCrawl errors60s
GET/firecrawl/v1/crawl/activeActive crawls60s
POST/firecrawl/v1/crawl/params-previewPreview crawl params60s

Map & Extract

MethodPathDescriptionTimeout
POST/firecrawl/v1/mapList site URLs180s
POST/firecrawl/v1/extractStructured extraction120s
GET/firecrawl/v1/extract/{id}Extract status120s

Batch Scrape

MethodPathDescriptionTimeout
POST/firecrawl/v1/batch-scrapeStart batch scrape60s
GET/firecrawl/v1/batch-scrape/{id}Batch status60s
DELETE/firecrawl/v1/batch-scrape/{id}Cancel batch60s
DELETE/firecrawl/v2/batch-scrape/{id}/cancelCancel batch (alias)60s
GET/firecrawl/v1/batch-scrape/{id}/errorsBatch errors60s

Agent & Browser

MethodPathDescriptionTimeout
POST/firecrawl/v1/agentCreate agent job120s
GET/firecrawl/v1/agent/{id}Agent job status120s
DELETE/firecrawl/v1/agent/{id}Cancel agent job120s
POST/firecrawl/v1/browserCreate browser session120s
GET/firecrawl/v1/browserList sessions120s
POST/firecrawl/v1/browser/{id}/executeExecute in session120s
DELETE/firecrawl/v1/browser/{id}Close session120s

Team & Usage

MethodPathDescriptionTimeout
GET/firecrawl/v1/credit-usageCredit usage (legacy alias)10s
GET/firecrawl/v1/team/credit-usageCredit usage10s
GET/firecrawl/v1/team/token-usageToken usage10s
GET/firecrawl/v1/team/queue-statusQueue status10s

Exa Endpoints

The proxy auto-injects "type": "auto" for /exa/search if not specified in the body.

MethodPathDescriptionTimeout
POST/exa/searchNeural / keyword / auto search60s
POST/exa/contentsGet page contents by ID30s
POST/exa/answerLLM answer with citations60s
POST/exa/findSimilarFind similar links to a URL30s

Examples

Tavily Search

curl -X POST BASE_URL/search \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-your-token" \
  -d '{"query": "latest AI news", "max_results": 5}'

Firecrawl Scrape

curl -X POST BASE_URL/firecrawl/v1/scrape \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-your-token" \
  -d '{"url": "https://example.com"}'

Firecrawl Crawl + Status

# Start crawl
curl -X POST BASE_URL/firecrawl/v1/crawl \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-your-token" \
  -d '{"url": "https://example.com", "limit": 10}'

# Check status
curl BASE_URL/firecrawl/v2/crawl/{id}/status \
  -H "Authorization: Bearer sk-your-token"

# Cancel
curl -X DELETE BASE_URL/firecrawl/v2/crawl/{id}/cancel \
  -H "Authorization: Bearer sk-your-token"

Exa Search

curl -X POST BASE_URL/exa/search \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-your-token" \
  -d '{"query": "machine learning frameworks", "numResults": 5}'

Note: "type": "auto" is injected automatically if not provided.

Import Guide

The import dialog accepts multiple formats. Service is auto-detected from key prefixes:

PrefixService
tvly-*Tavily
fc-*Firecrawl
UUID formatExa

Registrar CSV

firecrawl@example.com,password,fc-abc123456789
exa@example.com,EMAIL_OTP_ONLY,550e8400-e29b-41d4-a716-446655440000

Key-only (one per line)

fc-abc123456789012345678
550e8400-e29b-41d4-a716-446655440000
tvly-abcdef1234567890

Key-only imports auto-generate placeholder emails. Duplicates are silently skipped (ON CONFLICT DO NOTHING).

Add API Key
Batch Import
Supported formats
JSON — [{"email":"...", "api_key":"...", "service":"firecrawl"}]
CSV — email,password,api_key (header optional)
Registrar — email,password,key (one per line)
Key-only — one API key per line (tvly-*, fc-*, UUID)
Auto-detect: fc-* → Firecrawl, UUID → Exa, tvly-* / other → Tavily
Create Access Token