# Структурированный вывод

Получайте JSON от модели через response_format — по JSON Schema или без схемы.

## JSON по схеме

`response_format` с типом `json_schema` просит модель вернуть JSON, соответствующий вашей схеме. Роутер отправляет такой запрос только на маршруты с поддержкой структурированного вывода (возможность **Структурированный вывод** в [каталоге](/models)); для модели без нее ответ — `400` «no route».

```json
{
  "model": "openai/gpt-4o-mini",
  "messages": [{ "role": "user", "content": "Extract the city and the date: meet me in Kazan on 3 May." }],
  "response_format": {
    "type": "json_schema",
    "json_schema": {
      "name": "meeting",
      "strict": true,
      "schema": {
        "type": "object",
        "properties": { "city": { "type": "string" }, "date": { "type": "string" } },
        "required": ["city", "date"],
        "additionalProperties": false
      }
    }
  }
}
```

`message.content` в ответе — JSON-строка: разберите ее.

## Любой валидный JSON

`{"type": "json_object"}` запрашивает валидный JSON без схемы. Роутер не проверяет, поддерживает ли это модель: укажите в промпте, что вам нужен JSON, и обрабатывайте ошибку разбора.

## Советы

- Делайте схему компактной: она оплачивается как входные токены.
- Даже со `strict` проверяйте результат в коде; ответ, обрезанный по `max_tokens` (`finish_reason: "length"`), — невалидный JSON.
