Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/janction-jp:janction-jp-jobs-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: JANCTION Render Jobs API
description: 'JANCTION Render is a cloud GPU render farm for Blender that AI agents call as an MCP server or HTTP API: .blend, bpy scripts and 3D files (glTF/FBX/USD/OBJ) in, frames or an MP4 out, on JANCTION NVIDIA GPUs. No key yet? POST /v1/try renders a first preview and returns a key. Flow: POST /v1/keys -> POST /v1/files -> POST /v1/estimate -> POST /v1/jobs -> GET /v1/jobs/{id} -> GET /v1/jobs/{id}/artifacts/{name}. The same service is an MCP server at /mcp. Human guide: /blender-render-api. Agent guide: /llms.txt.'
version: 0.4.211
x-limits:
- id: frames_per_call
value: 3000
unit: frames
applies_to:
- render_final
- POST /v1/jobs
- POST /v1/estimate
alternative: split the range into several calls of up to 3,000 frames (frame_start / frame_end)
- id: frames_per_part
value: 240
unit: frames
applies_to:
- render_final
- POST /v1/jobs
alternative: 'nothing to do: a final longer than 240 frames runs as parts under one job id and comes back as one video'
- id: resolution_free_time
value: 2073600
unit: pixels_per_frame
applies_to:
- render_final
- POST /v1/jobs
alternative: buy any credit to open 3840x2160, or render at 1920x1080 and upscale
display: 1920x1080
- id: resolution_prepaid_credit
value: 8294400
unit: pixels_per_frame
applies_to:
- render_final
- POST /v1/jobs
alternative: 'no larger frame is offered: render the shot as several cameras or crops and join them'
display: 3840x2160
- id: preview_resolution
value: 921600
unit: pixels_per_frame
applies_to:
- render_preview
- render_review
alternative: previews are scaled down to this size; use render_final for the full size
display: 1280x720
- id: preview_frames
value: 4
unit: frames
applies_to:
- render_preview
alternative: use render_final with a frame range for more frames
- id: job_gpu_time
value: 36000
unit: gpu_seconds
applies_to:
- render_final
- POST /v1/jobs
alternative: split the frames over several jobs, or lower samples / resolution (render_estimate tells the time first)
- id: upload_one_request
value: 100
unit: MB
applies_to:
- POST /v1/files
- https://render.janction.jp/upload form
alternative: 'larger files: the CLI and the local (stdio) MCP send them in resumable parts (POST /v1/uploads), the https://render.janction.jp/upload page does the same in a browser, or pass a public https link as scene_url'
- id: upload_by_link
value: 512
unit: MB
applies_to:
- scene_url
- POST /v1/files/url
alternative: put the file on the https://render.janction.jp/upload page (resumable parts) instead
- id: asset_size
value: 128
unit: MB
applies_to:
- assets
- asset_urls
- POST /v1/files/{id}/assets
alternative: lower the texture resolution, compress it, or pack it into the .blend
- id: script_size
value: 2
unit: MB
applies_to:
- scene_script
- .py scenes
alternative: 'keep data out of the script: send it as assets or build the scene into a .blend'
- id: remote_mcp_local_files
value: false
unit: boolean
applies_to:
- remote MCP (Claude.ai, ChatGPT and other connectors)
alternative: 'a remote MCP server cannot read files on the user''s computer: the user drops the file on https://render.janction.jp/upload and passes the link it shows as scene_url, or uses the CLI, the local (stdio) MCP server or the Blender add-on'
- id: upload_link_lifetime
value: 12
unit: hours
applies_to:
- https://render.janction.jp/upload links
alternative: use the link within this time (a job that uses it keeps the scene); upload again after it expires
- id: files_kept
value: 24
unit: hours_after_last_use
applies_to:
- scenes
- results
- download links
alternative: download the results before then; a key that has paid 500 JPY or more in total keeps them 7 days (normally); asking for the job again gives fresh links while the files are kept
- id: blend_resumable_upload
value: 1024
unit: MB
applies_to:
- POST /v1/uploads
- CLI
- local (stdio) MCP
- https://render.janction.jp/upload
alternative: a key that has paid 500 JPY or more in total sends up to 5120 MB (saving a card alone does not open it; keys that had it through a saved card before 2026-10-14 keep it)
paid: 5120
with_card_or_credit: 5120
with_card_or_credit_note: former name of paid, kept for older readers
servers:
- url: https://render.janction.jp
security:
- ApiKeyAuth: []
tags:
- name: Jobs
paths:
/v1/jobs/{job_id}/share:
post:
summary: Share a finished render as a public page
description: '{title?, note?, include_script?, listed?} -> {share_id, url}; the page keeps the image/video after the job expires, until DELETE.'
operationId: share_job_v1_jobs__job_id__share_post
parameters:
- name: job_id
in: path
required: true
schema:
type: string
title: Job Id
- name: x-api-key
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Api-Key
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
additionalProperties: true
title: Response Share Job V1 Jobs Job Id Share Post
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
title:
type: string
note:
type: string
prompt:
type: string
include_script:
type: boolean
listed:
type: boolean
tags:
- Jobs
delete:
summary: Remove the share page
operationId: unshare_job_v1_jobs__job_id__share_delete
parameters:
- name: job_id
in: path
required: true
schema:
type: string
title: Job Id
- name: x-api-key
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Api-Key
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
additionalProperties: true
title: Response Unshare Job V1 Jobs Job Id Share Delete
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
tags:
- Jobs
/v1/jobs/{job_id}/feedback:
post:
summary: Job Feedback
operationId: job_feedback_v1_jobs__job_id__feedback_post
parameters:
- name: job_id
in: path
required: true
schema:
type: string
title: Job Id
- name: x-api-key
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Api-Key
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
additionalProperties: true
title: Response Job Feedback V1 Jobs Job Id Feedback Post
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
tags:
- Jobs
get:
summary: Job Feedback Get
operationId: job_feedback_get_v1_jobs__job_id__feedback_get
parameters:
- name: job_id
in: path
required: true
schema:
type: string
title: Job Id
- name: x-api-key
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Api-Key
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
additionalProperties: true
title: Response Job Feedback Get V1 Jobs Job Id Feedback Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
tags:
- Jobs
/v1/jobs:
post:
summary: Submit a render job
operationId: submit_job_v1_jobs_post
parameters:
- name: x-api-key
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Api-Key
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
additionalProperties: true
title: Response Submit Job V1 Jobs Post
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: 'Body: {scene_id, kind: preview|final|info, frames: [..] (preview) or frame_start/frame_end (final), width, height, samples, engine: cycles|eevee, output: png|exr (frames) or mp4|webm|prores|gif|webp (video) or blend (the built scene as a .blend, not rendered, free), transparent (alpha background; png/exr/webm/gif/webp), notify_url (https; one JSON POST when the job finishes), fps, camera, environment: studio|sunset|overcast|night|compare, environment_strength, environment_visible, blender: 5.0|5.2, orbit, orbit_frames, orbit_elevation, orbit_target, orbit_distance, preset: product|turntable|animation (fills the camera, light, backdrop, frames and output for that purpose; what you pass wins)}. Returns job_id, status and eta.'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
scene_id:
type: string
description: from POST /v1/files, POST /v1/files/url or an earlier job; or send scene_script / scene_url instead
scene_script:
type: string
description: the scene as bpy Python code (text), used when scene_id is absent
scene_url:
type: string
description: https link to a .blend, .py or 3D file, used when scene_id is absent
format: uri
asset_urls:
items:
type: string
type: array
description: 'extra files with scene_script / scene_url: https links or ''polyhaven:<id>'' CC0 assets'
kind:
enum:
- preview
- final
- info
type: string
frames:
items:
type: integer
type: array
description: 'preview: 1-4 frame numbers'
frame_start:
type: integer
frame_end:
type: integer
description: 'final: up to 3,000 frames per call (frame_start..frame_end); longer than 240 runs as parts under one job id'
width:
type: integer
description: 'final: at most 1920x1080 pixels per frame on free time, 3840x2160 with prepaid credit; preview: scaled to 1280x720'
height:
type: integer
description: 'final: at most 1920x1080 pixels per frame on free time, 3840x2160 with prepaid credit; preview: scaled to 1280x720'
samples:
type: integer
fps:
type: integer
output:
enum:
- auto
- png
- exr
- mp4
- webm
- prores
- gif
- webp
- blend
type: string
camera:
type: string
cameras:
items:
type: string
type: array
environment:
enum:
- ''
- studio
- sunset
- overcast
- night
- compare
type: string
environment_strength:
type: number
environment_visible:
type: boolean
blender:
enum:
- ''
- '5.0'
- '5.2'
type: string
engine:
enum:
- ''
- cycles
- eevee
type: string
transparent:
type: boolean
orbit:
type: boolean
orbit_frames:
type: integer
orbit_elevation:
type: number
orbit_target:
type: string
orbit_distance:
type: number
preset:
enum:
- ''
- product
- turntable
- animation
type: string
max_yen:
type: integer
description: ceiling for this job; 0 = only if it fits the free time
notify_url:
type: string
description: https; one signed POST when the job finishes
format: uri
tags:
- Jobs
get:
summary: List recent jobs
operationId: list_jobs_v1_jobs_get
parameters:
- name: limit
in: query
required: false
schema:
type: integer
default: 20
title: Limit
- name: summary
in: query
required: false
schema:
type: boolean
default: false
title: Summary
- name: x-api-key
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Api-Key
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
additionalProperties: true
title: Response List Jobs V1 Jobs Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
tags:
- Jobs
/v1/jobs/{job_id}:
get:
summary: Job status
operationId: get_job_v1_jobs__job_id__get
parameters:
- name: job_id
in: path
required: true
schema:
type: string
title: Job Id
- name: x-api-key
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Api-Key
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
additionalProperties: true
title: Response Get Job V1 Jobs Job Id Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: status queued|running|done|failed|canceled, progress, eta, artifacts (each with view_url, a signed link that opens without a key), warnings.
tags:
- Jobs
delete:
summary: Cancel Job
operationId: cancel_job_v1_jobs__job_id__delete
parameters:
- name: job_id
in: path
required: true
schema:
type: string
title: Job Id
- name: x-api-key
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Api-Key
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
additionalProperties: true
title: Response Cancel Job V1 Jobs Job Id Delete
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
tags:
- Jobs
/v1/jobs/{job_id}/next-actions:
get:
summary: Job Next Actions
operationId: job_next_actions_v1_jobs__job_id__next_actions_get
parameters:
- name: job_id
in: path
required: true
schema:
type: string
title: Job Id
- name: x-api-key
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Api-Key
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
additionalProperties: true
title: Response Job Next Actions V1 Jobs Job Id Next Actions Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
tags:
- Jobs
/v1/jobs/{job_id}/recipe:
get:
summary: Job Recipe
operationId: job_recipe_v1_jobs__job_id__recipe_get
parameters:
- name: job_id
in: path
required: true
schema:
type: string
title: Job Id
- name: x-api-key
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Api-Key
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
additionalProperties: true
title: Response Job Recipe V1 Jobs Job Id Recipe Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
tags:
- Jobs
/v1/jobs/{job_id}/storage/save:
post:
summary: Storage Save
operationId: storage_save_v1_jobs__job_id__storage_save_post
parameters:
- name: job_id
in: path
required: true
schema:
type: string
title: Job Id
- name: x-api-key
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Api-Key
requestBody:
content:
application/json:
schema:
anyOf:
- type: object
additionalProperties: true
- type: 'null'
title: Body
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
additionalProperties: true
title: Response Storage Save V1 Jobs Job Id Storage Save Post
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
tags:
- Jobs
/v1/jobs/{job_id}/cancel:
post:
summary: Cancel a job
operationId: cancel_job_post_v1_jobs__job_id__cancel_post
parameters:
- name: job_id
in: path
required: true
schema:
type: string
title: Job Id
- name: x-api-key
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Api-Key
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
additionalProperties: true
title: Response Cancel Job Post V1 Jobs Job Id Cancel Post
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
tags:
- Jobs
/v1/jobs/{job_id}/artifacts/{name}:
get:
summary: Download an artifact
operationId: get_artifact_v1_jobs__job_id__artifacts__name__get
parameters:
- name: job_id
in: path
required: true
schema:
type: string
title: Job Id
- name: name
in: path
required: true
schema:
type: string
title: Name
- name: x-api-key
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Api-Key
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: sheet.png (preview), frame_0001.png / .exr..., output.mp4 / .webm / .mov / .gif / .webp, log.txt (the last part of Blender's output, kept for finished and failed jobs alike). Needs X-API-Key; without one, use the artifact's view_url.
tags:
- Jobs
/v1/jobs/{job_id}/archive:
get:
summary: Download every file of a job as one zip
description: 'Stored, not compressed. only=png,exr keeps those extensions. Use it for frame sequences: fetching hundreds of frames one by one runs into the rate limit (429). Needs X-API-Key.'
operationId: get_archive_v1_jobs__job_id__archive_get
parameters:
- name: job_id
in: path
required: true
schema:
type: string
title: Job Id
- name: only
in: query
required: false
schema:
type: string
default: ''
title: Only
- name: first
in: query
required: false
schema:
type: string
default: ''
title: First
- name: last
in: query
required: false
schema:
type: string
default: ''
title: Last
- name: x-api-key
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Api-Key
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
tags:
- Jobs
components:
schemas:
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
input:
title: Input
ctx:
type: object
title: Context
type: object
required:
- loc
- msg
- type
title: ValidationError
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Key
externalDocs:
url: https://render.janction.jp/llms.txt
description: Guides for agents (llms.txt) and humans (/blender-render-api)