API ВЕГА
English

JANCTION Render

Что такое JANCTION Render?

JANCTION Render — облачная ферма рендеринга на GPU для Blender. AI-агенты обращаются к ней через MCP-сервер или HTTP API. Отправьте файл .blend, скрипт bpy или 3D-файл (glTF / FBX / USD), получите предварительный просмотр за несколько секунд, а затем — кадры или MP4, отрендеренные на GPU NVIDIA от JANCTION. Для каждого предварительного просмотра также выносится заключение о проблемах — например, слишком тёмное или пересвеченное изображение, отсутствие освещения или объект за пределами кадра, — и предлагается код bpy для их исправления. Так агент может скорректировать сцену до финального рендеринга. Устанавливать Blender или иметь собственный GPU не требуется. При получении нового ключа начисляется приветственный кредит 100 JPY (один на сеть раз в 30 дней; для последующих ключей в той же сети доступен оставшийся баланс), а после сохранения карты — ещё 400 JPY. С карты ничего не списывается, бонус начисляется один раз на карту. Далее стоимость составляет 0.1 JPY за секунду работы GPU; предварительный просмотр бесплатен в пределах 2 GPU-минут в день. Сервисом управляет JasmyLab Inc.

AI-агенты могут рендерить проекты Blender на GPU JANCTION без локального запуска Blender. Сервис работает с Claude, ChatGPT, Claude Code, Codex, Cursor и любым MCP-клиентом: доступны MCP-сервер (удалённый и stdio), HTTP API и CLI.

JANCTION Render — отдельный продукт, не связанный со SmartRender (распределённым рендерингом JasmyLab для пользователей настольных компьютеров), Render.com или Render Network. Данные приведены по состоянию на 2026-10-08; основной источник — https://render.janction.jp/facts.json. Для нового ключа начисляется приветственный кредит 100 JPY (1,000 GPU-секунд, срок действия — 14 дней, карта не требуется), один раз на сеть каждые 30 дней. Для последующих ключей в той же сети доступен оставшийся баланс. Кроме того, после сохранения карты на странице, где за это ничего не списывается, один раз на карту начисляется ещё 400 JPY. После этого предварительные просмотры бесплатны в пределах 2 GPU-минут в день, а финальный рендеринг стоит 0.1 JPY за секунду работы GPU и оплачивается из предоплаченного кредита (платное использование началось 2026-10-08). Для одного задания можно отрендерить до 3,000 кадров; они обрабатываются частями по 240 кадров с одним идентификатором задания. Бесплатное время позволяет рендерить в разрешении 1080p, предоплаченный кредит — до 4K. Входные файлы и результаты удаляются через 24 часа после последнего использования; для ключей, на которые суммарно потрачено не менее 500 JPY, срок обычно составляет 7 дней.

Официальный сайт: https://render.janction.jp · Конечная точка MCP: https://render.janction.jp/mcp · Справочная информация: https://render.janction.jp/facts

Попробуйте сервис из терминала за несколько секунд — бесплатно и без регистрации. Понадобится uv; также можно выполнить pip install janction-render и заменить uvx:

uvx janction-render try                      # renders a sample scene and shows the free GPU time of your new key
uvx janction-render preview scene.blend      # your .blend, bpy script or 3D file
uvx janction-render render scene.blend --frames 1-48 --output mp4 --wait
uvx janction-render turntable model.glb      # a 360-degree turntable MP4 in one command (a path or an https link)
uvx janction-render shots model.glb --transparent   # four product shots (PNG)

Результат одной команды (реальные примеры)

Рендеринг выполнен 2026-10-10 на производственном GPU (NVIDIA RTX PRO 6000 Blackwell) с использованием образца WaterBottle из Khronos (общественное достояние, CC0). Скопируйте любую команду — она готова к запуску. Стоимость рассчитана из тарифа 0.1 JPY за секунду работы GPU и покрывается приветственным кредитом для нового ключа.

КомандаВремя работы GPUСтоимость
uvx janction-render shots https://github.com/KhronosGroup/glTF-Sample-Assets/blob/main/Models/WaterBottle/glTF-Binary/WaterBottle.glb13.9 sоколо 1.4 JPY
uvx janction-render turntable https://github.com/KhronosGroup/glTF-Sample-Assets/blob/main/Models/WaterBottle/glTF-Binary/WaterBottle.glb85.2 sоколо 8.5 JPY
uvx janction-render render https://render.janction.jp/samples/ex12_logo_ring_spin.py --frames 1-48 --size 1280x720 --engine eevee --output mp4 --wait54.1 sоколо 5.4 JPY

Команда shots создаёт четыре PNG-файла размером 1920x1080; команды turntable и render создают MP4 (здесь они показаны как GIF). Вместо ссылки укажите собственный .glb, .blend или скрипт bpy. Другие примеры и соответствующие скрипты доступны на странице https://render.janction.jp/examples.

Храните 3D-файлы в репозитории? Добавьте кнопку, чтобы любой пользователь мог запустить их рендеринг через собственный AI или терминал. Ссылки на страницы файлов в GitHub и Hugging Face работают без изменений; создать такую кнопку можно на странице https://render.janction.jp/go.

