Skip to main content

Overview

Set effort to fast, low, medium, high, or xhigh to choose the Agent API’s configuration. This is separate from reasoning.effort, which controls the selected model’s reasoning. Effort levels are pre-configured setups optimized for specific use cases. Each effort level bundles a model, search config, reasoning steps, system prompt, and available tools. Effort levels can be used in three ways:
  • Dynamic effort level (recommended) — call an effort level by name (e.g., effort="low") to opt in to the latest Perplexity-optimized configuration. Perplexity updates the underlying configuration as evals show improvements, and your application picks up those improvements automatically with no code changes.
  • Pinned version — call an effort level with a version (e.g., effort="fast@2026-10-16.0") to keep running one released configuration after the effort level moves on. See Pinning an effort level version.
  • Frozen configuration — copy an effort level’s current configuration (model, tools, system prompt, parameters) into your request and omit the effort parameter. This freezes the exact setup the effort level uses today. Use this when you want to insulate your application from future effort level updates or pin the exact underlying model and tool setup.
You can mix them: call the dynamic effort level in most environments and pin a version where stability is required.
An effort level is managed by Perplexity. To save and version your own configuration - for example, starting from an effort level’s current values - use a profile, the organization-owned counterpart to an effort level. A request cannot set both effort and profile.
Dynamic effort levels automatically use a stable prompt_cache_key for their shared prompt prefix (system prompt and tool definitions). This improves prompt-cache reuse across independent requests that use the same effort level. You don’t need to set the key yourself; an explicit request-level prompt_cache_key overrides the effort level default.
Effort levels provide sensible defaults optimized for their use case. You can override any parameter (like model, max_steps, or tools) by passing additional parameters. See Customizing Effort Levels for code examples.

What Changes When an Effort Level Is Updated

When Perplexity updates an effort level, we aim to keep changes within the same expected profile so your application sees a quality improvement without surprises:
  • Cost profile — effort level updates target the same cost band. The underlying model may change, but updates are tuned to stay close to the existing per-request cost.
  • Latency profile — effort level updates target the same latency band. Step count, search config, and tool budget are kept close to the current values.
  • Quality — this is the dimension that effort level updates optimize for. New configurations ship when evals show meaningful improvements.
If you need a stable configuration instead of tracking these updates, pin an effort level version, or create a frozen configuration by copying the current effort level values inline.

Choosing an effort level

Each effort level trades off research depth, source coverage, and latency. Use the table below to pick the one that fits your query.
The full current configuration for each effort level — model, tools, parameters, and system prompt — is in the Current effort level values section below.

Using an effort level

Call an effort level by name with the effort parameter — Perplexity manages the underlying configuration, so you pick up future improvements with no code changes.
Swap effort="low" for any effort level name from the table above. To override any effort level default, see Customizing Effort Levels.

Pinning an effort level version

Each effort level has released versions. The effort parameter accepts three forms: Responses to an effort level request include an effort field. Streams resumed with starting_after omit it. It holds the effort level and the version that ran the request, for example fast@2026-10-16.0. To pin the configuration you use today, send that value back as effort.
An unknown effort level name, an unknown version, or a malformed value returns HTTP 400.

Customizing Effort Levels

Effort levels provide sensible defaults. Any field you pass alongside the effort level overrides that default. Anything you don’t set keeps the effort level’s default. tools are the one exception: they merge per tool instead of replacing the whole set. Listing one tool overrides only that tool’s options and leaves the effort level’s other tools enabled.
To tune search depth under an effort level, set max_tokens and max_tokens_per_page on web_search. See Configuring Search.
The full current configuration for each effort level — model, tools, parameters, and system prompt — is in the Current effort level values section below. The Choosing an effort level table summarizes what each effort level is for.

Current effort level values

Current effort level values are the concrete model, system prompt, tools, and parameters behind each effort level, expressed as public API fields. Copy these values into your request and omit the effort parameter to create a frozen configuration: a pinned setup that reproduces the effort level’s behavior today. Each effort level below shows its complete, self-contained current values — copy a single block to freeze that effort level’s behavior.
Frozen configurations are pinned. They will not pick up future effort level improvements — call the effort level by name (a dynamic effort level) if you want automatic updates.
The cURL tab can show a more complete configuration than the SDK tabs: some parameters aren’t exposed by the SDK yet.
The frozen examples below compute the current UTC date locally before sending the request. The API substitutes {{current_date}} only in an effort level’s default instructions; placeholders in request-provided instructions are sent literally.
Quick factual lookups with minimal latency and inline citations for search-backed claims.
  • Model: openai/gpt-6-luna
  • Prompt cache key: fast
  • Max steps: 1
  • Reasoning effort: none
  • Service tier: priority
  • Max output tokens: 8192
  • Tools: web_search
  • Search type: search_type: "fast" on web_search (Fast Search)
  • Search results: max_results: 10 (cURL request)
  • System prompt: included inline below
Balanced research with tool access and inline citations for source-backed claims.
  • Model: openai/gpt-6-luna
  • Prompt cache key: low
  • Max steps: 5
  • Reasoning effort: minimal
  • Max output tokens: 32768
  • Tools: web_search, fetch_url (max_urls: 1)
  • Search type: search_type: "fast" on web_search (Fast Search)
  • Search results: max_results: 15 (cURL request)
  • Search depth: max_tokens: 2000, max_tokens_per_page: 2000 on web_search
  • System prompt: included inline below
In-depth, multi-step research and analysis with inline citations for source-backed claims.
  • Model: openai/gpt-6-luna
  • Prompt cache key: medium
  • Max steps: 15
  • Reasoning effort: medium
  • Max output tokens: 128000
  • Tools: web_search, fetch_url (max_urls: 1)
  • Search type: search_type: "fast" on web_search (Fast Search)
  • Search results: max_results: 15 (cURL request)
  • Search depth: max_tokens: 2000, max_tokens_per_page: 2000 on web_search
  • fetch_url processing: grep is disabled, and content extraction uses medium effort. These are effort-level settings and are not request-settable fields.
  • System prompt: included inline below
Maximum-depth, institutional-grade research with inline citations for source-backed claims.
  • Model: openai/gpt-6-sol
  • Prompt cache key: high
  • Max steps: 15
  • Reasoning effort: medium
  • Max output tokens: 128000
  • Tools: web_search, fetch_url (max_urls: 1)
  • Search type: search_type: "fast" on web_search (Fast Search)
  • Search results: max_results: 15 (cURL request)
  • Search depth: max_tokens: 2000, max_tokens_per_page: 2000 on web_search
  • fetch_url processing: grep is disabled, and content extraction uses medium effort. These are effort-level settings and are not request-settable fields.
  • System prompt: included inline below
Open-ended, sandbox-enabled agentic work.
  • Model: anthropic/claude-opus-5-5
  • Prompt cache key: xhigh
  • Max steps: 100
  • Reasoning effort: high
  • Max output tokens: 512000
  • Tools: web_search, finance_search, sandbox
  • Search type: search_type: "fast" on web_search (Fast Search)
  • Search results: max_results: 15 (cURL request)
  • System prompt: included inline below

Next Steps

Agent API Quickstart

Get started with the Agent API.

Agent API Models

Explore direct model selection and third-party models.

API Reference

View complete endpoint documentation.