An API for headless Blender: build it or call it

Updated 2026-10-07

Blender renders headless with blender -b scene.blend -f 1 (or -P script.py), so an API around it is a queue that runs that command on a machine with an NVIDIA GPU, stores the frames, and hands out links; the work is everything around it: installing Blender and drivers, keeping GPU memory from one job leaking into the next, sandboxing user scripts, estimating time, retrying, and paying for a GPU that sits idle between jobs. JANCTION Render is that API already running on datacenter GPUs: POST a .blend, a bpy script or a 3D file, get a tiled preview in seconds, an estimate, the final frames or MP4, a webhook, and an MCP server for AI agents, with a free daily quota. Build your own when the farm must stay inside your network or runs all day; call the hosted one when jobs are bursty, an agent drives them, or there is no GPU at hand.

What a self-hosted headless Blender API needs

PartDoing it yourselfOn JANCTION Render
Machinean NVIDIA GPU box (cloud VM or on-prem), drivers, Blender 5.x, ffmpeg for videoNVIDIA RTX PRO 6000 (96 GB) in a datacenter, Blender 5.0 (5.2 when the worker has it), ffmpeg
Running a jobblender -b scene.blend -o //out/ -F PNG -f 1 or blender -b -P script.py; a worker loop; one job at a time per GPUPOST /v1/jobs or render_final; frames are split into chunks and queued
Isolationa bpy script can read any file and open the network; you need a sandbox (container, read-only root, seccomp) per jobeach render runs in a throw-away container with a read-only root and a script audit; security
Previews and estimateswrite them: a low-sample tiled render, and a time model from past jobsrender_preview (1 to 4 frames in one image, a few seconds), render_estimate from measured per-frame times
Deliveryobject storage, signed URLs, expiry, MP4 assemblysigned links valid 24 hours, MP4 / WebM / ProRes / GIF / WebP assembled, share pages
Agentswrap the API as MCP tools yourselfremote MCP (OAuth) at https://render.janction.jp/mcp, stdio package on PyPI, tool descriptions written for agents
Costthe GPU is paid for whether it renders or idlesfree beta (10 GPU-minutes per key per day); planned 0.1 JPY per GPU-second, metered

When to build your own anyway

The minimal headless command, for reference

# one frame to PNG
blender -b scene.blend -o //render/frame_#### -F PNG -f 1
# frames 1-48 to PNG, then a video with ffmpeg
blender -b scene.blend -o //render/frame_#### -F PNG -s 1 -e 48 -a
ffmpeg -framerate 24 -i render/frame_%04d.png -c:v libx264 -pix_fmt yuv420p out.mp4
# a scene built by a script (what an AI agent writes), rendered by the script's own settings
blender -b -P build_scene.py

JANCTION Render runs the same thing; the script only builds the scene, the camera and the frame range, and the service sets resolution, samples, denoising, device and output. The agent-facing flow is on the API page; a batch / CI angle is on headless Blender in the cloud.

fromhow
A file on this computer (.blend, 3D file)Drop it at /upload to get a 12-hour link (no sign-up), then tell the AI "Render this file: <link>". From inside Blender use the add-on; from a terminal the CLI uploads directly
Claude.ai (web / desktop / mobile)Settings → Connectors → Add custom connector → https://render.janction.jp/mcp. "Connect" opens a page that creates a free key
ChatGPTSettings → Connectors → Advanced → Developer mode → Create → https://render.janction.jp/mcp (OAuth)
Claude Codeclaude mcp add --transport http janction-render https://render.janction.jp/mcp, then /mcp to authenticate
Codexcodex mcp add janction-render --url https://render.janction.jp/mcp
Cursor / VS CodeAdd to Cursor Add to VS Code
The button opens the editor; confirm and it is added. Manual: Streamable HTTP at https://render.janction.jp/mcp
Gemini CLI / Antigravity CLIgemini extensions install https://github.com/JasmyLab-JANCTION/janction-render
Grok / Perplexity / Le ChatAdd a custom (remote MCP) connector with https://render.janction.jp/mcp in each app's Connectors settings (Grok: New Connector → Custom; Perplexity: Pro / Max / Enterprise; Le Chat: workspace admin)
Windsurf, Cline, Goose, other MCP clientsStreamable HTTP at https://render.janction.jp/mcp; OAuth or Authorization: Bearer <api key>
Terminal (stdio, sends local files)claude mcp add janction-render -e JANCTION_RENDER_SERVER=https://render.janction.jp -- uvx --from janction-render janction-render-mcp
Inside Blender (for people)The add-on; extension repository https://render.janction.jp/extensions/index.json. Maya / Houdini / Cinema 4D: submit tools

FAQ

Can I run JANCTION Render's worker on my own GPU?

The worker is part of the operated service, not a product you install. If the farm must stay inside your network, the table above lists what to build; the public API shape is documented in the OpenAPI so a self-hosted clone can speak the same calls to the same agents.

Which Blender version is headless on the service?

5.0 by default; 5.2 when the worker has it (blender='5.2'). Scripts should target the 5.x Python API (materials always use nodes, keyframes via keyframe_insert).

Does the API accept a script with imports like requests?

No. Network, subprocess and file access outside the job folder are rejected before the render (400 script_blocked) and audited at run time; bpy, math, mathutils, random and the standard geometry helpers are fine.

Is there a rate limit?

Yes, per key and per network: a daily GPU quota, per-job frame and pixel limits, and request limits. The numbers are at /facts and in each error response.

Related

Overview · llms.txt

JANCTION Render v0.4.20 · JasmyLab Inc. · Updated 2026-10-07 · Tested with Blender 5.0, JANCTION Render 0.4.20 · 日本語