Apus supports the Perplexity Search API as a web_search provider. It returns structured results with title, url, and snippet fields.

For compatibility, Apus 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.

Install plugin

Install the official plugin:

apus plugins install @openclaw/perplexity-plugin

Installation applies to a running Gateway automatically; otherwise it takes effect on the next startup. See Apply changes and inspect.

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:

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 apus configure --section web. It stores the key in ~/.apus/apus.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 ~/.apus/.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.

query string

Search query.

count number

Number of results to return (1-10).

country string

2-letter ISO country code (e.g. US, DE).

language string

ISO 639-1 language code (e.g. en, de, fr).

freshness 'day' | 'week' | 'month' | 'year'

Time filter - day is 24 hours.

date_after string

Only results published after this date (YYYY-MM-DD).

date_before string

Only results published before this date (YYYY-MM-DD).

domain_filter string[]

Domain allowlist/denylist array (max 20).

max_tokens number

Total content budget (max 1000000).

max_tokens_per_page number

Per-page token limit.

For the legacy Sonar/OpenRouter compatibility path:

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

Notes

Related

Web search overview

All providers and auto-detection rules.

Brave search

Structured results with country and language filters.

Exa search

Neural search with content extraction.

Perplexity provider

Provider setup, auth, and config keys for Perplexity web search.

Perplexity Search API docs

Official Perplexity Search API quickstart and reference.