---
title: "Gets a job by its id."
method: GET
path: "/job/{jobId}"
tags: ["Job"]
---

# Gets a job by its id.

`GET /job/{jobId}`

## Path parameters

- `jobId` string, required

## Response `200`

OK

- GetJobByIdEndpointOutput — The result when a job has been retrieved.
  - `jobId` string, required — The job id.
  - `name` string, required — The job name.
  - `definitionId` string, required — The job definition id.
  - `audienceId` string, required — The audience id.
  - `revisionNumber` integer, required — The revision number.
  - `pipelineId` string, required — The pipeline id.
  - `campaignId` string, nullable — The job's campaign id. Null when the pipeline did not yield exactly one campaign.
  - `audienceName` string, nullable — The audience name, or null when the job's audience has since been deleted (jobs outlive their audience).
  - `state` 'Submitted' | 'Running' | 'Completed' | 'Failed' | 'ManualApproval' | 'Queued' | 'Paused' | 'StaleResults' | 'SpendLimited', required
  - `isPublic` boolean, required — Whether the job (and its results) is shared publicly.
  - `audienceDeleted` boolean, required — Whether the audience backing this job was deleted, meaning the job can never run.
  - `completedAt` string, date-time, nullable — The timestamp when the job was completed.
  - `resultFileName` string, nullable — The file name of the result.
  - `failedAt` string, date-time, nullable — The timestamp when the job failed.
  - `failureMessage` string, nullable — The failure message.
  - `reviewReason` 'ContentFlagged' | 'UnsupportedContentType' | 'CheckErrored' | 'ClassificationTimedOut' | 'null', nullable — Why the job was routed to manual review, when it is (or was) in ManualApproval. Null when no customer-facing reason applies.
  - `createdAt` string, date-time, required — The creation timestamp.
  - `ownerId` string, uuid, required — The owner id.
  - `ownerMail` string, required — The owner email.
  - `organizationId` string, required — The id of the organization that owns the entity.

## Other responses

- `400` — Bad Request
- `401` — Unauthenticated
- `403` — Forbidden

## Changes

- **2026-08-21** `5f993bd211f5` — 2 info
  - added the optional property `audienceName` to the response with the `200` status
  - added the optional property `campaignId` to the response with the `200` status
- **2026-08-13** `d779de93a5ee` — 3 breaking, 1 info
  - the response property `reviewReason` became nullable for the status `200`
  - added `#/components/schemas/ReviewReason` to the `reviewReason` response property `oneOf` list for the response status `200`
  - the `reviewReason` response's property type/format changed from ``/`` to `string`/`` for status `200`
  - removed `#/components/schemas/ReviewReason` from the `reviewReason` response property `allOf` list for the response status `200`

[Change history](https://skmtc.dev/rapidata/apis/rapidata-api/changes/job/:jobId/get.md)

---

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