---
title: "Submit a render job"
method: POST
path: "/v1/jobs"
---

# Submit a render job

`POST /v1/jobs`

## Request

- Base URL: `https://render.janction.jp`
- URL: `https://render.janction.jp/v1/jobs`
- Auth: API key in header `X-API-Key`

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.

## Headers

- `x-api-key` string, nullable

## Request body

- object
  - `scene_id` string: from POST /v1/files, POST /v1/files/url or an earlier job; or send scene_script / scene_url instead
  - `scene_script` string: the scene as bpy Python code (text), used when scene_id is absent
  - `scene_url` string, uri: https link to a .blend, .py or 3D file, used when scene_id is absent
  - `asset_urls` string[]: extra files with scene_script / scene_url: https links or 'polyhaven:<id>' CC0 assets
  - `kind` 'preview' | 'final' | 'info'
  - `frames` integer[]: preview: 1-4 frame numbers
  - `frame_start` integer
  - `frame_end` integer: final: up to 3,000 frames per call (frame_start..frame_end); longer than 240 runs as parts under one job id
  - `width` integer: final: at most 1920x1080 pixels per frame on free time, 3840x2160 with prepaid credit; preview: scaled to 1280x720
  - `height` integer: final: at most 1920x1080 pixels per frame on free time, 3840x2160 with prepaid credit; preview: scaled to 1280x720
  - `samples` integer
  - `fps` integer
  - `output` 'auto' | 'png' | 'exr' | 'mp4' | 'webm' | 'prores' | 'gif' | 'webp' | 'blend'
  - `camera` string
  - `cameras` string[]
  - `environment` '' | 'studio' | 'sunset' | 'overcast' | 'night' | 'compare'
  - `environment_strength` number
  - `environment_visible` boolean
  - `blender` '' | '5.0' | '5.2'
  - `engine` '' | 'cycles' | 'eevee'
  - `transparent` boolean
  - `orbit` boolean
  - `orbit_frames` integer
  - `orbit_elevation` number
  - `orbit_target` string
  - `orbit_distance` number
  - `preset` '' | 'product' | 'turntable' | 'animation'
  - `max_yen` integer: ceiling for this job; 0 = only if it fits the free time
  - `notify_url` string, uri: https; one signed POST when the job finishes

## Response `200`

Successful Response

- object

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/janction/apis/janction-render-api.md) · [All operations](https://skmtc.dev/janction/apis/janction-render-api/llms.txt) · [OpenAPI document](https://skmtc.dev/janction/apis/janction-render-api/revisions/a633fd52ea1f?raw)
