> ## Documentation Index
> Fetch the complete documentation index at: https://docs.portkey.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Perplexity AI

> Use Perplexity's online reasoning models with advanced search capabilities through Portkey.

## Quick Start

Get started with Perplexity AI in under 2 minutes:

<CodeGroup>
  ```python Python icon="python" theme={"system"}
  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)
  ```

  ```js Javascript icon="square-js" theme={"system"}
  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)
  ```

  ```python OpenAI Py icon="python" theme={"system"}
  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)
  ```

  ```js OpenAI JS icon="square-js" theme={"system"}
  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)
  ```

  ```sh cURL icon="square-terminal" theme={"system"}
  # 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!"}]
    }'
  ```
</CodeGroup>

## Add Provider in Model Catalog

Before making requests, add Perplexity AI to your Model Catalog:

1. Go to [**Model Catalog → Add Provider**](https://app.portkey.ai/model-catalog/providers)
2. Select **Perplexity AI**
3. Enter your [Perplexity API key](https://www.perplexity.ai/settings/api)
4. Name your provider (e.g., `perplexity-ai`)

<Card title="Complete Setup Guide" icon="book" href="/product/model-catalog">
  See all setup options and detailed configuration instructions
</Card>

***

## Responses API

Perplexity AI is a **native Responses API provider** on Portkey — requests are sent directly to Perplexity's Responses API endpoint. You can use the same [Responses API](/product/ai-gateway/responses-api) format with `@perplexity-ai` models. This is available on Portkey's AI Gateway (cloud and self-hosted).

<CodeGroup>
  ```python Python theme={"system"}
  from portkey_ai import Portkey

  portkey = Portkey(api_key="PORTKEY_API_KEY")

  response = portkey.responses.create(
      model="@perplexity-ai/sonar",
      input="What are the latest developments in AI?"
  )

  print(response.output_text)
  ```

  ```javascript JavaScript theme={"system"}
  import Portkey from 'portkey-ai';

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

  const response = await portkey.responses.create({
      model: "@perplexity-ai/sonar",
      input: "What are the latest developments in AI?"
  });

  console.log(response.output_text);
  ```

  ```sh cURL theme={"system"}
  curl https://api.portkey.ai/v1/responses \
    -H "Content-Type: application/json" \
    -H "x-portkey-api-key: $PORTKEY_API_KEY" \
    -d '{
      "model": "@perplexity-ai/sonar",
      "input": "What are the latest developments in AI?"
    }'
  ```
</CodeGroup>

<Card title="Responses API reference" icon="code" href="/product/ai-gateway/responses-api">
  Full Responses API docs — streaming, tools, instructions, and more
</Card>

***

## Perplexity AI Capabilities

### Citations

To get citations in responses, disable [strict OpenAI compliance](/product/ai-gateway/strict-open-ai-compliance).

### Search Domain Filter (Beta)

Limit citations to specific domains:

<CodeGroup>
  ```python Python theme={"system"}
  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)
  ```

  ```javascript Node.js theme={"system"}
  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);
  ```
</CodeGroup>

### Search Recency Filter

Filter results by time interval:

<CodeGroup>
  ```python Python theme={"system"}
  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)
  ```

  ```javascript Node.js theme={"system"}
  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);
  ```
</CodeGroup>

### Web Search Options

Control search context size:

<CodeGroup>
  ```python Python theme={"system"}
  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)
  ```

  ```javascript Node.js theme={"system"}
  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);
  ```
</CodeGroup>

### Return Images (Beta)

Enable image results in responses:

<CodeGroup>
  ```python Python theme={"system"}
  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)
  ```

  ```javascript Node.js theme={"system"}
  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);
  ```
</CodeGroup>

### Return Related Questions (Beta)

Get related questions in the response:

<CodeGroup>
  ```python Python theme={"system"}
  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)
  ```

  ```javascript Node.js theme={"system"}
  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);
  ```
</CodeGroup>

***

## Supported Models

Perplexity offers online reasoning models with real-time search capabilities:

| Model     | Context Length | Description                              |
| --------- | -------------- | ---------------------------------------- |
| sonar     | 127,072 tokens | Latest Sonar model with real-time search |
| sonar-pro | 127,072 tokens | Advanced reasoning with deeper search    |

Check [Perplexity's documentation](https://docs.perplexity.ai/) for the latest models.

***

## Next Steps

<CardGroup cols={2}>
  <Card title="Gateway Configs" icon="sliders" href="/product/ai-gateway">
    Add fallbacks, load balancing, and more
  </Card>

  <Card title="Observability" icon="chart-line" href="/product/observability">
    Monitor and trace your Perplexity requests
  </Card>

  <Card title="Prompt Library" icon="book" href="/product/prompt-engineering-studio">
    Manage and version your prompts
  </Card>

  <Card title="Metadata" icon="tag" href="/product/observability/metadata">
    Add custom metadata to requests
  </Card>
</CardGroup>

For complete SDK documentation:

<Card title="SDK Reference" icon="code" href="/api-reference/sdk/list">
  Complete Portkey SDK documentation
</Card>