Руководства на официальном сайте

Codex + Blender · Cursor + Blender ·

ChatGPT + Blender · MCP-сервер для рендеринга в Blender

Sceneplane, собственный worker на Modal или RunPod и локальный Blender MCP — сравнение вариантов

Преобразование glTF, GLB или FBX в MP4 ·

Круговое видео товара на 360 градусов ·

Сколько стоит рендеринг в Blender

Информация на японском языке

Зачем использовать JANCTION Render?

  • Не нужны GPU и установленный Blender. Сценой может быть написанный агентом скрипт bpy, файл .blend или 3D-файл; Blender запускается на наших GPU.

  • Создан для агентов. Сначала можно получить предварительный просмотр (1–4 кадра за несколько секунд работы GPU), а перед финальным рендерингом — оценку времени и стоимости. Сервис возвращает структурированные сообщения об ошибках с вариантами исправления, позволяет задавать лимиты расходов для каждого ключа и безопасно повторять запросы с помощью Idempotency-Key.

  • Поддержка 3D-файлов и кругового обзора. glTF / GLB, FBX, USD, OBJ, STL, PLY и Alembic импортируются в пустую сцену с камерой и HDRI-освещением; параметр orbit=True создаёт круговой обзор. Для фиксированной стоимости доступны операции POST /v1/outcomes/turntable и /product-shot.

  • Прозрачные ограничения. Для нового ключа предоставляется приветственный кредит 100 JPY без привязки карты (срок действия — 14 дней; один кредит на сеть каждые 30 дней). После сохранения карты, с которой ничего не списывается, начисляется ещё 400 JPY. Далее стоимость составляет 0.1 JPY за секунду работы GPU; предварительный просмотр бесплатен в пределах 2 GPU-минут в день. Финальный рендеринг поддерживает до 3,000 кадров на инструкцию, обрабатываемых частями по 240 кадров. Бесплатное время позволяет рендерить в разрешении 1080p, предоплаченный кредит — до 4K. Используются собственные GPU JANCTION (NVIDIA RTX PRO 6000 Blackwell); если они заняты, задания ожидают в очереди, а ETA показывает это. Входные файлы и результаты удаляются через 24 часа после последнего использования; для ключей, на которые суммарно потрачено не менее 500 JPY, срок обычно составляет 7 дней. Данные никогда не используются для обучения.

  • Это не Render.com. Название совпадает, но продукт другой.

Быстрый старт

Claude.ai / ChatGPT (ничего устанавливать не нужно). Откройте Settings → Connectors → add https://render.janction.jp/mcp → Connect (бесплатный ключ создаётся на странице подтверждения доступа). Затем отправьте запрос:

Создай предварительный просмотр сцены https://render.janction.jp/samples/cube_scene.py

Предварительный просмотр из 4 кадров появится через несколько секунд. Чтобы использовать файл с компьютера, загрузите его на https://render.janction.jp/upload, получите ссылку, действующую 12 часов, и отправьте запрос: «Отрендери этот файл: ».

Claude Code.

claude mcp add --transport http janction-render https://render.janction.jp/mcp

Затем выполните /mcp, чтобы пройти аутентификацию, и отправьте запрос: «Создай небольшую уличную сцену в Blender с пролётом камеры и отрендери предварительный просмотр с помощью janction-render».

HTTP (любой язык).

{"api_key": "jr_..."} no sign-up curl -s -X POST https://render.janction.jp/v1/files -H "X-API-Key: $KEY" -F "file=@scene.blend" # -> {"scene_id": "f_..."} curl -s -X POST https://render.janction.jp/v1/jobs -H "X-API-Key: $KEY" -H "Content-Type: application/json"
-d '{"scene_id":"f_...","kind":"preview","frames":[1]}' # -> job_id; then GET /v1/jobs/{job_id}">

curl -s -X POST https://render.janction.jp/v1/keys                                   # -> {"api_key": "jr_..."}  no sign-up
curl -s -X POST https://render.janction.jp/v1/files -H "X-API-Key: $KEY" -F "file=@scene.blend"   # -> {"scene_id": "f_..."}
curl -s -X POST https://render.janction.jp/v1/jobs -H "X-API-Key: $KEY" -H "Content-Type: application/json" \
  -d '{"scene_id":"f_...","kind":"preview","frames":[1]}'                             # -> job_id; then GET /v1/jobs/{job_id}

Из собственного агента или приложения

Python (pip install janction-render; при первом вызове создаётся бесплатный ключ, который сохраняется в ~/.janction-render.json):

from janction_render.client import Client

c = Client()                                   # or Client(api_key="jr_...")
scene = c.upload("scene.py")                   # a bpy script, a .blend, or a .glb / .fbx / .usd / .obj file
job = c.submit(scene["scene_id"], kind="final", frame_start=1, frame_end=48, output="mp4")
job = c.wait(job["job_id"], timeout=1800)
print(job["status"], c.download(job["job_id"], "out", only="mp4"))

