---
title: "Get job details"
method: GET
path: "/jobs/{id}"
tags: ["Jobs"]
---

# Get job details

`GET /jobs/{id}`

Retrieve details of a specific job. If the job is complete with an output, includes a download URL.

## Path parameters

- `id` string, required — Job ID (e.g., job_abc123)

## Response `200`

Job details

- object
  - `data` union, required
    - object
      - `id` string, required — Job ID (e.g. job_abc123)
      - `orgId` string, required — Organization ID
      - `type` string, required — Job type (e.g. watermark.apply)
      - `source` string, required — How the job was created (api | dashboard | mcp ...)
      - `client` string, nullable, required — Originating client (sdk | cli | mcp | n8n | ...), or null
      - `retryCount` integer, required — Number of retry attempts
      - `idempotencyKey` string, nullable, required — Caller-supplied idempotency key, or null
      - `mediaType` string, nullable, required — Detected media type (video | image | audio), or null
      - `inputs` object, required — Input file references
      - `params` object, required — Job parameters
      - `cost` object, nullable, required — Amount charged, or null when not yet billed
        - `amount` number, required — Amount charged in nanodollars (integer minor units; 1 USD = 1,000,000,000). Use `formatted` for display.
        - `currency` 'USD', required — ISO-4217 currency code
        - `formatted` string, required — Amount formatted as dollars (e.g. "$0.50")
      - `outputCategory` 'video' | 'image' | 'audio' | 'json' | 'captions' | 'raw', required — Output category. Clients should tolerate unknown future values.
      - `steps` object[], required — Execution steps
        - `id` string, required
        - `name` string, required
        - `status` string, required — pending | running | complete | skipped | error
        - `startedAt` number
        - `completedAt` number
        - `durationMs` number
        - `meta` object
        - `error` string
      - `logsAvailable` boolean, required — Whether execution logs are stored
      - `resourcesAvailable` boolean, required — Whether the resource-utilization series is stored
      - `metricsAvailable` boolean — @deprecated renamed to resourcesAvailable; kept until the next major
      - `region` string, nullable — Execution region (e.g. us-east-1), null until dispatched
      - `timeoutMs` integer, nullable, required — How long this job is allowed to run, in milliseconds: the requested timeout clamped to the plan ceiling. Null until the job is dispatched. Clients waiting on a job should bound the wait by this rather than a fixed guess.
      - `createdAt` number, required — Creation timestamp (Unix ms)
      - `dispatchedAt` number, nullable, required — Dispatch timestamp (Unix ms)
      - `startedAt` number, nullable, required — Start timestamp (Unix ms)
      - `completedAt` number, nullable, required — Completion timestamp (Unix ms)
      - `settledAt` number, nullable, required — CF Worker timestamp when terminal status written (Unix ms)
      - `retentionExpiresAt` integer, nullable, required — Unix ms when the stored output files are deleted (completion + plan retention window). Null until the job completes with a stored output. Distinct from output.expiresAt, which is the short-lived download-URL expiry.
      - `webUrl` string, required — Dashboard URL for this job
      - `model` string, nullable, required — Resolved generation model id (image.generate / image.edit jobs only), else null
      - `callback` object, nullable — Per-job callback delivery status, populated by GET /jobs/:id when a callback.url was set at submit (else null/absent). Deliberately carries ONLY the status — the callback url and any custom headers are secret and are never returned by any response.
        - `status` 'pending' | 'delivered' | 'failed', required — Delivery state of the per-job completion callback.
      - `status` 'waiting', required — Accepted, not yet dispatched to a provider
    - object
      - `id` string, required — Job ID (e.g. job_abc123)
      - `orgId` string, required — Organization ID
      - `type` string, required — Job type (e.g. watermark.apply)
      - `source` string, required — How the job was created (api | dashboard | mcp ...)
      - `client` string, nullable, required — Originating client (sdk | cli | mcp | n8n | ...), or null
      - `retryCount` integer, required — Number of retry attempts
      - `idempotencyKey` string, nullable, required — Caller-supplied idempotency key, or null
      - `mediaType` string, nullable, required — Detected media type (video | image | audio), or null
      - `inputs` object, required — Input file references
      - `params` object, required — Job parameters
      - `cost` object, nullable, required — Amount charged, or null when not yet billed
        - `amount` number, required — Amount charged in nanodollars (integer minor units; 1 USD = 1,000,000,000). Use `formatted` for display.
        - `currency` 'USD', required — ISO-4217 currency code
        - `formatted` string, required — Amount formatted as dollars (e.g. "$0.50")
      - `outputCategory` 'video' | 'image' | 'audio' | 'json' | 'captions' | 'raw', required — Output category. Clients should tolerate unknown future values.
      - `steps` object[], required — Execution steps
        - `id` string, required
        - `name` string, required
        - `status` string, required — pending | running | complete | skipped | error
        - `startedAt` number
        - `completedAt` number
        - `durationMs` number
        - `meta` object
        - `error` string
      - `logsAvailable` boolean, required — Whether execution logs are stored
      - `resourcesAvailable` boolean, required — Whether the resource-utilization series is stored
      - `metricsAvailable` boolean — @deprecated renamed to resourcesAvailable; kept until the next major
      - `region` string, nullable — Execution region (e.g. us-east-1), null until dispatched
      - `timeoutMs` integer, nullable, required — How long this job is allowed to run, in milliseconds: the requested timeout clamped to the plan ceiling. Null until the job is dispatched. Clients waiting on a job should bound the wait by this rather than a fixed guess.
      - `createdAt` number, required — Creation timestamp (Unix ms)
      - `dispatchedAt` number, nullable, required — Dispatch timestamp (Unix ms)
      - `startedAt` number, nullable, required — Start timestamp (Unix ms)
      - `completedAt` number, nullable, required — Completion timestamp (Unix ms)
      - `settledAt` number, nullable, required — CF Worker timestamp when terminal status written (Unix ms)
      - `retentionExpiresAt` integer, nullable, required — Unix ms when the stored output files are deleted (completion + plan retention window). Null until the job completes with a stored output. Distinct from output.expiresAt, which is the short-lived download-URL expiry.
      - `webUrl` string, required — Dashboard URL for this job
      - `model` string, nullable, required — Resolved generation model id (image.generate / image.edit jobs only), else null
      - `callback` object, nullable — Per-job callback delivery status, populated by GET /jobs/:id when a callback.url was set at submit (else null/absent). Deliberately carries ONLY the status — the callback url and any custom headers are secret and are never returned by any response.
        - `status` 'pending' | 'delivered' | 'failed', required — Delivery state of the per-job completion callback.
      - `status` 'dispatched', required — Dispatched to a provider, not yet running
      - `progress` number, nullable — Completion fraction 0..1, or null when it cannot be determined
      - `eta` number, nullable — Estimated seconds remaining, or null
      - `bootState` object, nullable — Live boot detail while a Modal-lane container spins up
        - `phase` string, required — Boot phase: scheduling | queued | pulling-image | booting | restoring
        - `detail` string, required — Human-readable line, e.g. "waiting for GPU capacity"
        - `elapsedMs` integer, required — Milliseconds since dispatch
        - `typicalMs` integer, nullable, required — Typical cold-start duration for this workload, or null when unknown
        - `etaMs` integer, nullable, required — Whole-job remaining estimate (boot + generation), in milliseconds, or null when unknown
    - object
      - `id` string, required — Job ID (e.g. job_abc123)
      - `orgId` string, required — Organization ID
      - `type` string, required — Job type (e.g. watermark.apply)
      - `source` string, required — How the job was created (api | dashboard | mcp ...)
      - `client` string, nullable, required — Originating client (sdk | cli | mcp | n8n | ...), or null
      - `retryCount` integer, required — Number of retry attempts
      - `idempotencyKey` string, nullable, required — Caller-supplied idempotency key, or null
      - `mediaType` string, nullable, required — Detected media type (video | image | audio), or null
      - `inputs` object, required — Input file references
      - `params` object, required — Job parameters
      - `cost` object, nullable, required — Amount charged, or null when not yet billed
        - `amount` number, required — Amount charged in nanodollars (integer minor units; 1 USD = 1,000,000,000). Use `formatted` for display.
        - `currency` 'USD', required — ISO-4217 currency code
        - `formatted` string, required — Amount formatted as dollars (e.g. "$0.50")
      - `outputCategory` 'video' | 'image' | 'audio' | 'json' | 'captions' | 'raw', required — Output category. Clients should tolerate unknown future values.
      - `steps` object[], required — Execution steps
        - `id` string, required
        - `name` string, required
        - `status` string, required — pending | running | complete | skipped | error
        - `startedAt` number
        - `completedAt` number
        - `durationMs` number
        - `meta` object
        - `error` string
      - `logsAvailable` boolean, required — Whether execution logs are stored
      - `resourcesAvailable` boolean, required — Whether the resource-utilization series is stored
      - `metricsAvailable` boolean — @deprecated renamed to resourcesAvailable; kept until the next major
      - `region` string, nullable — Execution region (e.g. us-east-1), null until dispatched
      - `timeoutMs` integer, nullable, required — How long this job is allowed to run, in milliseconds: the requested timeout clamped to the plan ceiling. Null until the job is dispatched. Clients waiting on a job should bound the wait by this rather than a fixed guess.
      - `createdAt` number, required — Creation timestamp (Unix ms)
      - `dispatchedAt` number, nullable, required — Dispatch timestamp (Unix ms)
      - `startedAt` number, nullable, required — Start timestamp (Unix ms)
      - `completedAt` number, nullable, required — Completion timestamp (Unix ms)
      - `settledAt` number, nullable, required — CF Worker timestamp when terminal status written (Unix ms)
      - `retentionExpiresAt` integer, nullable, required — Unix ms when the stored output files are deleted (completion + plan retention window). Null until the job completes with a stored output. Distinct from output.expiresAt, which is the short-lived download-URL expiry.
      - `webUrl` string, required — Dashboard URL for this job
      - `model` string, nullable, required — Resolved generation model id (image.generate / image.edit jobs only), else null
      - `callback` object, nullable — Per-job callback delivery status, populated by GET /jobs/:id when a callback.url was set at submit (else null/absent). Deliberately carries ONLY the status — the callback url and any custom headers are secret and are never returned by any response.
        - `status` 'pending' | 'delivered' | 'failed', required — Delivery state of the per-job completion callback.
      - `status` 'running', required — Provider is executing the job
      - `progress` number, nullable, required — Completion fraction 0..1, or null when it cannot be determined
      - `eta` number, nullable, required — Estimated seconds remaining, or null
    - object
      - `id` string, required — Job ID (e.g. job_abc123)
      - `orgId` string, required — Organization ID
      - `type` string, required — Job type (e.g. watermark.apply)
      - `source` string, required — How the job was created (api | dashboard | mcp ...)
      - `client` string, nullable, required — Originating client (sdk | cli | mcp | n8n | ...), or null
      - `retryCount` integer, required — Number of retry attempts
      - `idempotencyKey` string, nullable, required — Caller-supplied idempotency key, or null
      - `mediaType` string, nullable, required — Detected media type (video | image | audio), or null
      - `inputs` object, required — Input file references
      - `params` object, required — Job parameters
      - `cost` object, nullable, required — Amount charged, or null when not yet billed
        - `amount` number, required — Amount charged in nanodollars (integer minor units; 1 USD = 1,000,000,000). Use `formatted` for display.
        - `currency` 'USD', required — ISO-4217 currency code
        - `formatted` string, required — Amount formatted as dollars (e.g. "$0.50")
      - `outputCategory` 'video' | 'image' | 'audio' | 'json' | 'captions' | 'raw', required — Output category. Clients should tolerate unknown future values.
      - `steps` object[], required — Execution steps
        - `id` string, required
        - `name` string, required
        - `status` string, required — pending | running | complete | skipped | error
        - `startedAt` number
        - `completedAt` number
        - `durationMs` number
        - `meta` object
        - `error` string
      - `logsAvailable` boolean, required — Whether execution logs are stored
      - `resourcesAvailable` boolean, required — Whether the resource-utilization series is stored
      - `metricsAvailable` boolean — @deprecated renamed to resourcesAvailable; kept until the next major
      - `region` string, nullable — Execution region (e.g. us-east-1), null until dispatched
      - `timeoutMs` integer, nullable, required — How long this job is allowed to run, in milliseconds: the requested timeout clamped to the plan ceiling. Null until the job is dispatched. Clients waiting on a job should bound the wait by this rather than a fixed guess.
      - `createdAt` number, required — Creation timestamp (Unix ms)
      - `dispatchedAt` number, nullable, required — Dispatch timestamp (Unix ms)
      - `startedAt` number, nullable, required — Start timestamp (Unix ms)
      - `completedAt` number, nullable, required — Completion timestamp (Unix ms)
      - `settledAt` number, nullable, required — CF Worker timestamp when terminal status written (Unix ms)
      - `retentionExpiresAt` integer, nullable, required — Unix ms when the stored output files are deleted (completion + plan retention window). Null until the job completes with a stored output. Distinct from output.expiresAt, which is the short-lived download-URL expiry.
      - `webUrl` string, required — Dashboard URL for this job
      - `model` string, nullable, required — Resolved generation model id (image.generate / image.edit jobs only), else null
      - `callback` object, nullable — Per-job callback delivery status, populated by GET /jobs/:id when a callback.url was set at submit (else null/absent). Deliberately carries ONLY the status — the callback url and any custom headers are secret and are never returned by any response.
        - `status` 'pending' | 'delivered' | 'failed', required — Delivery state of the per-job completion callback.
      - `status` 'complete', required — Finished successfully
      - `output` object, required — Job output (data + file + files). Present only here.
        - `data` unknown
        - `file` object, nullable, required — Convenience shortcut to the single headline result: the one output file, or the stream manifest (.m3u8/.mpd). Read `file.url` directly when you expect one output. Always one of `files`. Null for pure file sets and data-only jobs (which have no single headline).
          - `url` string, required — Ready-to-fetch, time-limited URL for this file
          - `path` string, required — File path within the job output (relative)
          - `type` 'video' | 'image' | 'audio' | 'captions' | 'playlist' | 'data' | 'other', required — File type, derived from the extension. OPEN enum — tolerate unknown future values.
          - `size` number, required — File size in bytes
          - `meta` object — Optional per-file media metadata, when known
            - `format` string — Container/codec format (from extension)
            - `width` number
            - `height` number
            - `durationMs` number
            - `seed` number — Seed used, for reproducible generation
        - `files` object[], required — Every file the job produced, the complete list. Use this when a job can output many files (image sequence, HLS segments, resolution ladder). Empty for data-only jobs.
          - `url` string, required — Ready-to-fetch, time-limited URL for this file
          - `path` string, required — File path within the job output (relative)
          - `type` 'video' | 'image' | 'audio' | 'captions' | 'playlist' | 'data' | 'other', required — File type, derived from the extension. OPEN enum — tolerate unknown future values.
          - `size` number, required — File size in bytes
          - `meta` object — Optional per-file media metadata, when known
            - `format` string — Container/codec format (from extension)
            - `width` number
            - `height` number
            - `durationMs` number
            - `seed` number — Seed used, for reproducible generation
        - `expiresAt` number, nullable, required — Unix ms when the file URLs expire. Present iff `files` is non-empty.
    - object
      - `id` string, required — Job ID (e.g. job_abc123)
      - `orgId` string, required — Organization ID
      - `type` string, required — Job type (e.g. watermark.apply)
      - `source` string, required — How the job was created (api | dashboard | mcp ...)
      - `client` string, nullable, required — Originating client (sdk | cli | mcp | n8n | ...), or null
      - `retryCount` integer, required — Number of retry attempts
      - `idempotencyKey` string, nullable, required — Caller-supplied idempotency key, or null
      - `mediaType` string, nullable, required — Detected media type (video | image | audio), or null
      - `inputs` object, required — Input file references
      - `params` object, required — Job parameters
      - `cost` object, nullable, required — Amount charged, or null when not yet billed
        - `amount` number, required — Amount charged in nanodollars (integer minor units; 1 USD = 1,000,000,000). Use `formatted` for display.
        - `currency` 'USD', required — ISO-4217 currency code
        - `formatted` string, required — Amount formatted as dollars (e.g. "$0.50")
      - `outputCategory` 'video' | 'image' | 'audio' | 'json' | 'captions' | 'raw', required — Output category. Clients should tolerate unknown future values.
      - `steps` object[], required — Execution steps
        - `id` string, required
        - `name` string, required
        - `status` string, required — pending | running | complete | skipped | error
        - `startedAt` number
        - `completedAt` number
        - `durationMs` number
        - `meta` object
        - `error` string
      - `logsAvailable` boolean, required — Whether execution logs are stored
      - `resourcesAvailable` boolean, required — Whether the resource-utilization series is stored
      - `metricsAvailable` boolean — @deprecated renamed to resourcesAvailable; kept until the next major
      - `region` string, nullable — Execution region (e.g. us-east-1), null until dispatched
      - `timeoutMs` integer, nullable, required — How long this job is allowed to run, in milliseconds: the requested timeout clamped to the plan ceiling. Null until the job is dispatched. Clients waiting on a job should bound the wait by this rather than a fixed guess.
      - `createdAt` number, required — Creation timestamp (Unix ms)
      - `dispatchedAt` number, nullable, required — Dispatch timestamp (Unix ms)
      - `startedAt` number, nullable, required — Start timestamp (Unix ms)
      - `completedAt` number, nullable, required — Completion timestamp (Unix ms)
      - `settledAt` number, nullable, required — CF Worker timestamp when terminal status written (Unix ms)
      - `retentionExpiresAt` integer, nullable, required — Unix ms when the stored output files are deleted (completion + plan retention window). Null until the job completes with a stored output. Distinct from output.expiresAt, which is the short-lived download-URL expiry.
      - `webUrl` string, required — Dashboard URL for this job
      - `model` string, nullable, required — Resolved generation model id (image.generate / image.edit jobs only), else null
      - `callback` object, nullable — Per-job callback delivery status, populated by GET /jobs/:id when a callback.url was set at submit (else null/absent). Deliberately carries ONLY the status — the callback url and any custom headers are secret and are never returned by any response.
        - `status` 'pending' | 'delivered' | 'failed', required — Delivery state of the per-job completion callback.
      - `status` 'failed', required — Terminated with an error
      - `error` object, required — Failure detail. Present only here.
        - `code` string, required — Machine-readable error code
        - `message` string, required — Human-readable error message
        - `detail` string, nullable, required — Real provider stderr tail (e.g. ffmpeg), or null
        - `retryable` boolean, required — True when retrying the same job may succeed
        - `failedPhase` 'preparing' | 'processing' | 'finalizing' — Which phase the job failed in, when known
    - object
      - `id` string, required — Job ID (e.g. job_abc123)
      - `orgId` string, required — Organization ID
      - `type` string, required — Job type (e.g. watermark.apply)
      - `source` string, required — How the job was created (api | dashboard | mcp ...)
      - `client` string, nullable, required — Originating client (sdk | cli | mcp | n8n | ...), or null
      - `retryCount` integer, required — Number of retry attempts
      - `idempotencyKey` string, nullable, required — Caller-supplied idempotency key, or null
      - `mediaType` string, nullable, required — Detected media type (video | image | audio), or null
      - `inputs` object, required — Input file references
      - `params` object, required — Job parameters
      - `cost` object, nullable, required — Amount charged, or null when not yet billed
        - `amount` number, required — Amount charged in nanodollars (integer minor units; 1 USD = 1,000,000,000). Use `formatted` for display.
        - `currency` 'USD', required — ISO-4217 currency code
        - `formatted` string, required — Amount formatted as dollars (e.g. "$0.50")
      - `outputCategory` 'video' | 'image' | 'audio' | 'json' | 'captions' | 'raw', required — Output category. Clients should tolerate unknown future values.
      - `steps` object[], required — Execution steps
        - `id` string, required
        - `name` string, required
        - `status` string, required — pending | running | complete | skipped | error
        - `startedAt` number
        - `completedAt` number
        - `durationMs` number
        - `meta` object
        - `error` string
      - `logsAvailable` boolean, required — Whether execution logs are stored
      - `resourcesAvailable` boolean, required — Whether the resource-utilization series is stored
      - `metricsAvailable` boolean — @deprecated renamed to resourcesAvailable; kept until the next major
      - `region` string, nullable — Execution region (e.g. us-east-1), null until dispatched
      - `timeoutMs` integer, nullable, required — How long this job is allowed to run, in milliseconds: the requested timeout clamped to the plan ceiling. Null until the job is dispatched. Clients waiting on a job should bound the wait by this rather than a fixed guess.
      - `createdAt` number, required — Creation timestamp (Unix ms)
      - `dispatchedAt` number, nullable, required — Dispatch timestamp (Unix ms)
      - `startedAt` number, nullable, required — Start timestamp (Unix ms)
      - `completedAt` number, nullable, required — Completion timestamp (Unix ms)
      - `settledAt` number, nullable, required — CF Worker timestamp when terminal status written (Unix ms)
      - `retentionExpiresAt` integer, nullable, required — Unix ms when the stored output files are deleted (completion + plan retention window). Null until the job completes with a stored output. Distinct from output.expiresAt, which is the short-lived download-URL expiry.
      - `webUrl` string, required — Dashboard URL for this job
      - `model` string, nullable, required — Resolved generation model id (image.generate / image.edit jobs only), else null
      - `callback` object, nullable — Per-job callback delivery status, populated by GET /jobs/:id when a callback.url was set at submit (else null/absent). Deliberately carries ONLY the status — the callback url and any custom headers are secret and are never returned by any response.
        - `status` 'pending' | 'delivered' | 'failed', required — Delivery state of the per-job completion callback.
      - `status` 'cancelled', required — Cancelled before completion

## Other responses

- `401` — Unauthorized
- `404` — Job not found

## Changes

> 7 revisions in range; 5 could not be searched.

- **2026-08-29** `4d10ec4266ee` — 1 info
  - api operation id `getJob` was added

[Change history](https://skmtc.dev/rendobar/apis/rendobar-api/changes/jobs/:id/get.md)

---

[API](https://skmtc.dev/rendobar/apis/rendobar-api.md) · [All operations](https://skmtc.dev/rendobar/apis/rendobar-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/rendobar/rendobar-api/revisions/4d10ec4266ee/schema)
