Official JANCTION Render: https://render.janction.jp JANCTION Render is a cloud GPU render farm for Blender that AI agents call as an MCP server or HTTP API. It is free up to 500 JPY of GPU time per new key, then 0.1 JPY per GPU-second; paid use started on 2026-10-08. This post is about the part most people skip until it bites them: what happens to money when the thing calling the API is an agent, not a person.
None of these are bugs in the agent. They are the natural behaviour of something that does what it was told. The service has to make them safe.
The free part comes first. Each new key gets 500 JPY of GPU time (5,000 GPU-seconds) for 14 days, with no card. After that, previews stay free up to 2 GPU-minutes a day. A 4-frame preview takes a few GPU seconds, so an agent can iterate on a scene for a long time before anything is charged.
A job only counts as free when 1.5 times its estimate fits in the free time left. Renders sometimes run past their estimate, and this rule keeps that from turning into a charge nobody saw coming. When the margin is not there, credit is held for the part that may go past the free time, and only GPU time actually used past it is charged.
A quote comes before the work. render_estimate returns GPU seconds, a wall-clock guess, the amount, the currency and an expiry. A 24-frame 720p clip at 64 samples takes about 59 GPU-seconds, so the agent can say "about 6 JPY and a minute or two, go ahead?" before the GPU is touched.
The agent cannot pay. When a job needs more credit than the key has, the answer comes back before the job runs: HTTP 402 payment_required with a checkout_url. The agent shows the link, a person pays on the Stripe page, and the agent sends the same job again.
Spending caps per key. Each key has a cap per job and a cap per day, 3,000 JPY and 10,000 JPY by default. A job that would go over either is refused with 403 spend_cap_exceeded before anything is reserved, even if the balance would cover it. The caps can be read with GET /v1/me and changed with POST /v1/me/limits, and the tool descriptions tell agents to ask the user before raising them.
Safe retries. Send an Idempotency-Key with a job. A retry with the same key gets the first job back instead of queuing a second one. Rate limits answer with Retry-After.
A price ceiling for the common jobs. A turntable video and a 4-angle product shot are quoted first, and the quote is a ceiling: the actual GPU seconds are charged and the rest is released.
No paying twice for the same frames. Final renders reuse frames the same key already rendered from the same scene with the same settings. Rendering frames 1-96, then 1-120, then 1-144 costs about the same as rendering 1-144 once.
Failures cost little. A failed render counts only the frames that finished, for up to 5 failed GPU-minutes per key a day.
Two options exist for people who render often, and an agent cannot switch on either of them.
billing() shows both, with links the person opens: a confirmation page first, then Stripe. An agent can show the link; it cannot subscribe, cancel or turn auto top-up on by itself.
On the first night of paid use, the whole loop was run once with a real card: the 402, the checkout link, the payment, the credit showing up in billing(), and a refund that came off the balance by itself.
A render farm priced per GPU-hour is fine when a person watches the queue. An agent does not watch. The questions that decide whether you let an agent spend are simple: can it overspend by accident (caps), can a network hiccup double the bill (retries), can it tell you the cost before it starts (quotes), and can it start a subscription you did not agree to (it cannot). If a service cannot answer those, the price per hour does not matter much.
Connect from Claude, ChatGPT, Claude Code, Codex or Cursor with the MCP endpoint https://render.janction.jp/mcp, or call the HTTP API with a key from POST /v1/keys (no sign-up). Ask for an estimate first, read the amount, then preview.
Official JANCTION Render: https://render.janction.jp (pricing: https://render.janction.jp/pricing, facts: https://render.janction.jp/facts). Code and client: https://github.com/JasmyLab-JANCTION/janction-render