Документация API
Jetstream — шлюз к моделям OpenAI, Anthropic, Google, xAI, DeepSeek и другим. Вы используете те же SDK и форматы запросов — только меняете base_url и ключ. Все параметры, стриминг, tools, vision — работают без изменений.
Аутентификация
Все запросы требуют API-ключ Jetstream. Для OpenAI-совместимых эндпоинтов — заголовок Authorization: Bearer. Для Anthropic — x-api-key.
# OpenAI, Google, xAI, DeepSeek, Mistral, Qwen, Llama
Authorization: Bearer jts_ваш_ключ
# Anthropic (Claude)
x-api-key: jts_ваш_ключ
anthropic-version: 2023-06-01
Ключ начинается с jts_. Получить его можно в личном кабинете после регистрации.
Base URL по провайдерам
Каждый провайдер использует свой суффикс. OpenAI-совместимый формат принимают OpenAI, xAI, DeepSeek, Mistral, Qwen, Llama и другие.
| Провайдер | Base URL | Формат |
|---|---|---|
| OpenAI | https://jetstream-ai.ru/_openai/v1 | OpenAI Chat Completions |
| Anthropic | https://jetstream-ai.ru/_claude | Anthropic Messages API |
https://jetstream-ai.ru/_google/v1 | Google Gemini API | |
| xAI (Grok) | https://jetstream-ai.ru/_openai/v1 | OpenAI Chat Completions |
| DeepSeek | https://jetstream-ai.ru/_openai/v1 | OpenAI Chat Completions |
| Mistral | https://jetstream-ai.ru/_openai/v1 | OpenAI Chat Completions |
| Qwen / Llama | https://jetstream-ai.ru/_openai/v1 | OpenAI Chat Completions |
OpenAI-совместимый API
Используется для моделей OpenAI, xAI (Grok), DeepSeek, Mistral, Qwen, Llama и других. Совместим с любым клиентом, который поддерживает OpenAI Chat Completions.
curl https://jetstream-ai.ru/_openai/v1/chat/completions \
-H "Authorization: Bearer jts_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4.1",
"messages": [{"role": "user", "content": "Привет!"}],
"max_tokens": 1024
}'
from openai import OpenAI
client = OpenAI(
base_url="https://jetstream-ai.ru/_openai/v1",
api_key="jts_ваш_ключ",
)
response = client.chat.completions.create(
model="gpt-4.1",
messages=[{"role": "user", "content": "Привет!"}],
max_tokens=1024,
)
print(response.choices[0].message.content)
import OpenAI from 'openai';
const client = new OpenAI({
baseURL: 'https://jetstream-ai.ru/_openai/v1',
apiKey: 'jts_ваш_ключ',
});
const response = await client.chat.completions.create({
model: 'gpt-4.1',
messages: [{ role: 'user', content: 'Привет!' }],
max_tokens: 1024,
});
console.log(response.choices[0].message.content);
Модели OpenAI
gpt-5.5 gpt-5.5-pro gpt-5.4 gpt-5.4-pro gpt-5.4-mini gpt-5.4-nano gpt-5-mini gpt-5-nano gpt-5 gpt-4.1
Модели xAI (Grok)
curl https://jetstream-ai.ru/_openai/v1/chat/completions \
-H "Authorization: Bearer jts_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"model": "grok-4",
"messages": [{"role": "user", "content": "Привет!"}]
}'
client = OpenAI(
base_url="https://jetstream-ai.ru/_openai/v1",
api_key="jts_ваш_ключ",
)
response = client.chat.completions.create(
model="grok-4",
messages=[{"role": "user", "content": "Привет!"}],
)
const response = await client.chat.completions.create({
model: 'grok-4', // grok-4-fast, grok-code-fast-1, grok-3, grok-3-mini
messages: [{ role: 'user', content: 'Привет!' }],
});
grok-4 grok-4-fast grok-code-fast-1 grok-3 grok-3-mini
Модели DeepSeek
curl https://jetstream-ai.ru/_openai/v1/chat/completions \
-H "Authorization: Bearer jts_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v3.2",
"messages": [{"role": "user", "content": "Привет!"}]
}'
response = client.chat.completions.create(
model="deepseek-v3.2", # или deepseek-r1, deepseek-coder-v2
messages=[{"role": "user", "content": "Привет!"}],
)
const response = await client.chat.completions.create({
model: 'deepseek-v3.2', // deepseek-v3.1, deepseek-r1, deepseek-coder-v2
messages: [{ role: 'user', content: 'Привет!' }],
});
deepseek-v3.2 deepseek-v3.1 deepseek-r1 deepseek-coder-v2
Другие модели (Mistral, Qwen, Llama)
mistral-large-2411 mistral-medium-3 codestral-25.01 qwen3-235b-a22b qwen3-coder qwen3-vl-plus llama-4-maverick llama-3.3-70b kimi-k2-instruct
Anthropic Messages API
Используйте официальный Anthropic SDK или REST. Замените base_url на Jetstream, остальное работает без изменений.
curl https://jetstream-ai.ru/_claude/v1/messages \
-H "x-api-key: jts_ваш_ключ" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Привет!"}]
}'
import anthropic
client = anthropic.Anthropic(
base_url="https://jetstream-ai.ru/_claude",
auth_token="jts_ваш_ключ",
)
message = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[{"role": "user", "content": "Привет!"}],
)
print(message.content[0].text)
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic({
baseURL: 'https://jetstream-ai.ru/_claude',
authToken: 'jts_ваш_ключ',
});
const message = await client.messages.create({
model: 'claude-sonnet-4-6',
max_tokens: 1024,
messages: [{ role: 'user', content: 'Привет!' }],
});
console.log(message.content[0].text);
Подключение Claude Code
Установите переменные окружения — Claude Code автоматически подхватит их:
export ANTHROPIC_BASE_URL=https://jetstream-ai.ru/_claude
export ANTHROPIC_AUTH_TOKEN=jts_ваш_ключ
claude # ✓ готово
claude-opus-4-7 claude-sonnet-4-6 claude-haiku-4-5 claude-opus-4-1 claude-sonnet-4-5 claude-3-7-sonnet
Google Gemini API
Нативный формат Google Generative AI. Используйте google-generativeai SDK или REST.
curl https://jetstream-ai.ru/_google/v1/models/gemini-2.5-pro:generateContent \
-H "Authorization: Bearer jts_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"contents": [{"parts": [{"text": "Привет!"}]}]
}'
import google.generativeai as genai
genai.configure(
api_key="jts_ваш_ключ",
transport="rest",
client_options={"api_endpoint": "https://jetstream-ai.ru/_google"},
)
model = genai.GenerativeModel("gemini-2.5-pro")
response = model.generate_content("Привет!")
print(response.text)
import { GoogleGenerativeAI } from '@google/generative-ai';
const genAI = new GoogleGenerativeAI('jts_ваш_ключ', {
baseUrl: 'https://jetstream-ai.ru/_google',
});
const model = genAI.getGenerativeModel({ model: 'gemini-2.5-pro' });
const result = await model.generateContent('Привет!');
console.log(result.response.text());
gemini-2.5-pro gemini-2.5-flash gemini-2.5-flash-lite gemini-2.0-flash
Стриминг
Server-Sent Events. Добавьте stream: true — токены придут по мере генерации.
curl https://jetstream-ai.ru/_openai/v1/chat/completions \
-H "Authorization: Bearer jts_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4.1",
"messages": [{"role": "user", "content": "Напиши эссе о космосе"}],
"stream": true
}'
stream = client.chat.completions.create(
model="gpt-4.1",
messages=[{"role": "user", "content": "Напиши эссе о космосе"}],
stream=True,
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="", flush=True)
const stream = await client.chat.completions.create({
model: 'gpt-4.1',
messages: [{ role: 'user', content: 'Напиши эссе о космосе' }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? '');
}
Стриминг Anthropic
curl https://jetstream-ai.ru/_claude/v1/messages \
-H "x-api-key: jts_ваш_ключ" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"stream": true,
"messages": [{"role": "user", "content": "Напиши эссе"}]
}'
with client.messages.stream(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[{"role": "user", "content": "Напиши эссе"}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
const stream = client.messages.stream({
model: 'claude-sonnet-4-6',
max_tokens: 1024,
messages: [{ role: 'user', content: 'Напиши эссе' }],
});
for await (const event of stream) {
if (event.type === 'content_block_delta')
process.stdout.write(event.delta.text ?? '');
}
Function Calling / Tools
Работает со всеми моделями, поддерживающими tools. Формат запроса — стандартный OpenAI или Anthropic.
curl https://jetstream-ai.ru/_openai/v1/chat/completions \
-H "Authorization: Bearer jts_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4.1",
"messages": [{"role": "user", "content": "Погода в Москве?"}],
"tools": [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Получить погоду в городе",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string"}
},
"required": ["city"]
}
}
}],
"tool_choice": "auto"
}'
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Получить погоду в городе",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string"}
},
"required": ["city"],
},
},
}]
response = client.chat.completions.create(
model="gpt-4.1",
messages=[{"role": "user", "content": "Погода в Москве?"}],
tools=tools,
tool_choice="auto",
)
# Если модель вызвала функцию:
tool_call = response.choices[0].message.tool_calls[0]
print(tool_call.function.name) # get_weather
print(tool_call.function.arguments) # '{"city": "Москва"}'
const response = await client.chat.completions.create({
model: 'gpt-4.1',
messages: [{ role: 'user', content: 'Погода в Москве?' }],
tools: [{
type: 'function',
function: {
name: 'get_weather',
description: 'Получить погоду в городе',
parameters: {
type: 'object',
properties: { city: { type: 'string' } },
required: ['city'],
},
},
}],
tool_choice: 'auto',
});
const toolCall = response.choices[0].message.tool_calls?.[0];
console.log(toolCall?.function.name); // get_weather
Vision / Изображения
Поддерживается в моделях с тегом vision. Передайте изображение как URL или base64.
curl https://jetstream-ai.ru/_openai/v1/chat/completions \
-H "Authorization: Bearer jts_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4.1",
"messages": [{
"role": "user",
"content": [
{"type": "image_url", "image_url": {"url": "https://example.com/photo.jpg"}},
{"type": "text", "text": "Что на изображении?"}
]
}]
}'
response = client.chat.completions.create(
model="gpt-4.1",
messages=[{
"role": "user",
"content": [
{"type": "image_url",
"image_url": {"url": "https://example.com/photo.jpg"}},
{"type": "text", "text": "Что на изображении?"},
],
}],
)
print(response.choices[0].message.content)
const response = await client.chat.completions.create({
model: 'gpt-4.1',
messages: [{
role: 'user',
content: [
{ type: 'image_url', image_url: { url: 'https://example.com/photo.jpg' } },
{ type: 'text', text: 'Что на изображении?' },
],
}],
});
Vision через Anthropic (Claude)
curl https://jetstream-ai.ru/_claude/v1/messages \
-H "x-api-key: jts_ваш_ключ" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"messages": [{
"role": "user",
"content": [
{"type": "image", "source": {"type": "url", "url": "https://example.com/photo.jpg"}},
{"type": "text", "text": "Что на изображении?"}
]
}]
}'
message = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[{
"role": "user",
"content": [
{"type": "image",
"source": {"type": "url", "url": "https://example.com/photo.jpg"}},
{"type": "text", "text": "Что на изображении?"},
],
}],
)
const message = await client.messages.create({
model: 'claude-sonnet-4-6',
max_tokens: 1024,
messages: [{
role: 'user',
content: [
{ type: 'image', source: { type: 'url', url: 'https://example.com/photo.jpg' } },
{ type: 'text', text: 'Что на изображении?' },
],
}],
});
System Prompt
curl https://jetstream-ai.ru/_openai/v1/chat/completions \
-H "Authorization: Bearer jts_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4.1",
"messages": [
{"role": "system", "content": "Ты помощник для анализа кода. Отвечай кратко."},
{"role": "user", "content": "Что делает этот код?"}
]
}'
response = client.chat.completions.create(
model="gpt-4.1",
messages=[
{"role": "system", "content": "Ты помощник для анализа кода."},
{"role": "user", "content": "Что делает этот код?"},
],
)
const response = await client.chat.completions.create({
model: 'gpt-4.1',
messages: [
{ role: 'system', content: 'Ты помощник для анализа кода.' },
{ role: 'user', content: 'Что делает этот код?' },
],
});
System Prompt в Anthropic
curl https://jetstream-ai.ru/_claude/v1/messages \
-H "x-api-key: jts_ваш_ключ" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"system": "Ты помощник для анализа кода. Отвечай кратко.",
"messages": [{"role": "user", "content": "Что делает этот код?"}]
}'
message = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
system="Ты помощник для анализа кода. Отвечай кратко.",
messages=[{"role": "user", "content": "Что делает этот код?"}],
)
const message = await client.messages.create({
model: 'claude-sonnet-4-6',
max_tokens: 1024,
system: 'Ты помощник для анализа кода. Отвечай кратко.',
messages: [{ role: 'user', content: 'Что делает этот код?' }],
});
Python SDK
# OpenAI-совместимые модели
pip install openai
# Anthropic (Claude)
pip install anthropic
# Google (Gemini)
pip install google-generativeai
# .env
OPENAI_API_KEY=jts_ваш_ключ
OPENAI_BASE_URL=https://jetstream-ai.ru/_openai/v1
ANTHROPIC_AUTH_TOKEN=jts_ваш_ключ
ANTHROPIC_BASE_URL=https://jetstream-ai.ru/_claude
Node.js / TypeScript SDK
# OpenAI-совместимые модели
npm install openai
# Anthropic (Claude)
npm install @anthropic-ai/sdk
# Google (Gemini)
npm install @google/generative-ai
OPENAI_API_KEY=jts_ваш_ключ
OPENAI_BASE_URL=https://jetstream-ai.ru/_openai/v1