Overview
Perplexity is an OpenAI-compatible API with built-in web search capabilities and reasoning support. Bifrost performs conversions including:- OpenAI-compatible base - Uses OpenAI’s chat format as foundation
- Web search parameters - Search mode, domain filters, recency filters, and location-based search
- Reasoning effort mapping -
reasoning.effortmapped to Perplexity’sreasoning_effortwith special handling for “minimal” - Search results inclusion - Citations, search results, and videos included in response
- Special usage tracking - Citation tokens, search queries, and reasoning tokens tracked separately
Supported Operations
| Operation | Non-Streaming | Streaming | Endpoint |
|---|---|---|---|
| Chat Completions | ✅ | ✅ | /chat/completions |
| Responses API | ✅ | ✅ | /chat/completions |
| Text Completions | ❌ | ❌ | - |
| Embeddings | ❌ | ❌ | - |
| Speech (TTS) | ❌ | ❌ | - |
| Transcriptions (STT) | ❌ | ❌ | - |
| Files | ❌ | ❌ | - |
| Batch | ❌ | ❌ | - |
| List Models | ❌ | ❌ | - |
Unsupported Operations (❌): Text Completions, Embeddings, Speech, Transcriptions, Files, Batch, and List Models are not supported by the upstream Perplexity API. These return
UnsupportedOperationError.1. Chat Completions
Request Parameters
Perplexity supports most OpenAI chat completion parameters. For standard parameter reference, see OpenAI Chat Completions.Perplexity-Specific Constraints
- No function calling:
toolsandtool_choiceare silently dropped - Dropped parameters:
stop,logit_bias,logprobs,top_logprobs,seed,parallel_tool_calls,service_tier - Reasoning: Uses
reasoning_effortinstead ofreasoningobject (see Reasoning & Effort)
Perplexity-Specific Parameters
Useextra_params (SDK) or pass directly in request body (Gateway) for Perplexity-specific search and configuration fields:
- Gateway
- Go SDK
Search Parameters
| Parameter | Type | Description |
|---|---|---|
search_mode | string | Search mode: "web", "academic", "news", etc. |
language_preference | string | Language preference (e.g., "en", "fr") |
search_domain_filter | string[] | Restrict search to specific domains |
return_images | boolean | Include images in search results |
return_related_questions | boolean | Return related questions |
search_recency_filter | string | Recency filter: "hour", "day", "week", "month", "year" |
search_after_date_filter | string | Search results after date (ISO format) |
search_before_date_filter | string | Search results before date (ISO format) |
last_updated_after_filter | string | Content last updated after date |
last_updated_before_filter | string | Content last updated before date |
disable_search | boolean | Disable web search entirely |
enable_search_classifier | boolean | Enable search classifier |
top_k | integer | Top-k results to use |
Media Parameters
| Parameter | Type | Description |
|---|---|---|
web_search_options | object[] | Array of web search option configurations with user location support |
media_response.overrides.return_videos | boolean | Return videos in results |
media_response.overrides.return_images | boolean | Return images in results |
Web Search Options
Configure detailed search behavior including location:Reasoning & Effort
Parameter Mapping
reasoning.effort→reasoning_effort- Supported efforts:
"low","medium","high" - Special conversion:
"minimal"→"low"(Perplexity normalizes to low/medium/high) reasoning.max_tokensis silently dropped (Perplexity doesn’t support token budget control)
Example
Response Conversion
Search Results Inclusion
Perplexity responses include additional fields for search integration:citations[]- Source citations from searchsearch_results[]- Full search results with metadatavideos[]- Video results from search
Usage Details
Extended usage tracking specific to Perplexity:| Field | Source | Description |
|---|---|---|
completion_tokens_details.citation_tokens | usage.citation_tokens | Tokens used for citations |
completion_tokens_details.num_search_queries | usage.num_search_queries | Number of web search queries performed |
completion_tokens_details.reasoning_tokens | usage.reasoning_tokens | Tokens consumed by reasoning process |
usage.cost | usage.cost | Cost of the request |
Example Response
Streaming
Perplexity uses OpenAI-compatible streaming format. Event sequence:chat.completion.chunkevents with delta updates- Standard OpenAI finish reason mapping
Streaming with web search may return search results in final chunks.
Caveats
No Tool Support
No Tool Support
Severity: High
Behavior: Tool-related parameters are silently dropped
Impact: Function calling not available
Code:
chat.go:8-36Reasoning Effort Mapping
Reasoning Effort Mapping
Severity: Medium
Behavior:
"minimal" effort is mapped to "low" (Perplexity only supports low/medium/high)
Impact: Requested minimal effort becomes low effort
Code: chat.go:30-36, responses.go:25-30Reasoning Max Tokens Dropped
Reasoning Max Tokens Dropped
Severity: Low
Behavior:
reasoning.max_tokens is silently dropped
Impact: No control over reasoning token budget
Code: chat.go:29-36Stop Sequences Not Supported
Stop Sequences Not Supported
Severity: Low
Behavior:
stop parameter is silently dropped
Impact: Stop sequences not enforced
Code: chat.go:8-362. Responses API
The Responses API is adapted for Perplexity by converting to the Chat Completions format internally and returning results in Responses format.Request Parameters
Parameter Mapping
| Parameter | Transformation |
|---|---|
max_output_tokens | Direct pass-through to max_tokens |
temperature, top_p | Direct pass-through |
instructions | Converted to system message (prepended) |
reasoning.effort | Mapped to reasoning_effort (see Reasoning & Effort) |
text.format | Passed through as response_format |
input (string/array) | Converted to messages |
Extra Parameters
Same Perplexity-specific search and configuration parameters as Chat Completions (see Perplexity-Specific Parameters).- Gateway
- Go SDK
Conversion Details
instructionsbecomes a system message prepended to input messagesinput(string or array) converted to user message(s)- Response converted to Responses API format with same search results and extended usage details

