# Perplexity Sonar Pro

**API:** Data API

**Endpoint:** `POST /v1/beta/perplexity/sonar-pro`

**Tags:** Perplexity API

Создаёт ответ на составной вопрос с использованием веб-поиска и цитирования. model и messages обязательны; для этого эндпоинта используйте model sonar-pro. Этот публичный контракт охватывает нестриминговые JSON-ответы со stream false. Читайте ответ и его источники в choices[].message.content, citations и search_results. usage сообщает о потреблении ресурсов, а не о списании кредитов Felo.

### Справочные цены

- Тарификация: стоимость ответа по данным провайдера.
- Справочная оценка запроса: USD 0.11273.
- Справочный множитель для клиента: 1.0. Не применяйте его повторно к уже рассчитанной сумме клиента.

Справочные метаданные, а не коммерческое предложение для аккаунта, гарантированная цена или лимит расходов. Кредиты ресурсов — не кредиты Felo. Итоговые списания определяются записями биллинга Felo.

## Base URL

- `https://openapi.felo.ai`

## Authentication

- `FeloBearerAuth` (http bearer, bearer format Felo API Key)
- `FeloApiKey` (apiKey in header `X-API-Key`)

## Request body

Required: **yes**

### application/json

Schema:

```json
{
  "type": "object",
  "required": [
    "model",
    "messages"
  ],
  "properties": {
    "model": {
      "type": "string",
      "description": "Используемая модель Sonar.",
      "enum": [
        "sonar",
        "sonar-pro",
        "sonar-reasoning-pro",
        "sonar-deep-research"
      ]
    },
    "messages": {
      "type": "array",
      "description": "Список сообщений, составляющих текущий диалог.",
      "items": {
        "type": "object",
        "required": [
          "role",
          "content"
        ],
        "properties": {
          "role": {
            "type": "string",
            "enum": [
              "system",
              "user",
              "assistant"
            ],
            "description": "Роль автора сообщения."
          },
          "content": {
            "type": "string",
            "description": "Содержимое сообщения."
          }
        }
      }
    },
    "max_tokens": {
      "type": "integer",
      "description": "Максимальное количество токенов для генерации в ответе."
    },
    "temperature": {
      "type": "number",
      "description": "Температура сэмплирования от 0 до 2. Меньшие значения делают вывод более сфокусированным и детерминированным.",
      "default": 0.2,
      "minimum": 0,
      "maximum": 2
    },
    "top_p": {
      "type": "number",
      "description": "Параметр нуклеусного сэмплирования. Модель учитывает токены с вероятностной массой top_p.",
      "default": 0.9,
      "minimum": 0,
      "maximum": 1
    },
    "top_k": {
      "type": "integer",
      "description": "Количество токенов, сохраняемых для top-k фильтрации.",
      "default": 0,
      "minimum": 0,
      "maximum": 2048
    },
    "stream": {
      "type": "boolean",
      "description": "Стримить ли ответ с помощью server-sent events.",
      "default": false
    },
    "search_context": {
      "type": "string",
      "description": "Управляет объёмом используемого поискового контекста. Влияет на стоимость запроса.",
      "enum": [
        "low",
        "medium",
        "high"
      ],
      "default": "low"
    },
    "frequency_penalty": {
      "type": "number",
      "description": "Штрафует новые токены на основе их текущей частоты в тексте. Положительные значения снижают вероятность дословного повторения той же строки.",
      "default": 1,
      "minimum": 0,
      "maximum": 2
    },
    "presence_penalty": {
      "type": "number",
      "description": "Штрафует новые токены в зависимости от того, встречались ли они в тексте. Положительные значения повышают вероятность обсуждения новых тем.",
      "default": 0,
      "minimum": -2,
      "maximum": 2
    },
    "return_citations": {
      "type": "boolean",
      "description": "Возвращать ли цитаты и результаты поиска в ответе.",
      "default": true
    },
    "search_recency_filter": {
      "type": "string",
      "description": "Фильтровать результаты поиска по давности.",
      "enum": [
        "month",
        "week",
        "day",
        "hour"
      ]
    },
    "search_domain_filter": {
      "type": "array",
      "description": "Ограничить поиск определёнными доменами.",
      "items": {
        "type": "string"
      }
    }
  }
}
```

