# OpenAI Audio-compatible API — ВТекст 38

OpenAI SDK clients point `base_url` / `baseURL` at `https://vtext38.ru/api/v1` (suffix `/v1` required).
The SDK appends `/audio/transcriptions`.

- **Endpoint:** `POST https://vtext38.ru/api/v1/audio/transcriptions`
- **Auth:** `Authorization: Bearer <key>` preferred; `Token` is also accepted
- **Body:** `multipart/form-data` with `file`
- **Language:** Russian only (`ru`). Any `model` value is accepted and ignored.
- **Human docs:** https://vtext38.ru/api
- **OpenAPI:** https://vtext38.ru/openapi.json

## Fields

| Parameter | Description |
|---|---|
| `file` | Аудиофайл. Формат определяется по содержимому, не по имени. |
| `model` | Любое значение принимается. На результат не влияет, whisper-1 можно оставить. |
| `language` | Только русский (ru). Другой язык даёт ошибку 400. |
| `response_format` | json, verbose_json или text. Неизвестное значение считается json. |
| `diarize` | true включает разделение по говорящим. Поле наше; если его не передать, спикеров в ответе не будет. |

`prompt`, `temperature` and `timestamp_granularities` are ignored rather than rejected.

## Differences from OpenAI

- **В base_url нужен суффикс /v1.** В base_url или baseURL передайте адрес сервиса с /v1 на конце. SDK сам допишет /audio/transcriptions.
- **Синхронный запрос до десяти минут.** Соединение держится, пока идёт обработка, не дольше десяти минут.
- **Язык один.** Русский. Другой язык в запросе даёт понятную ошибку.

## Examples

### Python

```python
from openai import OpenAI

client = OpenAI(
    api_key="ВАШ_КЛЮЧ",
    base_url="https://vtext38.ru/api/v1",
)

with open("recording.mp3", "rb") as audio:
    result = client.audio.transcriptions.create(
        model="whisper-1",
        file=audio,
        language="ru",
        response_format="verbose_json",
    )

print(result.text)
```

### JavaScript

```javascript
import OpenAI from 'openai'
import { createReadStream } from 'node:fs'

const client = new OpenAI({
  apiKey: 'ВАШ_КЛЮЧ',
  baseURL: 'https://vtext38.ru/api/v1',
})

const result = await client.audio.transcriptions.create({
  model: 'whisper-1',
  file: createReadStream('recording.mp3'),
  language: 'ru',
  response_format: 'verbose_json',
})

console.log(result.text)
```

### cURL

```bash
curl -X POST \
  -H "Authorization: Bearer ВАШ_КЛЮЧ" \
  -F file="@recording.mp3" \
  -F model="whisper-1" \
  -F language="ru" \
  -F response_format="verbose_json" \
  "https://vtext38.ru/api/v1/audio/transcriptions"
```
