Skip to main content

Quick Start

Get started with Perplexity AI in under 2 minutes:
from portkey_ai import Portkey

# 1. Install: pip install portkey-ai
# 2. Add @perplexity-ai provider in model catalog
# 3. Use it:

portkey = Portkey(api_key="PORTKEY_API_KEY")

response = portkey.chat.completions.create(
    model="@perplexity-ai/sonar",
    messages=[{"role": "user", "content": "Hello!"}]
)

print(response.choices[0].message.content)
import Portkey from 'portkey-ai'

// 1. Install: npm install portkey-ai
// 2. Add @perplexity-ai provider in model catalog
// 3. Use it:

const portkey = new Portkey({
    apiKey: "PORTKEY_API_KEY"
})

const response = await portkey.chat.completions.create({
    model: "@perplexity-ai/sonar",
    messages: [{ role: "user", content: "Hello!" }]
})

console.log(response.choices[0].message.content)
from openai import OpenAI
from portkey_ai import PORTKEY_GATEWAY_URL

# 1. Install: pip install openai portkey-ai
# 2. Add @perplexity-ai provider in model catalog
# 3. Use it:

client = OpenAI(
    api_key="PORTKEY_API_KEY",  # Portkey API key
    base_url=PORTKEY_GATEWAY_URL
)

response = client.chat.completions.create(
    model="@perplexity-ai/sonar",
    messages=[{"role": "user", "content": "Hello!"}]
)

print(response.choices[0].message.content)
import OpenAI from "openai"
import { PORTKEY_GATEWAY_URL } from "portkey-ai"

// 1. Install: npm install openai portkey-ai
// 2. Add @perplexity-ai provider in model catalog
// 3. Use it:

const client = new OpenAI({
    apiKey: "PORTKEY_API_KEY",  // Portkey API key
    baseURL: PORTKEY_GATEWAY_URL
})

const response = await client.chat.completions.create({
    model: "@perplexity-ai/sonar",
    messages: [{ role: "user", content: "Hello!" }]
})

console.log(response.choices[0].message.content)
# 1. Add @perplexity-ai provider in model catalog
# 2. Use it:

curl https://api.portkey.ai/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "x-portkey-api-key: $PORTKEY_API_KEY" \
  -d '{
    "model": "@perplexity-ai/sonar",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

Add Provider in Model Catalog

Before making requests, add Perplexity AI to your Model Catalog:
  1. Go to Model Catalog → Add Provider
  2. Select Perplexity AI
  3. Enter your Perplexity API key
  4. Name your provider (e.g., perplexity-ai)

Complete Setup Guide

See all setup options and detailed configuration instructions

Perplexity AI Capabilities

Citations

To get citations in responses, disable strict OpenAI compliance.

Search Domain Filter (Beta)

Limit citations to specific domains:
from portkey_ai import Portkey

portkey = Portkey(api_key="PORTKEY_API_KEY")

response = portkey.chat.completions.create(
    model="@perplexity-ai/sonar",
    messages=[{"role": "user", "content": "Tell me about electric cars"}],
    search_domain_filter=["tesla.com", "ford.com", "-competitors.com"]  # '-' prefix for blacklist
)

print(response.choices[0].message.content)
import Portkey from 'portkey-ai';

const portkey = new Portkey({
    apiKey: 'PORTKEY_API_KEY'
});

const response = await portkey.chat.completions.create({
    model: "@perplexity-ai/sonar",
    messages: [{ role: "user", content: "Tell me about electric cars" }],
    search_domain_filter: ["tesla.com", "ford.com", "-competitors.com"]  // '-' prefix for blacklist
});

console.log(response.choices[0].message.content);

Search Recency Filter

Filter results by time interval:
from portkey_ai import Portkey

portkey = Portkey(api_key="PORTKEY_API_KEY")

response = portkey.chat.completions.create(
    model="@perplexity-ai/sonar",
    messages=[{"role": "user", "content": "Latest developments in AI?"}],
    search_recency_filter="week"  # Options: month, week, day, hour
)

print(response.choices[0].message.content)
import Portkey from 'portkey-ai';

const portkey = new Portkey({
    apiKey: 'PORTKEY_API_KEY'
});

const response = await portkey.chat.completions.create({
    model: "@perplexity-ai/sonar",
    messages: [{ role: "user", content: "Latest developments in AI?" }],
    search_recency_filter: "week"  // Options: month, week, day, hour
});

console.log(response.choices[0].message.content);

Web Search Options

Control search context size:
from portkey_ai import Portkey

portkey = Portkey(api_key="PORTKEY_API_KEY")

response = portkey.chat.completions.create(
    model="@perplexity-ai/sonar",
    messages=[{"role": "user", "content": "Latest developments in AI?"}],
    web_search_options={
        "search_context_size": "high"  # Options: low, medium, high
    }
)

print(response.choices[0].message.content)
import Portkey from 'portkey-ai';

const portkey = new Portkey({
    apiKey: 'PORTKEY_API_KEY'
});

const response = await portkey.chat.completions.create({
    model: "@perplexity-ai/sonar",
    messages: [{ role: "user", content: "Latest developments in AI?" }],
    web_search_options: {
        search_context_size: "high"  // Options: low, medium, high
    }
});

console.log(response.choices[0].message.content);

Return Images (Beta)

Enable image results in responses:
from portkey_ai import Portkey

portkey = Portkey(api_key="PORTKEY_API_KEY")

response = portkey.chat.completions.create(
    model="@perplexity-ai/sonar",
    messages=[{"role": "user", "content": "Show me pictures of electric cars"}],
    return_images=True
)

print(response.choices[0].message.content)
import Portkey from 'portkey-ai';

const portkey = new Portkey({
    apiKey: 'PORTKEY_API_KEY'
});

const response = await portkey.chat.completions.create({
    model: "@perplexity-ai/sonar",
    messages: [{ role: "user", content: "Show me pictures of electric cars" }],
    return_images: true
});

console.log(response.choices[0].message.content);
Get related questions in the response:
from portkey_ai import Portkey

portkey = Portkey(api_key="PORTKEY_API_KEY")

response = portkey.chat.completions.create(
    model="@perplexity-ai/sonar",
    messages=[{"role": "user", "content": "Tell me about electric cars"}],
    return_related_questions=True
)

print(response.choices[0].message.content)
import Portkey from 'portkey-ai';

const portkey = new Portkey({
    apiKey: 'PORTKEY_API_KEY'
});

const response = await portkey.chat.completions.create({
    model: "@perplexity-ai/sonar",
    messages: [{ role: "user", content: "Tell me about electric cars" }],
    return_related_questions: true
});

console.log(response.choices[0].message.content);

Supported Models

Perplexity offers online reasoning models with real-time search capabilities:
ModelContext LengthDescription
sonar127,072 tokensLatest Sonar model with real-time search
sonar-pro127,072 tokensAdvanced reasoning with deeper search
Check Perplexity’s documentation for the latest models.

Next Steps

Gateway Configs

Add fallbacks, load balancing, and more

Observability

Monitor and trace your Perplexity requests

Prompt Library

Manage and version your prompts

Metadata

Add custom metadata to requests
For complete SDK documentation:

SDK Reference

Complete Portkey SDK documentation
Last modified on March 13, 2026