Skip to main content

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

  1. Create a Perplexity account at perplexity.ai/settings/api
  2. Generate an API key in the dashboard
  3. Store the key in config or set PERPLEXITY_API_KEY in the Gateway environment.

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.baseUrl
  • plugins.entries.perplexity.config.webSearch.model

Config examples

Native Perplexity Search API

{  plugins: {  entries: {  perplexity: {  config: {  webSearch: {  apiKey: "pplx-...",  },  },  },  },  },  tools: {  web: {  search: {  provider: "perplexity",  },  },  }, } 

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

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

These parameters apply to the native Perplexity Search API path.
ParameterDescription
querySearch query (required)
countNumber of results to return (1-10, default: 5)
country2-letter ISO country code (e.g., “US”, “DE”)
languageISO 639-1 language code (e.g., “en”, “de”, “fr”)
freshnessTime filter: day (24h), week, month, or year
date_afterOnly results published after this date (YYYY-MM-DD)
date_beforeOnly results published before this date (YYYY-MM-DD)
domain_filterDomain allowlist/denylist array (max 20)
max_tokensTotal content budget (default: 25000, max: 1000000)
max_tokens_per_pagePer-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 search await web_search({  query: "renewable energy",  country: "DE",  language: "de", });  // Recent results (past week) await web_search({  query: "AI news",  freshness: "week", });  // Date range search await 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 extraction await web_search({  query: "detailed AI research",  max_tokens: 50000,  max_tokens_per_page: 4096, }); 

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"])

Notes

  • Perplexity Search API returns structured web search results (title, url, snippet)
  • OpenRouter or explicit plugins.entries.perplexity.config.webSearch.baseUrl / model switches 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.