Example:

```json
{
  "model": "sonar-pro",
  "messages": [
    {
      "role": "user",
      "content": "Compare Cache-Control no-cache and no-store, citing HTTP documentation."
    }
  ],
  "max_tokens": 1024,
  "stream": false
}
```

## Responses

### 200 — Успешный ответ с ИИ-ответом и цитированием

Headers:
- `X-Request-Id` (string) — Идентификатор запроса, который нужно указать при обращении в поддержку Felo.

**application/json**

Schema: `ResponseD5E2470Dd28B_ChatCompletionResponse` (`#/components/schemas/ResponseD5E2470Dd28B_ChatCompletionResponse`)

Example:

```json
{
  "id": "example-sonar-pro-completion",
  "model": "sonar-pro",
  "object": "chat.completion",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "no-cache requires validation before reuse; no-store prohibits storage. [1]"
      },
      "finish_reason": "stop"
    }
  ],
  "citations": [
    "https://www.rfc-editor.org/rfc/rfc9111.html"
  ],
  "search_results": [
    {
      "title": "HTTP Caching",
      "url": "https://www.rfc-editor.org/rfc/rfc9111.html"
    }
  ],
  "usage": {
    "prompt_tokens": 25,
    "completion_tokens": 40,
    "total_tokens": 65
  }
}
```

### 400 — Запрос не удалось обработать. Проверьте параметры запроса.

### 401 — Требуется действительный API-ключ Felo.

### 402 — Запрос не может быть выполнен: не выполнено требование биллинга.

### 403 — Аккаунту не разрешено выполнять эту операцию.

### 429 — Достигнут лимит запросов или расходов.

### 502 — Сервис не смог выполнить запрос.

### 503 — API или сервис биллинга временно недоступны.

### 504 — Истекло время ожидания обработки запроса.

### default — Ответ с ошибкой; сквозные ответы upstream могут использовать форматы провайдера

**application/json**

Schema:

```json
{}
```

## Schema definitions

### ResponseD5E2470Dd28B_ChatCompletionResponse

`#/components/schemas/ResponseD5E2470Dd28B_ChatCompletionResponse`

```json
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Уникальный идентификатор ответа."
    },
    "model": {
      "type": "string",
      "description": "Модель, использованная для ответа."
    },
    "object": {
      "type": "string",
      "example": "chat.completion"
    },
    "created": {
      "type": "integer",
      "description": "Временная метка Unix момента создания ответа."
    },
    "choices": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "index": {
            "type": "integer"
          },
          "message": {
            "type": "object",
            "properties": {
              "role": {
                "type": "string"
              },
              "content": {
                "type": "string",
                "description": "Ответ, сгенерированный ИИ, со встроенными ссылками на цитаты вида [1][2]."
              }
            }
          },
          "finish_reason": {
            "type": "string",
            "enum": [
              "stop",
              "length"
            ]
          }
        }
      }
    },
    "citations": {
      "type": "array",
      "description": "Список URL источников, на которые ссылаются в ответе.",
      "items": {
        "type": "string"
      }
    },
    "search_results": {
      "type": "array",
      "description": "Подробные результаты поиска с заголовками, фрагментами и URL.",
      "items": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "snippet": {
            "type": "string"
          },
          "date": {
            "type": "string"
          },
          "source": {
            "type": "string"
          }
        }
      }
    },
    "usage": {
      "type": "object",
      "properties": {
        "prompt_tokens": {
          "type": "integer"
        },
        "completion_tokens": {
          "type": "integer"
        },
        "total_tokens": {
          "type": "integer"
        },
        "search_context_size": {
          "type": "string"
        }
      }
    }
  }
}
```
