Perplexity Search (legacy path)
Perplexity Search API
Section titled “Perplexity Search API”OpenClaw supports Perplexity Search API as a web_search provider.
It returns structured results with title, url, and snippet fields.
For compatibility, OpenClaw also supports legacy Perplexity Sonar/OpenRouter setups.
If you use OPENROUTER_API_KEY, an sk-or-... key in plugins.entries.perplexity.config.webSearch.apiKey, or set plugins.entries.perplexity.config.webSearch.baseUrl / model, the provider switches to the chat-completions path and returns AI-synthesized answers with citations instead of structured Search API results.
Getting a Perplexity API key
Section titled “Getting a Perplexity API key”- Create a Perplexity account at perplexity.ai/settings/api
- Generate an API key in the dashboard
- Store the key in config or set
PERPLEXITY_API_KEYin the Gateway environment.
OpenRouter compatibility
Section titled “OpenRouter compatibility”If you were already using OpenRouter for Perplexity Sonar, keep provider: "perplexity" and set OPENROUTER_API_KEY in the Gateway environment, or store an sk-or-... key in plugins.entries.perplexity.config.webSearch.apiKey.
Optional compatibility controls:
plugins.entries.perplexity.config.webSearch.baseUrlplugins.entries.perplexity.config.webSearch.model
Config examples
Section titled “Config examples”Native Perplexity Search API
Section titled “Native Perplexity Search API”{ plugins: { entries: { perplexity: { config: { webSearch: { apiKey: "pplx-...", }, }, }, }, }, tools: { web: { search: { provider: "perplexity", }, }, },}OpenRouter / Sonar compatibility
Section titled “OpenRouter / Sonar compatibility”{ plugins: { entries: { perplexity: { config: { webSearch: { apiKey: "<openrouter-api-key>", baseUrl: "https://openrouter.ai/api/v1", model: "perplexity/sonar-pro", }, }, }, }, }, tools: { web: { search: { provider: "perplexity", }, }, },}Where to set the key
Section titled “Where to set the key”Via config: run openclaw configure --section web. It stores the key in
~/.openclaw/openclaw.json under plugins.entries.perplexity.config.webSearch.apiKey.
That field also accepts SecretRef objects.
Via environment: set PERPLEXITY_API_KEY or OPENROUTER_API_KEY
in the Gateway process environment. For a gateway install, put it in
~/.openclaw/.env (or your service environment). See Env vars.
If provider: "perplexity" is configured and the Perplexity key SecretRef is unresolved with no env fallback, startup/reload fails fast.
Tool parameters
Section titled “Tool parameters”These parameters apply to the native Perplexity Search API path.
| Parameter | Description |
|---|---|
query | Search query (required) |
count | Number of results to return (1-10, default: 5) |
country | 2-letter ISO country code (e.g., “US”, “DE”) |
language | ISO 639-1 language code (e.g., “en”, “de”, “fr”) |
freshness | Time filter: day (24h), week, month, or year |
date_after | Only results published after this date (YYYY-MM-DD) |
date_before | Only results published before this date (YYYY-MM-DD) |
domain_filter | Domain allowlist/denylist array (max 20) |
max_tokens | Total content budget (default: 25000, max: 1000000) |
max_tokens_per_page | Per-page token limit (default: 2048) |
For the legacy Sonar/OpenRouter compatibility path, only query and freshness are supported.
Search API-only filters such as country, language, date_after, date_before, domain_filter, max_tokens, and max_tokens_per_page return explicit errors.
Examples:
// Country and language-specific searchawait web_search({ query: "renewable energy", country: "DE", language: "de",});
// Recent results (past week)await web_search({ query: "AI news", freshness: "week",});
// Date range searchawait web_search({ query: "AI developments", date_after: "2024-01-01", date_before: "2024-06-30",});
// Domain filtering (allowlist)await web_search({ query: "climate research", domain_filter: ["nature.com", "science.org", ".edu"],});
// Domain filtering (denylist - prefix with -)await web_search({ query: "product reviews", domain_filter: ["-reddit.com", "-pinterest.com"],});
// More content extractionawait web_search({ query: "detailed AI research", max_tokens: 50000, max_tokens_per_page: 4096,});Domain filter rules
Section titled “Domain filter rules”- Maximum 20 domains per filter
- Cannot mix allowlist and denylist in the same request
- Use
-prefix for denylist entries (e.g.,["-reddit.com"])
- Perplexity Search API returns structured web search results (
title,url,snippet) - OpenRouter or explicit
plugins.entries.perplexity.config.webSearch.baseUrl/modelswitches Perplexity back to Sonar chat completions for compatibility - Results are cached for 15 minutes by default (configurable via
cacheTtlMinutes)
See Web tools for the full web_search configuration. See Perplexity Search API docs for more details.