Оплата взимается за использование из предоплаченного баланса; подписка не нужна (тарифы: https://render.janction.jp/pricing).

Чтобы не запрашивать статус задачи периодически, укажите notify_url (https) в POST /v1/jobs: по завершении задачи сервер отправит один JSON POST (job.done /

job.failed со ссылками для скачивания). Заголовок Idempotency-Key делает безопасными повторные запросы. OpenAPI: https://render.janction.jp/openapi.json

Полный пример приложения: пользователь загружает GLB, приложение заказывает рендеринг товарных изображений по фиксированной цене, а webhook сохраняет изображения:

https://render.janction.jp/blender-render-api#embed

Фреймворки для агентов подключаются к удалённому MCP-серверу по адресу https://render.janction.jp/mcp, используя ключ как bearer-токен

(curl -s -X POST https://render.janction.jp/v1/keys создаёт ключ без регистрации).

OpenAI Agents SDK (укажите увеличенный тайм-аут: render_preview ждёт готовности изображения дольше стандартных 5 секунд):

import asyncio
from agents import Agent, Runner
from agents.mcp import MCPServerStreamableHttp

async def main():
    async with MCPServerStreamableHttp(name="janction-render", client_session_timeout_seconds=120,
                                       params={"url": "https://render.janction.jp/mcp",
                                               "headers": {"Authorization": "Bearer jr_..."}}) as render:
        agent = Agent(name="3D artist", instructions="Render Blender scenes with janction-render.", mcp_servers=[render])
        result = await Runner.run(agent, "Render a preview of https://render.janction.jp/samples/cube_scene.py")
        print(result.final_output)

asyncio.run(main())

LangChain (pip install langchain-mcp-adapters):

import asyncio
from langchain_mcp_adapters.client import MultiServerMCPClient

async def main():
    client = MultiServerMCPClient({"janction-render": {"url": "https://render.janction.jp/mcp", "transport": "streamable_http",
                                                       "headers": {"Authorization": "Bearer jr_..."}}})
    tools = await client.get_tools()           # render_preview, render_final, render_status, render_download, ...
    print([t.name for t in tools])

asyncio.run(main())

OpenAI Responses API (удалённый MCP; для render_final каждый раз запрашивается подтверждение, поскольку эта операция расходует средства):

from openai import OpenAI

client = OpenAI()
resp = client.responses.create(
    model="gpt-5",
    tools=[{"type": "mcp", "server_label": "janction_render", "server_url": "https://render.janction.jp/mcp",
            "authorization": "jr_...",
            "require_approval": {"never": {"tool_names": ["scene_info", "render_preview", "render_estimate",
                                                         "render_status", "render_download"]}}}],
    input="Render a preview of https://render.janction.jp/samples/cube_scene.py and give me the image link.",
)
print(resp.output_text)

Anthropic Messages API (коннектор MCP; fallbacks="default" повторно отправляет отклонённый запрос запасной модели):

import anthropic

client = anthropic.Anthropic()
response = client.beta.messages.create(
    model="claude-opus-5-5",
    max_tokens=16000,
    betas=["mcp-client-2025-11-20", "server-side-fallback-2026-07-01"],
    fallbacks="default",
    mcp_servers=[{"type": "url", "url": "https://render.janction.jp/mcp", "name": "janction-render",
                  "authorization_token": "jr_..."}],
    tools=[{"type": "mcp_toolset", "mcp_server_name": "janction-render"}],
    messages=[{"role": "user", "content": "Render a preview of https://render.janction.jp/samples/cube_scene.py"}],
)
for block in response.content:
    if block.type == "text":
        print(block.text)

Google ADK:

import os
from google.adk.agents import Agent
from google.adk.tools.mcp_tool import MCPToolset, StreamableHTTPConnectionParams

agent = Agent(
    name="renderer",
    model="gemini-2.5-flash",
    instruction="Render Blender scenes with JANCTION Render: preview first, ask before a final render.",
    tools=[MCPToolset(connection_params=StreamableHTTPConnectionParams(
        url="https://render.janction.jp/mcp",
        headers={"Authorization": "Bearer " + os.environ["JANCTION_RENDER_API_KEY"]}))],
)

Pydantic AI:

from pydantic_ai import Agent
from pydantic_ai.mcp import MCPToolset

render = MCPToolset("https://render.janction.jp/mcp", headers={"Authorization": "Bearer jr_..."})
agent = Agent("anthropic:claude-opus-5-5", toolsets=[render])

Подключите AI-приложения на этом компьютере одной командой и укажите всем агентам для написания кода в проекте, когда и как запускать рендеринг:

uvx janction-render connect             # lists Claude Code, Codex, Gemini CLI, Cursor, Windsurf, VS Code and the step for each
uvx janction-render connect claude-code # applies one (or: connect all --yes)
uvx janction-render init                # writes a short section to AGENTS.md and adds the server to .mcp.json

Команда init изменяет CLAUDE.md, GEMINI.md, .cursor/ и .vscode/ только в том случае, если они уже существуют (или если указаны параметры --claude, --cursor,

--vscode). Остальное содержимое этих файлов сохраняется, а изменяемые JSON-файлы копируются в резервную папку.

Локальный MCP-сервер (stdio) также предлагает подсказки, которые отображаются как slash-команды. Например, в Claude Code доступны /mcp__janction-render__turntable_video,

try_janction_render, render_my_scene, turntable_video, product_shots, scene_from_description, blend_to_mp4.

MCP

Удалённое подключение (Streamable HTTP, OAuth 2.1 с динамической регистрацией клиентов; также можно использовать ключ в заголовке Authorization: Bearer jr_...)

клиентспособ подключения
Claude.ai (web, desktop, mobile)Settings → Connectors → Add custom connector → вставьте URL → Connect
ChatGPTSettings → Connectors → Advanced → Developer mode → Create → вставьте URL (OAuth)
Claude Codeclaude mcp add --transport http janction-render https://render.janction.jp/mcp, затем выполните /mcp для аутентификации
Codexcodex mcp add janction-render --url https://render.janction.jp/mcp
Gemini CLI / Antigravity CLIgemini extensions install https://github.com/JasmyLab-JANCTION/janction-render (в репозитории есть файл gemini-extension.json)
Grok (grok.com)Connectors → New Connector → Custom → вставьте URL
Perplexity (Pro / Max / Enterprise), Le Chat (администратор workspace)Добавьте пользовательский удалённый MCP-коннектор, указав URL
Notion Agent (Business / Enterprise)Settings → Connections → Discover → Add Custom MCP → вставьте URL, затем войдите в систему (кнопка отображается, если администратор workspace разрешил пользовательские MCP-серверы)
CursorДобавьте конфигурацию в .cursor/mcp.json (проект) или ~/.cursor/mcp.json: {"mcpServers": {"janction-render": {"url": "https://render.janction.jp/mcp"}}}, затем войдите в систему по запросу Cursor (OAuth). Для установки в один клик: установить в Cursor
VS Code (режим Copilot agent)Добавьте конфигурацию в .vscode/mcp.json: {"servers": {"janction-render": {"type": "http", "url": "https://render.janction.jp/mcp"}}} или выполните code --add-mcp '{"name":"janction-render","type":"http","url":"https://render.janction.jp/mcp"}', затем запустите сервер и войдите в систему (OAuth)
Windsurf, Cline, Goose и другие MCP-клиентыПодключитесь по Streamable HTTP, используя URL выше (OAuth или заголовок Bearer с API-ключом). Инструкции по установке: llms-install.md. Правило Cursor для проекта (когда использовать сервер и как сначала просмотреть результат): integrations/cursor
Claude Desktop и другие клиенты, поддерживающие только stdio (npm){"mcpServers": {"janction-render": {"command": "npx", "args": ["-y", "janction-render"]}}}: npm-пакет janction-render связывает stdio с URL выше и выполняет OAuth (--key jr_... — для использования имеющегося ключа, --local — для запуска Python-сервера stdio через uv). Claude Code: claude mcp add janction-render -- npx -y janction-render

Для удалённых инструментов можно передать scene_script (код bpy в виде текста), scene_url (ссылку https на файл .blend, .py или 3D-файл либо ссылку

со страницы https://render.janction.jp/upload) или scene_id, а также asset_urls для текстур и файлов glTF .bin. Результат возвращается

в виде встроенного изображения и ссылок на скачивание. Для скачивания не нужен ключ; ссылки действуют около 24 часов. Чтобы получить только видео, используйте render_download(only="mp4").

Плагин Claude Code (удалённый коннектор и skill с описанием рабочего процесса):

/plugin marketplace add JasmyLab-JANCTION/janction-render
/plugin install janction-render@janction-render

Stdio (передача локальных файлов)

Пакет опубликован в PyPI под именем janction-render. Если установлен uv, npm-лаунчер janction-render запускает его командой npx -y janction-render --local.

# Claude Code (uvx запускает сервер без глобальной установки)
claude mcp add janction-render -e JANCTION_RENDER_SERVER=https://render.janction.jp -- uvx --from janction-render janction-render-mcp

# или через pip / pipx
pip install janction-render
claude mcp add janction-render -e JANCTION_RENDER_SERVER=https://render.janction.jp -- janction-render-mcp

Для Codex добавьте в ~/.codex/config.toml:

[mcp_servers.janction-render]
command = "uvx"
args = ["--from", "janction-render", "janction-render-mcp"]
env = { JANCTION_RENDER_SERVER = "https://render.janction.jp" }

При первом использовании автоматически создаётся временный API-ключ и сохраняется в ~/.janction-render.json. Чтобы закрепить ключ, задайте переменную

JANCTION_RENDER_API_KEY. Квота и, в дальнейшем, кредит привязаны к этому ключу. Его также можно использовать для удалённого подключения: вставьте ключ на странице подключения.

Инструменты

инструментописание
`scene_info(scene_scriptscene_url
render_preview(..., frames="1-24", environment?, blender?)Создаёт до 4 кадров с разрешением 720p, размещает их плиткой и добавляет подписи с номерами кадров; возвращает изображение в сообщении
render_review(scene_path / scene_script / scene_url / scene_id, environment="studio")Проверяет 3D-модель или сгенерированную сцену с четырёх сторон (0/90/180/270 градусов) при студийном освещении. Возвращает результат проверки (pass / warning / fail), оценку, список выполненных проверок (файлы, видимость, кадрирование, экспозиция, освещение) с кодом для исправления, а также изображение со всеми четырьмя ракурсами. Доступно на сервере stdio; расходует столько же времени GPU, сколько один preview
render_estimate(scene_id, frame_start, frame_end, width, height, samples)Показывает время работы GPU в секундах, ожидание в очереди, примерную длительность в минутах и позволяет проверить, хватит ли оставшегося бесплатного времени GPU. Не расходует время GPU
render_final(scene_id, frame_start, frame_end, width, height, samples, fps, output, environment?, blender?, engine?, transparent?, notify_url?)Создаёт кадры (png / exr) или видео (mp4 / webm / prores / gif / webp). При transparent=True сохраняет альфа-канал (png / exr / webm / gif / webp). По завершении задачи на notify_url отправляется один запрос JSON методом POST. Возвращает job_id и оценку времени выполнения
render_status(job_id)Показывает ход выполнения и примерное время до завершения (eta.human); render_download(job_id, only="mp4" / "frames" / "all") возвращает файлы или ссылки; render_cancel(job_id) отменяет задачу
billing()Показывает оставшееся бесплатное время GPU (приветственный кредит, затем бесплатные минуты preview на сегодня), кредит, ссылку для пополнения, а также состояние автоматического пополнения и месячного плана
render_share(job_id, title?, note?, include_script?, listed?)Создаёт публичную страницу /r/ с изображением или видео, параметрами и, при необходимости, скриптом. Страница остаётся доступной после истечения 24-часового срока действия ссылки до вызова render_unshare; при listed=True она появится в /gallery после проверки
asset_search(query, kind)Ищет модели, текстуры и HDRI с лицензией CC0 на Poly Haven по словам; в результатах указаны polyhaven: и файл записи
render_info()Показывает, какие workers доступны или заняты (GPU передан другой задаче), состояние очереди, ожидаемое время, поддерживаемые входные данные, пресеты окружения и версии Blender

Параметры render_preview / render_final: environment (studio, sunset, overcast, night, compare для preview; environment_strength,

environment_visible=False — ровный серый фон с освещением HDRI), orbit / orbit_frames / orbit_elevation (поворот модели),

blender ("5.2") и assets (для stdio: локальные файлы передаются вместе со сценой и доступны в скрипте через os.environ["JR_ASSETS_DIR"];

внешние файлы .blend собираются автоматически при установке pip install janction-render[blend]) или asset_urls (для удалённого подключения).

CLI: janction-render inspect|preview|render|status|download|share|unshare|cancel|jobs|balance|topup|limits|outcomes|info.

API

{api_key} (заголовок X-API-Key используется для последующих запросов) POST /v1/files multipart "file" (.blend|.py|.glb|.fbx|.usd|.obj|...) -> {scene_id} POST /v1/files/{id}/assets multipart "files" текстуры, glTF .bin и т. д. GET /v1/files/lookup?sha256= повторное использование загруженного файла POST /v1/estimate {kind, frames|frame_start/frame_end, width, height, samples, scene_id?} -> seconds, wall_seconds, human, quota, currency, expires_at POST /v1/jobs {scene_id, kind: info|preview|final, frames|frame_start/frame_end, width, height, samples, camera, fps, output (png|exr|mp4|webm|prores|gif|webp), transparent, notify_url (https), engine (cycles|eevee), environment, environment_strength, environment_visible, blender, orbit, orbit_frames, orbit_elevation} заголовок Idempotency-Key обеспечивает безопасный повтор запросов GET /v1/jobs/{id} status, progress, eta, artifacts[], cost, warnings, info, failure (код и способ исправления) DELETE /v1/jobs/{id} отменить задание GET /v1/jobs/{id}/artifacts/{name} PNG / MP4 GET /v1/jobs/{id}/archive?only=png все файлы задания в одном zip-архиве (для последовательности кадров нужен один запрос вместо сотен) GET /v1/outcomes результаты с фиксированной стоимостью; POST /v1/outcomes/turntable {scene_id, size, frames} POST /v1/outcomes/product-shot {scene_id, size, transparent?} POST /v1/try JSON {scene_script | scene_url, frames?, width?, height?, environment?} (ключ не требуется) -> первый предпросмотр в 720p и API key для продолжения — в одном ответе (1 раз на сеть за 24 часа) POST /v1/drops multipart "file" (ключ не требуется) -> ссылка https, действующая 12 часов, которую можно передать в качестве scene_url (она используется на странице /upload) POST /v1/jobs/{id}/share {title?, note?, include_script?, listed?} -> {share_id, url} DELETE /v1/jobs/{id}/share GET /v1/shares GET /r/{share_id} общедоступная страница (ключ не требуется) GET /gallery GET /v1/assets/search?q=&kind=models|textures|hdris ресурсы CC0 (Poly Haven) -> спецификация polyhaven: POST /v1/files/{id}/assets/urls {urls: ["https://...", "polyhaven:"]} загрузка ресурсов на стороне сервера GET /v1/me (quota, balance, limits) POST /v1/me/limits {job_yen?, day_yen?} лимиты расходов для каждого ключа POST /mcp удалённый MCP (Streamable HTTP; Bearer api key или OAuth) GET /.well-known/oauth-protected-resource/mcp обнаружение OAuth POST /v1/billing/checkout {amount_yen} -> {checkout_url} POST /v1/billing/sync GET /v1/ledger GET /openapi.json /llms.txt /llms-full.txt /ja/llms.txt /facts.json /version.json /capabilities.json /pricing.json /status.json">

POST /v1/keys                                   -> {api_key}         (header X-API-Key afterwards)
POST /v1/files  multipart "file" (.blend|.py|.glb|.fbx|.usd|.obj|...)   -> {scene_id}
POST /v1/files/{id}/assets  multipart "files"   textures, glTF .bin ...   GET /v1/files/lookup?sha256=  reuse an upload
POST /v1/estimate {kind, frames|frame_start/frame_end, width, height, samples, scene_id?} -> seconds, wall_seconds, human, quota, currency, expires_at
POST /v1/jobs   {scene_id, kind: info|preview|final, frames|frame_start/frame_end, width, height, samples, camera, fps, output (png|exr|mp4|webm|prores|gif|webp), transparent, notify_url (https), engine (cycles|eevee),
                 environment, environment_strength, environment_visible, blender, orbit, orbit_frames, orbit_elevation}   header Idempotency-Key makes retries safe
GET  /v1/jobs/{id}      status, progress, eta, artifacts[], cost, warnings, info, failure (code + fix)    DELETE /v1/jobs/{id}  cancel
GET  /v1/jobs/{id}/artifacts/{name}             PNG / MP4
GET  /v1/jobs/{id}/archive?only=png             every file of the job in one zip (frame sequences: one request instead of hundreds)
GET  /v1/outcomes       fixed-price outcomes;  POST /v1/outcomes/turntable {scene_id, size, frames}   POST /v1/outcomes/product-shot {scene_id, size, transparent?}
POST /v1/try    JSON {scene_script | scene_url, frames?, width?, height?, environment?} (no key) -> first 720p preview + an API key to continue, in one response (1 per network per 24h)
POST /v1/drops  multipart "file" (no key)       -> a 12-hour https link to pass as scene_url (the /upload page uses this)
POST /v1/jobs/{id}/share {title?, note?, include_script?, listed?} -> {share_id, url}   DELETE /v1/jobs/{id}/share   GET /v1/shares
GET  /r/{share_id}  public page (no key)   GET /gallery
GET  /v1/assets/search?q=&kind=models|textures|hdris   CC0 assets (Poly Haven) -> spec polyhaven:<id>
POST /v1/files/{id}/assets/urls {urls: ["https://...", "polyhaven:<id>"]}   fetch assets server-side
GET  /v1/me  (quota, balance, limits)   POST /v1/me/limits {job_yen?, day_yen?}   spending caps per key
POST /mcp                                       remote MCP (Streamable HTTP; Bearer api key or OAuth)
GET  /.well-known/oauth-protected-resource/mcp  OAuth discovery
POST /v1/billing/checkout {amount_yen} -> {checkout_url}   POST /v1/billing/sync   GET /v1/ledger
GET  /openapi.json  /llms.txt  /llms-full.txt  /ja/llms.txt  /facts.json  /version.json  /capabilities.json  /pricing.json  /status.json

Если задание превышает бесплатное время GPU, а кредитов недостаточно, сервер вернёт ошибку 402 payment_required с параметрами checkout_url (покажите эту ссылку пользователю), topup_yen и информацией о том, какую часть задания покрывает бесплатное время. Ошибка 400 beta_limit означает, что задание слишком большое: разделите его на части. В каждой ошибке API есть поля retryable, possible_fix и docs_url; для неудачного задания поле failure содержит код ошибки и рекомендуемое действие.

Если стоимость задания превышает установленный лимит расходов, запрос отклоняется с ошибкой 403 spend_cap_exceeded до резервирования ресурсов.

Пример

Скрипт сцены, который может написать агент (сервис задаёт движок, разрешение, количество samples и параметры denoising; скрипт задаёт сцену, камеру и диапазон кадров):

import bpy, math
for ob in list(bpy.data.objects):
    bpy.data.objects.remove(ob, do_unlink=True)
scene = bpy.context.scene
scene.frame_start, scene.frame_end = 1, 24
bpy.ops.mesh.primitive_monkey_add(location=(0, 0, 1))
cam = bpy.data.objects.new("Camera", bpy.data.cameras.new("Camera"))
scene.collection.objects.link(cam); scene.camera = cam
cam.location = (6, -6, 4); cam.rotation_euler = (math.radians(60), 0, math.radians(45))
sun = bpy.data.objects.new("Sun", bpy.data.lights.new("Sun", "SUN"))
scene.collection.objects.link(sun)

По умолчанию используется Cycles; engine="eevee" подходит для более дешёвого рендеринга анимаций (после компиляции шейдеров, которая занимает около 7 s для каждого задания, стоимость обработки кадра примерно вдвое ниже).

В Blender 5.0 материалы всегда используют узлы: задавайте Base Color узла Principled BSDF, а не diffuse_color. Скрипты выполняются в изолированном контейнере без доступа к сети. Подробнее: samples/cube_scene.py, samples/polyhaven_room.py. Замеры времени: https://render.janction.jp/benchmarks

Стоимость

Для нового ключа предоставляется приветственный кредит в размере 100 JPY (1 000 секунд GPU, срок действия — 14 дней, банковская карта не требуется), которого хватает на предпросмотр и финальный рендер. Один полный приветственный кредит выдаётся для каждой сети раз в 30 дней; последующие ключи в той же сети делят оставшийся кредит. Если сохранить карту на странице Stripe, где списания не производятся, к балансу однократно добавятся ещё 400 JPY — по одному разу на карту (общая сумма кредита составит до 500 JPY). После использования или истечения срока действия кредита предпросмотр остаётся бесплатным в пределах 2 минут GPU в день, а финальный рендер оплачивается из предоплаченного баланса по тарифу 0,1 JPY за секунду GPU. Баланс можно пополнить банковской картой через Stripe Checkout (минимум 500 JPY; при пополнении на 2 000 JPY начисляется 2 200 JPY, на 5 000 JPY — 5 750 JPY, на 10 000 JPY — 12 000 JPY; первое пополнение в период действия приветственного кредита учитывается с коэффициентом 1,5, размер бонуса — до 500 JPY). Оплачивается только та часть задания, которую не покрывает бесплатное время. Один запрос на финальный рендер может включать до 3 000 кадров; обработка выполняется частями по 240 кадров в рамках одного задания. При использовании бесплатного времени доступно разрешение до 1080p, при оплате из предоплаченного баланса — до 4K (3840x2160). Запрос POST /v1/estimate заранее рассчитывает сумму к оплате (cost.estimated_yen), валюту и срок действия расчёта — до использования ресурсов GPU: https://render.janction.jp/pricing

Устранение неполадок

Вы видитеЧто это значитЧто делать
402 payment_requiredЗадача превышает остаток бесплатного кредита на ключеВ ответе tell_user указана стоимость этого рендера и то, что даёт пополнение баланса; оплатите его по ссылке checkout_url (от 500 JPY) и отправьте ту же задачу повторно либо отрендерьте меньше кадров или снизьте разрешение
script_blockedВ bpy-скрипте используется то, что запрещено песочницей: сеть, процессы или ctypesУ GPU-воркера нет доступа к сети: передайте файлы из интернета через asset_urls=[...] (MCP) или POST /v1/files/{scene_id}/assets/urls, затем откройте их с помощью jr_assets.path(''). Если скрипт отклонён только из-за urllib или requests, это не считается основанием для отзыва ключа
script_path / scene_pathВ сцене указан путь к файлу на вашем компьютереПередайте файл как ресурс и укажите его имя (относительный путь)
McpError: Timed out while waiting for response (OpenAI Agents SDK)SDK по умолчанию ждёт ответа от инструмента 5 секундИспользуйте MCPServerStreamableHttp(..., client_session_timeout_seconds=120) (см. раздел «Использование собственного агента или приложения»)
Задача остаётся в состоянии queued, а в eta.human указано, что GPU занятGPU временно используется для другой задачиСообщите пользователю о времени ожидания; позднее вызовите render_download(job_id, wait_seconds=45), не опрашивая статус многократно
429 rate_limitedЗа короткое время отправлено слишком много запросовПодождите указанное в Retry-After время и отправьте запрос повторно
Слишком тёмное или пересвеченное изображение либо объект за пределами кадраВ заключении по предпросмотру указано, в чём проблема, и приведён код bpy для её исправленияВнесите исправление и повторите предпросмотр (это займёт несколько секунд), прежде чем запускать финальный рендер; кадрирование 3D-файлов автоматически подбирается по их реальному размеру
401 от Claude, ChatGPT или CodexСрок действия авторизации коннектора истёкПодключите коннектор заново (/mcp в Claude Code) или передайте ключ через X-API-Key / Authorization: Bearer jr_...

Документация

Cycles работает медленно на MacBook ·

Claude · ChatGPT · Claude Code ·

Codex · Cursor · bpy-скрипты ·

API · сравнение · продукты · на японском языке: /ja/

Подробное описание возможностей

  • В качестве входных данных можно передать файл .blend (текстуры входят в него), Python-скрипт bpy, который создаёт сцену (локально установленный Blender не требуется) или 3D-файл (glTF/GLB, FBX, USD, OBJ, STL, PLY, Alembic), который будет импортирован в пустую сцену.

  • environment="studio" | "sunset" | "overcast" | "night" освещает сцену с помощью встроенной HDRI-лицензии CC0, чтобы получить качественный первый рендер;

environment="compare" создаёт предпросмотр того же кадра с каждым из четырёх вариантов освещения в одном изображении с подписями, чтобы агент мог выбрать подходящий.

  • Файлы .gltf и .obj автоматически загружают связанные файлы .bin / .mtl и текстуры из той же папки или папки по тому же URL.

  • Параметр orbit=True превращает любую сцену или импортированную модель в поворотную анимацию: орбитальная камера совершает один полный оборот вокруг объекта (orbit_frames, по умолчанию 24;

в предпросмотре отображаются ракурсы 0/90/180/270 градусов, а финальный рендер без frame_end создаёт видео MP4 с полным оборотом). Плоские полы и стены не учитываются при кадрировании; параметры orbit_target (имя объекта или координаты x,y,z) и orbit_distance (множитель) позволяют настроить композицию.

  • Пока GPU используется для другой задачи, инструменты сразу возвращают поставленную в очередь задачу и оценку ожидания: сколько времени GPU уже занят, как долго он обычно используется и сколько ещё, вероятно, придётся ждать (eta.gate).

  • Во время рендеринга render_status показывает количество готовых кадров в текущем выполняемом фрагменте, поэтому оценка времени обновляется каждые несколько секунд.

  • В приложениях, поддерживающих MCP Apps (в частности, в Claude для веба и настольной версии), в чате также отображаются предпросмотр, ход выполнения и ссылки для скачивания в виде интерактивной панели: изображение, индикатор выполнения, кнопка «Открыть MP4» и кнопки выбора варианта освещения после предпросмотра с environment="compare".

И удалённый коннектор, и пакет stdio включают эту панель (janction_render/mcp_app.html); чтобы отключить её, установите JR_MCP_APPS=0.

  • Ресурсы CC0 можно искать по названию: asset_search("wooden table") находит модели, текстуры и HDRI из Poly Haven. Передайте polyhaven: через asset_urls (для удалённого подключения) или assets (для stdio), и файлы окажутся на GPU в JR_ASSETS_DIR//, готовые к импорту:

bpy.ops.import_scene.gltf(filepath=os.path.join(os.environ['JR_ASSETS_DIR'], 'wooden_table_02', 'wooden_table_02_1k.gltf')).

В скриптах сцен можно импортировать jr_assets, чтобы выполнять типовые действия одной командой: jr_assets.import_model('wooden_table_02'),

jr_assets.apply(floor, jr_assets.material('wood_floor_deck', scale=2)) (diffuse, normal, roughness и metal подключаются к Principled BSDF), jr_assets.world_hdri('studio_small_09'). См. samples/polyhaven_room.py.

  • Для рендера, которым вы решили поделиться (render_share), создаётся общедоступная страница (/r/ с OGP для X и Discord); она доступна, пока вы не отмените публикацию.

  • Blender 5.0, Cycles на GPU (blender="5.2" выбирает Blender 5.2, если он доступен на воркере; render_info перечисляет доступные версии).

Расширение Blender и инструменты DCC (для пользователей, а не агентов)

  • Расширение Blender (addons/blender/, Blender 4.2+): панель JANCTION Render с командами Preview, Estimate и Final находится в меню Properties → Render. На сервер загружается копия открытого файла и связанных с ним текстур с относительными путями; результаты сохраняются рядом с файлом .blend. Установите расширение из репозитория https://render.janction.jp/extensions/index.json (Preferences → Get Extensions → Repositories → + → Add Remote Repository) или установите zip-файл по адресу https://render.janction.jp/extensions/janction_render-0.1.2.zip (команда python scripts/build_blender_addon.py собирает его из этого репозитория). Руководство: https://render.janction.jp/blender-addon

  • Maya, Houdini, Cinema 4D (integrations/): экспортируйте сцену в USD / FBX / Alembic, загрузите её вместе с текстурами, выполните рендеринг с помощью Cycles и откройте результат. Доступны Preview, Final (MP4) и Turntable. Используется только стандартная библиотека Python; jr_submit.py — общий клиент.

Руководство: https://render.janction.jp/maya-houdini-cinema4d

Самостоятельный запуск

Сервер (FastAPI + SQLite с удалённой конечной точкой MCP) и воркер (Blender в изолированных одноразовых контейнерах Docker с параметрами --network none --cap-drop ALL) находятся во внутреннем репозитории и пока не входят в этот пакет. В этом репозитории размещена клиентская часть: MCP-сервер stdio, CLI, HTTP-клиент, примеры, плагин для Claude Code, расширение Blender и инструменты DCC.

Реестр MCP

Этот сервер включён в официальный реестр MCP под именем io.github.JasmyLab-JANCTION/janction-render (удалённая конечная точка: https://render.janction.jp/mcp).

mcp-name: io.github.JasmyLab-JANCTION/janction-render

Безопасность

Информацию об отправке отчётов об уязвимостях см. в SECURITY.md. Сведения о хранении данных, изоляции и внешних проверках приведены на странице безопасности.

Лицензия

Для пакета, серверов MCP, CLI и инструментов DCC действует лицензия MIT (см. LICENSE). Расширение Blender в addons/blender/ распространяется по лицензии GPL-3.0-or-later, как того требуют правила Blender для дополнений. Сервисом управляет JasmyLab Inc.