---
title: "Get a job description"
method: GET
path: "/api/v1/job-descriptions/{id}"
tags: ["Job descriptions"]
---

# Get a job description

`GET /api/v1/job-descriptions/{id}`

## Request

- Base URL: `https://app.probbai.com`
- URL: `https://app.probbai.com/api/v1/job-descriptions/{id}`
- Auth: HTTP bearer

Read the full saved job and its content revision before attaching a candidate application.

## Before you call

Use an ID from List job descriptions. Check status is ACTIVE before preparing a new report.

**Required scope:** `job-descriptions:read`.

## What happens next

Pass the ID with kind=existing in the upload input. Send revision as expectedRevision when you want submission to fail if the job changes.

## Recovery

A 404 means the job is not available in this workspace. On JD_REVISION_CHANGED during preparation, read the job again and review the revised requirements before retrying.

[Follow the complete workflow](/integration-discovery/) · [Errors and retries](/api-errors/)

## Path parameters

- `id` string, required

## Response `200`

Pass the ID with kind=existing in the upload input. Send revision as expectedRevision when you want submission to fail if the job changes.

- object
  - `data` JobDescription, required
    - `id` string, required: Resource identifier. External-reference IDs are supplied by your system; resource/event IDs are returned by ProBB AI.
    - `title` string, nullable, required: Saved job title, or null if not supplied.
    - `company` string, nullable, required: Company name recorded on the job description; null when not supplied.
    - `team` string, nullable, required: Team recorded on the job description, or null if unspecified.
    - `location` string, nullable, required: Location recorded on the job description, or null if unspecified.
    - `level` string, nullable, required: Seniority recorded on the job description, or null if unspecified.
    - `employmentType` 'FULL_TIME' | 'PART_TIME' | 'CONTRACT' | 'TEMPORARY' | 'INTERNSHIP', nullable, required: How the role is offered: FULL_TIME, PART_TIME, CONTRACT, TEMPORARY, or INTERNSHIP, or null if unspecified. Changes the job revision once set.
    - `status` string, required: Current state of the surrounding resource or finding. Use the documented enum and the operation's workflow explanation.
    - `description` string, required: Full job-description text used to understand the role requirements.
    - `revision` string, required: Content hash of the saved job. Send as expectedRevision when preparing against that exact reviewed content.
    - `createdAt` string, date-time, required: UTC creation timestamp in ISO 8601 format.
    - `updatedAt` string, date-time, required: UTC time the saved job was last updated.

## Other responses

- `400`: Invalid input or cursor
- `401`: Invalid, expired, or revoked API key
- `403`: Disabled organisation or missing scope
- `404`: The resource is absent, expired, deleted, or unavailable in this workspace. Verify the resource ID and key's workspace.
- `405`: Method not allowed; consult Allow for supported methods
- `429`: Request limit exceeded
- `500`: Unexpected failure
- `503`: Service unavailable

---

[API](https://skmtc.dev/probbai/apis/probb-ai-customer-api.md) · [All operations](https://skmtc.dev/probbai/apis/probb-ai-customer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/probbai/apis/probb-ai-customer-api/revisions/33a3294530e4?raw)
