> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sigmora.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Read one job.

> Every async capability converges here, whatever produced the id — there is no
per-capability polling path.

Polling a render or a 3D asset also SETTLES its charge, so a job that failed is
refunded when you poll it. A job belonging to another workspace answers 404 rather
than 403, so ids cannot be used to test for existence across tenants.

Free: reading status is never billed.



## OpenAPI

````yaml /openapi.json get /v1/jobs/{jobId}
openapi: 3.1.0
info:
  title: Sigmora API
  version: v1
  description: >-
    Whole pipelines as single calls: describe an object and get an animated 3D
    render;

    send raw footage and get an edited cut; hand over a transcript and get it
    captioned and

    dubbed with the cue timing intact.


    **Auth.** `Authorization: Bearer sk_live_...`. A key is bound to one
    workspace, so

    requests carry no tenant id. A session caller may instead name the workspace
    with an `x-workspace-slug` header.


    **Errors.** Every failure carries a stable `code` alongside its message.
    Branch on the

    code; the message is for humans.


    **Jobs.** Long-running work returns a job id, polled at `GET
    /v1/jobs/{jobId}` whatever

    produced it.


    **Projects.** Every call files its output in a project — the container
    holding the

    script, the footage, the renders and the thread that produced them. Pass
    `projectId`

    to choose one, or omit it and get a fresh project back in the response. The
    same

    containers appear in the dashboard, because it is the same API underneath.
servers:
  - url: https://api.sigmora.org
    description: Sigmora API
security:
  - apiKey: []
paths:
  /v1/jobs/{jobId}:
    get:
      tags:
        - jobs
      summary: Read one job.
      description: >-
        Every async capability converges here, whatever produced the id — there
        is no

        per-capability polling path.


        Polling a render or a 3D asset also SETTLES its charge, so a job that
        failed is

        refunded when you poll it. A job belonging to another workspace answers
        404 rather

        than 403, so ids cannot be used to test for existence across tenants.


        Free: reading status is never billed.
      operationId: jobs.get
      parameters:
        - name: jobId
          in: path
          required: true
          schema:
            type: string
          description: A job id returned by any async operation.
      responses:
        '200':
          description: The job.
          content:
            application/json:
              schema:
                type: object
                required:
                  - success
                  - job
                properties:
                  success:
                    type: boolean
                    enum:
                      - true
                  job:
                    type: object
                    required:
                      - id
                      - kind
                      - status
                    properties:
                      id:
                        type: string
                      kind:
                        type: string
                        enum:
                          - video.render
                          - video.edit
                          - asset.animate
                        description: Which capability produced this job.
                      status:
                        type: string
                        enum:
                          - queued
                          - rendering
                          - awaiting_review
                          - done
                          - failed
                        description: >-
                          Terminal states are `done` and `failed`.
                          `awaiting_review` (footage edits only) means the cut
                          list is ready and nothing renders until a person
                          approves it — polling will not advance it.
                      phase:
                        type:
                          - string
                          - 'null'
                        description: >-
                          The pipeline stage, for display. Not stable — do not
                          branch on it.
                      artifacts:
                        description: >-
                          What the job produced. Shape varies by `kind`; absent
                          or null until there is something to show.
                      error:
                        type:
                          - string
                          - 'null'
        '401':
          description: '`unauthorized`.'
          content:
            application/json:
              schema:
                type: object
                required:
                  - success
                  - error
                  - code
                properties:
                  success:
                    type: boolean
                    enum:
                      - false
                  error:
                    type: string
                    description: >-
                      Human-readable. Wording may change between releases — do
                      not match on it.
                  code:
                    type: string
                    enum:
                      - invalid_request
                      - unauthorized
                      - forbidden
                      - origin_not_allowed
                      - not_found
                      - conflict
                      - payload_too_large
                      - insufficient_credits
                      - budget_capped
                      - rate_limited
                      - capability_unavailable
                      - upstream_unavailable
                      - upstream_error
                      - internal_error
                    description: Stable machine-readable cause. Branch on this.
                  details:
                    description: >-
                      Optional structured context, e.g. which field failed
                      validation.
        '403':
          description: '`forbidden` / `origin_not_allowed`.'
          content:
            application/json:
              schema:
                type: object
                required:
                  - success
                  - error
                  - code
                properties:
                  success:
                    type: boolean
                    enum:
                      - false
                  error:
                    type: string
                    description: >-
                      Human-readable. Wording may change between releases — do
                      not match on it.
                  code:
                    type: string
                    enum:
                      - invalid_request
                      - unauthorized
                      - forbidden
                      - origin_not_allowed
                      - not_found
                      - conflict
                      - payload_too_large
                      - insufficient_credits
                      - budget_capped
                      - rate_limited
                      - capability_unavailable
                      - upstream_unavailable
                      - upstream_error
                      - internal_error
                    description: Stable machine-readable cause. Branch on this.
                  details:
                    description: >-
                      Optional structured context, e.g. which field failed
                      validation.
        '404':
          description: '`not_found` — no such job, or not this workspace’s.'
          content:
            application/json:
              schema:
                type: object
                required:
                  - success
                  - error
                  - code
                properties:
                  success:
                    type: boolean
                    enum:
                      - false
                  error:
                    type: string
                    description: >-
                      Human-readable. Wording may change between releases — do
                      not match on it.
                  code:
                    type: string
                    enum:
                      - invalid_request
                      - unauthorized
                      - forbidden
                      - origin_not_allowed
                      - not_found
                      - conflict
                      - payload_too_large
                      - insufficient_credits
                      - budget_capped
                      - rate_limited
                      - capability_unavailable
                      - upstream_unavailable
                      - upstream_error
                      - internal_error
                    description: Stable machine-readable cause. Branch on this.
                  details:
                    description: >-
                      Optional structured context, e.g. which field failed
                      validation.
        '503':
          description: '`upstream_unavailable`.'
          content:
            application/json:
              schema:
                type: object
                required:
                  - success
                  - error
                  - code
                properties:
                  success:
                    type: boolean
                    enum:
                      - false
                  error:
                    type: string
                    description: >-
                      Human-readable. Wording may change between releases — do
                      not match on it.
                  code:
                    type: string
                    enum:
                      - invalid_request
                      - unauthorized
                      - forbidden
                      - origin_not_allowed
                      - not_found
                      - conflict
                      - payload_too_large
                      - insufficient_credits
                      - budget_capped
                      - rate_limited
                      - capability_unavailable
                      - upstream_unavailable
                      - upstream_error
                      - internal_error
                    description: Stable machine-readable cause. Branch on this.
                  details:
                    description: >-
                      Optional structured context, e.g. which field failed
                      validation.
components:
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: A workspace API key (`sk_live_...`), minted from workspace settings.

````