Быстрый старт
Установите официальный SDK и сохраните ключ в окружении. Ключ нельзя встраивать во frontend-код или публиковать в репозитории.
macOS, Linux или Git Bash
pip install openai
export FOURGEN_API_KEY="4gen-..."
Windows PowerShell
pip install openai
$env:FOURGEN_API_KEY="4gen-..."
Получить каталог моделей
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["FOURGEN_API_KEY"],
base_url="https://api.4gen.ru/v1",
)
for model in client.models.list().data:
print(model.id)
cURL — macOS, Linux или Git Bash
curl --fail-with-body "https://api.4gen.ru/v1/models" \
-H "Authorization: Bearer $FOURGEN_API_KEY"
PowerShell
$headers = @{ Authorization = "Bearer $env:FOURGEN_API_KEY" }
Invoke-RestMethod -Method Get -Uri "https://api.4gen.ru/v1/models" -Headers $headers
Генерация
Idempotency-Key необязателен. Официальный OpenAI SDK работает без дополнительных заголовков. Для безопасного повтора запроса после сетевого сбоя передавайте уникальный ключ длиной 8–255 символов: повтор того же запроса вернёт исходный результат без повторной генерации и списания. Некорректный ключ даёт 400; тот же ключ с другим телом — 409.
Параметры запросов
| Метод | Обязательные | Основные необязательные | Ответ |
/chat/completions | model, messages | stream, stream_options, temperature, top_p, max_completion_tokens, frequency_penalty, presence_penalty, stop, seed, user, n, logit_bias, logprobs, top_logprobs, tools, tool_choice, parallel_tool_calls, response_format, modalities (text), prediction, prompt_cache_key, prompt_cache_options, reasoning_effort, safety_identifier, service_tier (auto/default), store=false, metadata, verbosity, extra_params | OpenAI Chat Completion JSON либо SSE, завершающийся data: [DONE] |
/images/generations | model, prompt | n (1–10), response_format (url/b64_json), size, quality, style, background, moderation, output_compression, output_format, partial_images, stream, user, extra_params | JSON с URL или base64 для каждого изображения |
/audio/speech | model, input, voice | response_format (mp3, opus, aac, flac, wav, pcm), speed (0.25–4), extra_params | Бинарное аудио; повторная ссылка — в X-4Gen-Media-URL |
/video/generations | model, prompt | duration, resolution, response_format (mp4/webm), extra_params | JSON с защищённым URL видео |
Legacy-поля чата. max_tokens автоматически преобразуется в max_completion_tokens, а functions/function_call — в tools/tool_choice. Не передавайте старое и новое поле одновременно: такой запрос неоднозначен и вернёт 422.
Пока не поддерживаются: аудиовывод чата, web_search_options, moderation, store=true и нестандартные уровни service_tier. Они возвращают 422 до запуска модели и резервирования денег.
Поддержка параметров и допустимые значения зависят от модели. Получайте их через GET /models/{model_id}: ответ содержит required_parameters и optional_parameters. Неизвестный, неподдерживаемый или конфликтующий параметр возвращает 422 и не запускает провайдера.
Текст
Совместимо с OpenAI Chat Completions
grok-4.6
Python + openai
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["FOURGEN_API_KEY"],
base_url="https://api.4gen.ru/v1",
)
response = client.chat.completions.create(
model="grok-4.6",
messages=[{"role": "user", "content": "Объясни квантовые вычисления простыми словами"}],
)
print(response.choices[0].message.content)
cURL — macOS, Linux или Git Bash
curl --fail-with-body "https://api.4gen.ru/v1/chat/completions" \
-H "Authorization: Bearer $FOURGEN_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: example-chat-001" \
--data '{"model":"grok-4.6","messages":[{"role":"user","content":"\u041e\u0431\u044a\u044f\u0441\u043d\u0438 \u043a\u0432\u0430\u043d\u0442\u043e\u0432\u044b\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438"}]}'
Windows PowerShell
$headers = @{
Authorization = "Bearer $env:FOURGEN_API_KEY"
"Idempotency-Key" = "example-chat-001"
}
$body = @'
{"model":"grok-4.6","messages":[{"role":"user","content":"Объясни квантовые вычисления простыми словами"}]}
'@
Invoke-RestMethod `
-Method Post `
-Uri "https://api.4gen.ru/v1/chat/completions" `
-Headers $headers `
-ContentType "application/json; charset=utf-8" `
-Body ([System.Text.Encoding]::UTF8.GetBytes($body))
Изображения
Совместимо с OpenAI Images
wan/v2.6/text-to-image
Python + openai
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["FOURGEN_API_KEY"],
base_url="https://api.4gen.ru/v1",
)
response = client.images.generate(
model="wan/v2.6/text-to-image",
prompt="Минималистичная обложка блога о технологиях",
response_format="url",
)
print(response.data[0].url)
cURL — macOS, Linux или Git Bash
curl --fail-with-body "https://api.4gen.ru/v1/images/generations" \
-H "Authorization: Bearer $FOURGEN_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: example-image-001" \
--data '{"model":"wan/v2.6/text-to-image","prompt":"\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u0430\u044f \u043e\u0431\u043b\u043e\u0436\u043a\u0430 \u0431\u043b\u043e\u0433\u0430 \u043e \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u0445","response_format":"url"}'
Windows PowerShell
$headers = @{
Authorization = "Bearer $env:FOURGEN_API_KEY"
"Idempotency-Key" = "example-image-001"
}
$body = @'
{"model":"wan/v2.6/text-to-image","prompt":"Минималистичная обложка блога о технологиях","response_format":"url"}
'@
Invoke-RestMethod `
-Method Post `
-Uri "https://api.4gen.ru/v1/images/generations" `
-Headers $headers `
-ContentType "application/json; charset=utf-8" `
-Body ([System.Text.Encoding]::UTF8.GetBytes($body))
Речь
Совместимо с OpenAI Audio Speech
Нет активной модели
Endpoint предусмотрен контрактом, но сейчас в каталоге нет активной модели этой категории. Проверяйте GET /models.
Видео
Расширение 4gen: raw HTTP, не метод OpenAI SDK
wan/v2.6/text-to-video
Python + requests
import os
import requests
response = requests.post(
"https://api.4gen.ru/v1/video/generations",
headers={
"Authorization": f"Bearer {os.environ['FOURGEN_API_KEY']}",
},
json={
"model": "wan/v2.6/text-to-video",
"prompt": "Камера летит над горным озером на рассвете",
},
timeout=600,
)
response.raise_for_status()
print(response.json()["data"][0]["url"])
cURL — macOS, Linux или Git Bash
curl --fail-with-body "https://api.4gen.ru/v1/video/generations" \
-H "Authorization: Bearer $FOURGEN_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: example-video-001" \
--data '{"model":"wan/v2.6/text-to-video","prompt":"\u041a\u0430\u043c\u0435\u0440\u0430 \u043b\u0435\u0442\u0438\u0442 \u043d\u0430\u0434 \u0433\u043e\u0440\u043d\u044b\u043c \u043e\u0437\u0435\u0440\u043e\u043c \u043d\u0430 \u0440\u0430\u0441\u0441\u0432\u0435\u0442\u0435"}'
Windows PowerShell
$headers = @{
Authorization = "Bearer $env:FOURGEN_API_KEY"
"Idempotency-Key" = "example-video-001"
}
$body = @'
{"model":"wan/v2.6/text-to-video","prompt":"Камера летит над горным озером на рассвете"}
'@
Invoke-RestMethod `
-Method Post `
-Uri "https://api.4gen.ru/v1/video/generations" `
-Headers $headers `
-ContentType "application/json; charset=utf-8" `
-Body ([System.Text.Encoding]::UTF8.GetBytes($body))
Ошибки
Ошибки возвращаются в едином JSON-объекте error с полями message, type, param и code.
400битый JSON или некорректный Idempotency-Key
401ключ отсутствует, неверен или отозван
402недостаточно средств
404модель или файл не найден
409Idempotency-Key повторён с другим телом
422параметр неверен или не поддерживается
429превышен лимит; учитывайте Retry-After
500внутренняя ошибка
502ошибка провайдера
503API или зависимость недоступны