---
title: "Get a job"
method: GET
path: "/v1/jobs/{job_id}"
tags: ["Profiles"]
---

# Get a job

`GET /v1/jobs/{job_id}`

## Request

- Base URL: `https://api.recruitmcp.com`
- URL: `https://api.recruitmcp.com/v1/jobs/{job_id}`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://recruitmcp.com/oauth/authorize`, token URL `https://recruitmcp.com/oauth/token`, scopes: `sourcing:read`)

Free. Poll the job_id from POST /v1/people:enrich that returned HTTP 202, every few seconds, until status is completed or failed. When the job is completed, result.data holds the profiles and credits_charged is what the ledger charged for the job, the same number as result.cost.credits. It is 0 until then. The call that queued the job is charged when it completes; this poll never charges. view defaults to full, the same profile enrich returns, including education. view=compact is the short profile.

Polling example:
```bash
KEY="<your API key>"
curl -s -X POST https://api.recruitmcp.com/v1/people:enrich \
  -H "Authorization: Bearer $KEY" -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" -d '{"ids":["lead_8f2a1c_1"]}'
# 202: {"job_id":"job_01J0JOB0EXAMPLE","poll_url":"/v1/jobs/job_01J0JOB0EXAMPLE","status":"queued",...}
until curl -s https://api.recruitmcp.com/v1/jobs/job_01J0JOB0EXAMPLE \
  -H "Authorization: Bearer $KEY" | grep -q '"status":"\(completed\|failed\)"'; do sleep 3; done
curl -s https://api.recruitmcp.com/v1/jobs/job_01J0JOB0EXAMPLE -H "Authorization: Bearer $KEY"
# result.data holds the profiles; credits_charged equals result.cost.credits
```

Scope: `sourcing:read`.

## Path parameters

- `job_id` string, required

## Query parameters

- `view` 'full' | 'compact'

## Headers

- `RecruitMCP-Version` '2026-10-13'
- `RecruitMCP-Customer` string

## Response `200`

The job, with profiles once completed.

- Job
  - `id` string, required
  - `object` 'job', required
  - `kind` 'people_fetch'
  - `job_id` string: Same as id.
  - `status` 'queued' | 'running' | 'parked' | 'completed' | 'failed', required
  - `poll_url` string: Path of GET /v1/jobs/{job_id}. Poll it every few seconds until status is completed or failed.
  - `credits_charged` number: Credits the ledger charged for this job, the same number as result.cost.credits once completed. 0 until the job completes. The call that queued the job is charged when it completes.
  - `progress` object
    - `done` integer
    - `total` integer
  - `error` string, nullable
  - `result` object, nullable
    - `data` Profile[]
      - `profile_id` string, required: Search id. The same value search returned when both ids are known.
      - `alternate_id` string, nullable: The other profile id for the same person. Null until the person has been enriched and both ids are known.
      - `full_name` string, nullable
      - `headline` string, nullable
      - `summary` string, nullable
      - `photo` string, nullable: Profile photo on this API, /v1/media/{token}. The token expires after 7 days; a later response signs a new one. Null when there is no photo.
      - `profile_url` string, nullable
      - `public_identifier` string, nullable
      - `locations` object[]
        - `name` string
      - `experience` object[]
        - `position` string, nullable
        - `company` string, nullable
        - `started` string, nullable
        - `ended` string, nullable
        - `current` boolean
        - `summary` string, nullable
        - `location` string, nullable
        - `company_url` string, nullable
        - `company_industry` string, nullable
        - `company_size` string, nullable
      - `education` object[]
        - `university` string, nullable
        - `url` string, nullable: School profile URL.
        - `degree` string[]
        - `faculty` string, nullable
        - `started_year` integer, nullable
        - `ended_year` integer, nullable
      - `skills` string[]
      - `language` object[]
        - `name` string, nullable
        - `proficiency` string, nullable
      - `certification` object[]
        - `name` string, nullable
        - `authority` string, nullable
      - `open_to_work` boolean
      - `source` 'profile_index' | 'contact_provider', required
      - `fetched_at` string, date-time
    - `not_found` string[]
    - `cost` Cost
      - `credits` integer, required: Credits charged by this call. Whole credits. 0 on an idempotent replay, where the body also has replayed: true and the header Idempotent-Replayed: true.
      - `cached_items` integer: Items read from cache. On a replay, the value of the first response.
      - `live_items` integer: Items fetched live by this call. 0 on a replay.
      - `upstream_calls` integer: Index calls made by this call. 0 on a replay.
  - `created_at` string, date-time
  - `updated_at` string, date-time

## Other responses

- `400`: `invalid_request` (do not retry): A field is missing or has a value this endpoint does not accept. `unsupported_version` (do not retry): RecruitMCP-Version is not a supported version.
- `401`: `unauthorized` (do not retry): Missing bearer API key.
- `403`: `forbidden` (do not retry): This customer is disabled. `insufficient_scope` (do not retry): This key does not include the scope this endpoint requires.
- `404`: `not_found` (do not retry): No record with this id exists in the workspace.
- `429`: `rate_limited` (retry): Per-key rate limit exceeded.

## Changes

- **2026-10-20** `ad27b35513a6`: 5 warning
  - added the new `approval_forced` enum value to the `error/code` response property for the response status `400`
  - added the new `approval_forced` enum value to the `error/code` response property for the response status `401`
  - added the new `approval_forced` enum value to the `error/code` response property for the response status `403`
  - added the new `approval_forced` enum value to the `error/code` response property for the response status `404`
  - …1 more

[Operation history](https://skmtc.dev/recruitmcp/apis/recruitmcp-api/changes/v1/jobs/:job_id/get.md)

---

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