---
title: "Get job status and outputs"
method: GET
path: "/api/v1/jobs/{id}"
tags: ["Jobs"]
---

# Get job status and outputs

`GET /api/v1/jobs/{id}`

## Request

- Base URL: `https://api.weftly.ai`
- URL: `https://api.weftly.ai/api/v1/jobs/{id}`
- Auth: API key in header `Authorization`

## Path parameters

- `id` string, uuid, required

## Response `200`

Job details with outputs

- Job
  - `job_id` string, uuid, required
  - `session_id` string, uuid, nullable
  - `job_type` 'transcribe' | 'summarize' | 'find_clips' | 'extract_clip' | 'extract_vertical_clip' | 'clips_vertical' | 'clips_from_video' | 'clips_youtube' | 'edit_from_transcript', required: Type of job to run
  - `status` 'pending' | 'uploading' | 'extracting_audio' | 'transcribing' | 'analyzing' | 'publishing' | 'completed' | 'failed' | 'deleted', required
  - `payment_status` 'pending' | 'authorized' | 'paid' | 'refunded' | 'paid_by_parent', required
  - `original_filename` string, required
  - `content_type` string, required
  - `file_size` integer, nullable
  - `duration_seconds` number, nullable
  - `error_message` string, nullable
  - `created_at` string, date-time, required
  - `completed_at` string, date-time, nullable
  - `updated_at` string, date-time, nullable
  - `source_job_id` string, uuid, nullable: For derivative jobs (extract_clip, extract_vertical_clip, or any job created with source_job_id), the parent job whose stored source this job cuts from. Pass this same id to additional derivative calls within `expires_at` to avoid re-uploading.
  - `bundle_job_id` string, uuid, nullable: For bundled child jobs (e.g. a clips_vertical bundle's extract_vertical_clip children), the bundle job that purchased and spawned this one. payment_status is "paid_by_parent" for these rows.
  - `expires_at` string, date-time, nullable: When this job's source video and outputs are scheduled to be deleted from storage. find_clips: 72h after completion (so multiple extract_* calls can compose). transcribe / summarize: 24h. extract_clip / extract_vertical_clip: 24h. Once expired, derivative calls referencing this job_id as source_job_id will fail.
  - `outputs` JobOutput[]
    - `output_id` string, uuid, required
    - `job_id` string, uuid, required
    - `role` string, required
    - `r2_key` string, nullable
    - `external_url` string, uri, nullable
    - `content_type` string, nullable
    - `download_url` string, uri
    - `attachment_url` string, uri: Same content as download_url, but signed with response-content-disposition=attachment so clicking it triggers a browser download (with a sensible filename) instead of inline rendering. Use this for download buttons; use download_url for inline playback or fetch.
    - `created_at` string, date-time, required

## Other responses

- `403`: Unauthorized
- `404`: Not found

---

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