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.glb | 13.9 s | около 1.4 JPY | |
uvx janction-render turntable https://github.com/KhronosGroup/glTF-Sample-Assets/blob/main/Models/WaterBottle/glTF-Binary/WaterBottle.glb | 85.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 --wait | 54.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.
Руководства на официальном сайте
-
Для работы с агентами: Claude Code + Blender ·
Codex + Blender · Cursor + Blender ·
ChatGPT + Blender · MCP-сервер для рендеринга в Blender
- Лучшие фермы рендеринга для AI-агентов (2026): JANCTION, BlendSwap,
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 |
| ChatGPT | Settings → Connectors → Advanced → Developer mode → Create → вставьте URL (OAuth) |
| Claude Code | claude mcp add --transport http janction-render https://render.janction.jp/mcp, затем выполните /mcp для аутентификации |
| Codex | codex mcp add janction-render --url https://render.janction.jp/mcp |
| Gemini CLI / Antigravity CLI | gemini 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_script | scene_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_... |
Документация
-
Справка (основной источник, если сведения в разных источниках расходятся): https://render.janction.jp/facts · JSON:
/facts.json,/version.json,/changelog.json,/status.json -
Для агентов: https://render.janction.jp/llms.txt (полный текст всех руководств:
/llms-full.txt) -
Руководства: ферма рендеринга для агентов · рендеринг без GPU ·
Cycles работает медленно на MacBook ·
Claude · ChatGPT · Claude Code ·
Codex · Cursor · bpy-скрипты ·
API · сравнение · продукты · на японском языке: /ja/
- Статус: https://render.janction.jp/status · Безопасность и хранение данных: https://render.janction.jp/security · История изменений: https://render.janction.jp/changelog
Подробное описание возможностей
-
В качестве входных данных можно передать файл
.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.