janction-jp Uploads API

The Uploads API from janction-jp — 3 operation(s) for uploads.

Operations 7

OPTIONS /v1/uploads Upload Options #
POST /v1/uploads Start an upload in parts #
GET /v1/uploads/limits How big a file this key can send #
HEAD /v1/uploads/{upload_id} Where an upload stopped #
GET /v1/uploads/{upload_id} Upload status #
DELETE /v1/uploads/{upload_id} Cancel an upload #
PATCH /v1/uploads/{upload_id} Send the next part #

Work with this as data

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-uploads-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 Specification

janction-jp-uploads-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: JANCTION Render Uploads 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: Uploads
paths:
  /v1/uploads:
    options:
      summary: Upload Options
      operationId: upload_options_v1_uploads_options
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      tags:
      - Uploads
    post:
      summary: Start an upload in parts
      operationId: create_upload_v1_uploads_post
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: x-upload-token
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Upload-Token
      - name: upload-length
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Upload-Length
      - name: upload-metadata
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Upload-Metadata
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      description: 'Opens a resumable upload (tus 1.0) for a large .blend or 3D file: send Upload-Length and the file name (Upload-Metadata), then PATCH the bytes in order. Over the limit it answers 413 upload_limit with the current and paid limits and a top-up link.'
      tags:
      - Uploads
  /v1/uploads/limits:
    get:
      summary: How big a file this key can send
      operationId: upload_limits_v1_uploads_limits_get
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: x-upload-token
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Upload-Token
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Upload Limits V1 Uploads Limits Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      description: The largest .blend and other 3D file this key can upload in parts, the part size and how long an upload can stay open. Free keys send .blend files up to 1 GB; keys that have paid 500 JPY or more in total up to 5 GB.
      tags:
      - Uploads
  /v1/uploads/{upload_id}:
    head:
      summary: Where an upload stopped
      operationId: head_upload_v1_uploads__upload_id__head
      parameters:
      - name: upload_id
        in: path
        required: true
        schema:
          type: string
          title: Upload Id
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: x-upload-token
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Upload-Token
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      description: 'Returns Upload-Offset: how many bytes the server has, so an interrupted upload continues from there with PATCH.'
      tags:
      - Uploads
    get:
      summary: Upload status
      operationId: get_upload_v1_uploads__upload_id__get
      parameters:
      - name: upload_id
        in: path
        required: true
        schema:
          type: string
          title: Upload Id
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: x-upload-token
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Upload-Token
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Get Upload V1 Uploads  Upload Id  Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      description: The upload's size, bytes received, state and, once complete and checked, the scene_id to render.
      tags:
      - Uploads
    delete:
      summary: Cancel an upload
      operationId: delete_upload_v1_uploads__upload_id__delete
      parameters:
      - name: upload_id
        in: path
        required: true
        schema:
          type: string
          title: Upload Id
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: x-upload-token
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Upload-Token
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      description: Stops an unfinished upload and deletes the bytes received so far.
      tags:
      - Uploads
    patch:
      summary: Send the next part
      operationId: patch_upload_v1_uploads__upload_id__patch
      parameters:
      - name: upload_id
        in: path
        required: true
        schema:
          type: string
          title: Upload Id
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: x-upload-token
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Upload-Token
      - name: upload-offset
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Upload-Offset
      - name: upload-checksum
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Upload-Checksum
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      description: Appends bytes at Upload-Offset (Content-Type application/offset+octet-stream). When the last part arrives the server checks the file (sha256, format) and turns it into a scene.
      tags:
      - Uploads
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)