---
title: "List job descriptions"
method: GET
path: "/api/v1/job-descriptions"
tags: ["Job descriptions"]
---

# List job descriptions

`GET /api/v1/job-descriptions`

## Request

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

Discover saved jobs so your integration can attach resumes to an existing role instead of copying job text into every request.

## Before you call

Use job-descriptions:read. By default only ACTIVE jobs are listed; search matches titles/companies. Archived jobs can be listed explicitly.

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

## What happens next

Save the selected job ID and fetch its full description. Follow nextCursor with unchanged search/status filters; null means the end.

## Recovery

Archived jobs cannot admit new work. If a role disappears, refresh the list and ask a workspace user to confirm the intended job. This API does not create or edit jobs.

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

## Query parameters

- `limit` integer
- `cursor` string
- `status` 'ACTIVE' | 'ARCHIVED'
- `search` string

## Response `200`

Save the selected job ID and fetch its full description. Follow nextCursor with unchanged search/status filters; null means the end.

- object
  - `data` JobDescriptionPage, required
    - `items` object[], required: Page or batch entries. An empty list is valid; use the cursor or individual item states to decide what happens next.
      - `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.
      - `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.
    - `nextCursor` string, nullable, required: Opaque continuation token. Reuse unchanged with the same filters. List endpoints return null at the end; the event feed always returns a position.

## Other responses

- `400`: Invalid input or cursor
- `401`: Invalid, expired, or revoked API key
- `403`: Disabled organisation or missing scope
- `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)
