Единый API для всех AI-моделей
JinPix предоставляет единый REST API для доступа к текстовым, изображений и видео-моделям. Один ключ — все возможности.
https://api.jinpix.ai/v1
Быстрый старт
Чтобы начать работу с JinPix API, выполните три простых шага:
jp-sk-...Authorization: Bearer <ключ> и выберите модель.task_id для получения результата.Пример — генерация изображения
curl -X POST https://api.jinpix.ai/v1/generate/image \ -H "Authorization: Bearer jp-sk-ваш_ключ" \ -H "Content-Type: application/json" \ -d '{ "model": "seedream-5-lite", "prompt": "Закат над горами, фотореализм", "width": 1024, "height": 1024 }'
Ответ
{
"id": "gen_01j9xk2...",
"model": "seedream-5-lite",
"url": "https://cdn.jinpix.ai/gen/01j9xk2.webp",
"width": 1024,
"height": 1024,
"created_at": "2025-04-23T12:00:00Z"
}
Аутентификация
Все запросы к JinPix API должны содержать заголовок Authorization с вашим API-ключом.
Authorization: Bearer jp-sk-ваш_ключ_здесь
Текстовые модели
Эндпоинт чата совместим с форматом OpenAI. Вы можете использовать стандартный OpenAI SDK, просто изменив base_url.
Параметры запроса
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
model | string | ✓ | ID модели: gpt-4.1-mini, claude-sonnet-4.6, gemini-3.5-flash, grok-4.3 |
messages | array | ✓ | Массив сообщений с полями role и content |
temperature | float | — | Случайность ответа от 0 до 2 (по умолч. 1) |
max_tokens | integer | — | Максимальное количество токенов в ответе |
stream | boolean | — | Стриминг ответа по частям (SSE) |
from openai import OpenAI client = OpenAI( api_key="jp-sk-ваш_ключ", base_url="https://api.jinpix.ai/v1" ) response = client.chat.completions.create( model="gpt-4.1-mini", messages=[ {"role": "user", "content": "Привет! Расскажи о себе."} ], temperature=0.7 ) print(response.choices[0].message.content)
Генерация изображений
Эндпоинт /images/generations совместим с форматом OpenAI Images API. Запрос синхронный — ответ возвращает готовый URL изображения.
Параметры запроса
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
model | string | ✓ | seedream-5-lite — ByteDance Seedream 5 Lite (4 токена)nano-banana-pro — Gemini Flash Image (3 токена) |
prompt | string | ✓ | Текстовое описание изображения |
size | string | — | Зарезервировано (игнорируется), для совместимости с OpenAI SDK |
Ответ
{
"created": 1753900800,
"data": [
{ "url": "https://cdn.polza.ai/gen/abc123.webp" }
]
}
Примеры
curl -X POST https://api.jinpix.ai/v1/images/generations \ -H "Authorization: Bearer jp-sk-ваш_ключ" \ -H "Content-Type: application/json" \ -d '{ "model": "seedream-5-lite", "prompt": "Закат над горами, фотореализм" }'
from openai import OpenAI client = OpenAI( api_key="jp-sk-ваш_ключ", base_url="https://api.jinpix.ai/v1" ) response = client.images.generate( model="seedream-5-lite", prompt="Закат над горами, фотореализм", ) print(response.data[0].url)
import requests from langchain_openai import ChatOpenAI from langchain_core.tools import tool JINPIX_KEY = "jp-sk-ваш_ключ" # Инструмент для агента — генерирует изображение и возвращает URL @tool def generate_image(prompt: str) -> str: """Генерирует изображение по текстовому описанию и возвращает URL.""" r = requests.post( "https://api.jinpix.ai/v1/images/generations", headers={"Authorization": f"Bearer {JINPIX_KEY}"}, json={"model": "seedream-5-lite", "prompt": prompt}, timeout=130, ) r.raise_for_status() return r.json()["data"][0]["url"] llm = ChatOpenAI( model="gpt-4.1-mini", api_key=JINPIX_KEY, base_url="https://api.jinpix.ai/v1", ) # Привязываем инструмент к модели и запускаем llm_with_tools = llm.bind_tools([generate_image]) result = llm_with_tools.invoke("Нарисуй логотип стартапа в стиле минимализма") print(result.tool_calls)
timeout=130 в HTTP-клиенте, чтобы запрос не прервался раньше времени.
Генерация видео
Генерация видео — асинхронная операция. API сразу возвращает task_id, затем вы опрашиваете статус.
Параметры
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
model | string | ✓ | veo-3.1-fast, kling-3.0, seedance-2.0 |
prompt | string | ✓ | Описание видео (до 1000 символов) |
duration | integer | — | Длительность в секундах: 3–30 (по умолч. 5) |
aspect_ratio | string | — | 16:9, 9:16, 1:1 (по умолч. 16:9) |
image_url | string | — | URL начального кадра для image-to-video |
Список доступных моделей
{
"data": [
{ "id": "gpt-4.1-mini", "type": "text" },
{ "id": "gemini-2.5-flash", "type": "text" },
{ "id": "claude-sonnet-4.6", "type": "text" },
{ "id": "grok-3-fast", "type": "text" },
{ "id": "seedream-5-lite", "type": "image" },
{ "id": "nano-banana-pro", "type": "image" },
{ "id": "veo-3.1-fast", "type": "video" },
{ "id": "kling-3.0", "type": "video" },
{ "id": "seedance-2.0", "type": "video" }
]
}
Коды ошибок
| Код | Название | Описание |
|---|---|---|
400 | Bad Request | Неверные параметры запроса |
401 | Unauthorized | Отсутствует или неверный API-ключ |
403 | Forbidden | Действие недоступно на вашем плане |
429 | Too Many Requests | Превышен лимит запросов в минуту |
500 | Internal Server Error | Ошибка на стороне сервера |
503 | Service Unavailable | Модель временно недоступна |
{
"error": {
"code": "invalid_api_key",
"message": "The API key provided is invalid.",
"status": 401
}
}
Подключение AI-агентов
JinPix API совместим с форматом OpenAI, поэтому любой агентский фреймворк, поддерживающий кастомный base_url, заработает без изменений кода — нужно лишь указать адрес JinPix и ваш ключ.
LangChain
Установите пакет и передайте параметры JinPix при создании модели:
pip install langchain-openai
from langchain_openai import ChatOpenAI from langchain_core.messages import HumanMessage, SystemMessage # Создаём модель — указываем base_url и ключ JinPix llm = ChatOpenAI( model="gpt-4.1-mini", # или gemini-2.5-flash, claude-sonnet-4.6 и др. api_key="jp-sk-ваш_ключ", base_url="https://api.jinpix.ai/v1", temperature=0.7, ) messages = [ SystemMessage(content="Ты полезный ассистент."), HumanMessage(content="Напиши короткое стихотворение о море."), ] response = llm.invoke(messages) print(response.content)
from langchain_openai import ChatOpenAI from langchain.agents import AgentExecutor, create_tool_calling_agent from langchain_core.prompts import ChatPromptTemplate from langchain_core.tools import tool # Пример инструмента агента @tool def get_weather(city: str) -> str: """Возвращает текущую погоду в городе.""" return f"В {city} сейчас 22°C, ясно." llm = ChatOpenAI( model="gpt-4.1-mini", api_key="jp-sk-ваш_ключ", base_url="https://api.jinpix.ai/v1", ) prompt = ChatPromptTemplate.from_messages([ ("system", "Ты полезный ассистент с доступом к инструментам."), ("human", "{input}"), ("placeholder", "{agent_scratchpad}"), ]) agent = create_tool_calling_agent(llm, [get_weather], prompt) executor = AgentExecutor(agent=agent, tools=[get_weather], verbose=True) result = executor.invoke({"input": "Какая погода в Москве?"}) print(result["output"])
AutoGen (Microsoft)
AutoGen позволяет создавать мультиагентные диалоги. Настройте llm_config с параметрами JinPix:
pip install pyautogen
import autogen # Конфигурация модели через JinPix llm_config = { "config_list": [ { "model": "gpt-4.1-mini", # любая текстовая модель JinPix "api_key": "jp-sk-ваш_ключ", "base_url": "https://api.jinpix.ai/v1", } ], "temperature": 0.5, } # Агент-ассистент assistant = autogen.AssistantAgent( name="assistant", llm_config=llm_config, system_message="Ты опытный Python-разработчик.", ) # Агент-пользователь (завершает диалог автоматически) user_proxy = autogen.UserProxyAgent( name="user", human_input_mode="NEVER", max_consecutive_auto_reply=3, code_execution_config={"work_dir": ".", "use_docker": False}, ) # Запуск диалога user_proxy.initiate_chat( assistant, message="Напиши функцию, которая проверяет, является ли число простым.", )
Поддерживаемые модели для агентов
| ID модели | Провайдер | Сильные стороны |
|---|---|---|
gpt-4.1-mini | OpenAI | Быстрые задачи, низкая цена |
gpt-5.5 | OpenAI | Флагманская модель OpenAI |
gemini-3.5-flash | Длинный контекст, мультимодальность | |
gemini-3.1-flash-lite | Максимальная скорость, минимальная цена | |
claude-sonnet-4.6 | Anthropic | Длинные рассуждения, код |
claude-sonnet-5 | Anthropic | Флагманская модель Anthropic |
grok-4.3 | xAI | Актуальные данные, аналитика |
deepseek-v4-pro | DeepSeek | Глубокое мышление, math |
max_consecutive_auto_reply в AutoGen или устанавливайте max_iterations в LangChain, чтобы агент не зациклился.
SDK и примеры
JinPix совместим с OpenAI SDK для чат-запросов. Для образных и видео-генераций используйте стандартный HTTP-клиент.
// Генерация видео (асинхронно) const res = await fetch("https://api.jinpix.ai/v1/generate/video", { method: "POST", headers: { "Authorization": "Bearer jp-sk-ваш_ключ", "Content-Type": "application/json" }, body: JSON.stringify({ model: "veo-3.1-fast", prompt: "Полёт над ночным городом, синематик", duration: 5, aspect_ratio: "16:9" }) }); const { task_id } = await res.json(); // Опрос статуса const poll = async () => { const status = await fetch(`https://api.jinpix.ai/v1/tasks/${task_id}`, { headers: { "Authorization": "Bearer jp-sk-ваш_ключ" } }).then(r => r.json()); if (status.state === "completed") return status.url; await new Promise(r => setTimeout(r, 3000)); return poll(); }; const videoUrl = await poll(); console.log(videoUrl);
Попробовать API
Отправьте запрос прямо из браузера — без настройки окружения. Ключ хранится только в сессии и нигде не передаётся на наши серверы помимо заголовка запроса.