Начало работы
Spectra API совместим с OpenAI SDK. Вы можете использовать знакомые библиотеки на Python, JavaScript и других языках, просто указав наш base URL.
Создайте API-ключ
Перейдите в раздел API-ключей и создайте новый ключ.
Установите OpenAI SDK
pip install openai или npm install openai
Отправьте первый запрос
Укажите base_url и ваш API-ключ — готово!
Аутентификация
Все запросы к API требуют Bearer-токен в заголовке Authorization.
Authorization: Bearer sk-your-api-key
Base URL: https://api.spectra.ai/v1
API-ключи можно создать и управлять ими на странице API-ключей. Никогда не передавайте ключи в клиентском коде или публичных репозиториях.
Chat Completions
Генерация текстовых ответов на основе диалога. Поддерживает стриминг, function calling и structured output.
/v1/chat/completionsПараметры запроса
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| model | string | Да | ID модели (gpt-5.5, claude-opus-4.8 и др.) |
| messages | array | Да | Массив сообщений диалога |
| temperature | number | Нет | Температура выборки (0-2, по умолчанию 1) |
| max_tokens | integer | Нет | Максимальное количество токенов в ответе |
| stream | boolean | Нет | Включить потоковую передачу (по умолчанию false) |
| top_p | number | Нет | Nucleus sampling (0-1) |
Примеры
from openai import OpenAI
client = OpenAI(
api_key="sk-your-api-key",
base_url="https://api.spectra.ai/v1"
)
response = client.chat.completions.create(
model="gpt-5.5",
messages=[
{"role": "system", "content": "Ты полезный ассистент."},
{"role": "user", "content": "Привет! Расскажи о квантовых компьютерах."}
],
temperature=0.7,
max_tokens=1000
)
print(response.choices[0].message.content)Пример ответа
{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1700000000,
"model": "gpt-5.5",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Привет! Квантовые компьютеры — это..."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 25,
"completion_tokens": 150,
"total_tokens": 175
}
}Генерация изображений
Создание изображений по текстовому описанию. Поддерживает DALL-E 3, Stable Diffusion и другие модели.
/v1/images/generations| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| model | string | Нет | ID модели (dall-e-3 по умолчанию) |
| prompt | string | Да | Текстовое описание изображения |
| n | integer | Нет | Количество изображений (1-4) |
| size | string | Нет | Размер: 1024x1024, 1792x1024, 1024x1792 |
| quality | string | Нет | Качество: standard или hd |
response = client.images.generate(
model="dall-e-3",
prompt="Закат над горами в стиле импрессионизма",
size="1024x1024",
quality="hd",
n=1
)
image_url = response.data[0].url
print(image_url)Пример ответа
{
"created": 1700000000,
"data": [
{
"url": "https://api.spectra.ai/v1/storage/image/abc123.png",
"revised_prompt": "Закат над горными вершинами..."
}
]
}Аудио / TTS
Синтез речи (Text-to-Speech) и транскрипция аудио.
Синтез речи
/v1/audio/speech| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| model | string | Да | tts-1 или tts-1-hd |
| input | string | Да | Текст для озвучивания (до 4096 символов) |
| voice | string | Да | Голос: alloy, echo, fable, onyx, nova, shimmer |
| speed | number | Нет | Скорость (0.25-4.0, по умолчанию 1.0) |
response = client.audio.speech.create(
model="tts-1-hd",
voice="nova",
input="Привет! Это синтез речи через Spectra API."
)
response.stream_to_file("output.mp3")Эмбеддинги
Получение векторных представлений текста для семантического поиска, кластеризации и классификации.
/v1/embeddings| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| model | string | Да | text-embedding-3-small или text-embedding-3-large |
| input | string | array | Да | Текст или массив текстов |
| dimensions | integer | Нет | Размерность вектора (опционально) |
response = client.embeddings.create(
model="text-embedding-3-small",
input="Поисковый запрос: лучшие рестораны Москвы"
)
embedding = response.data[0].embedding
print(f"Размерность: {len(embedding)}")Пример ответа
{
"object": "list",
"data": [
{
"object": "embedding",
"index": 0,
"embedding": [0.0023, -0.009, 0.015, ...]
}
],
"model": "text-embedding-3-small",
"usage": {
"prompt_tokens": 8,
"total_tokens": 8
}
}Модели
Список доступных моделей и их стоимость.
/v1/models| Модель | Тип | Вход / 1M токенов | Выход / 1M токенов |
|---|---|---|---|
| gpt-5.5 | Текст | 3.00 ₽ | 12.00 ₽ |
| gpt-5-mini | Текст | 0.15 ₽ | 0.60 ₽ |
| claude-sonnet-4.6 | Текст | 3.00 ₽ | 15.00 ₽ |
| gemini-3.5 | Текст | 1.25 ₽ | 5.00 ₽ |
| midjourney-v7 | Изображение | ~40 ₽/изобр. | - |
| tts-1-hd | Аудио | ~30 ₽/1M симв. | - |
| text-embedding-3-small | Эмбеддинги | 0.02 ₽ | - |
| text-embedding-3-large | Эмбеддинги | 0.13 ₽ | - |
* Цены ориентировочные и могут отличаться. Актуальные цены доступны на странице тарифов.
Rate Limits
Лимиты запросов устанавливаются для каждого API-ключа. По умолчанию лимит составляет 60 запросов в минуту (RPM).
| Заголовок | Описание |
|---|---|
| X-RateLimit-Limit | Максимальное количество запросов в минуту |
| X-RateLimit-Remaining | Оставшееся количество запросов |
| X-RateLimit-Reset | Время сброса лимита (Unix timestamp) |
| Retry-After | Время ожидания (сек) при превышении лимита |
При превышении лимита API вернёт 429 Too Many Requests. Используйте экспоненциальный backoff для автоматических повторов.
Коды ошибок
API использует стандартные HTTP-коды статуса и возвращает JSON с описанием ошибки.
| Код | Тип | Описание |
|---|---|---|
| 400 | Bad Request | Неверный формат запроса или отсутствуют обязательные параметры |
| 401 | Unauthorized | Отсутствует или недействителен API-ключ |
| 402 | Payment Required | Недостаточно средств на балансе |
| 403 | Forbidden | Доступ запрещён для данного ключа |
| 404 | Not Found | Запрошенный ресурс или модель не найдены |
| 429 | Rate Limited | Превышен лимит запросов в минуту |
| 500 | Server Error | Внутренняя ошибка сервера |
| 503 | Service Unavailable | Сервис временно недоступен (обслуживание) |
Формат ошибки
{
"error": {
"message": "Недостаточно средств на балансе",
"type": "insufficient_balance",
"code": "402",
"param": null
}
}