API DOCUMENTATION / JOBS ENDPOINTS
Jobs endpoints
Methods, query behavior, response differences, and change retrieval for jobs.
List jobs
| Method | Path | Success envelope | Pagination |
|---|---|---|---|
| GET | /v1/jobs | {data, next_cursor, snapshot_watermark} | limit defaults to 50; valid range 1–250. |
One result is a combined job_id with its associated postings. By default, results sort by job_updated_at descending, then job_id descending; text-search requests default to relevance, and sort=updated selects updated order explicitly. The REST page limit is at most 250, while the MCP search_jobs tool caps pages at 25. The response serializer is list-specific; see field shapes.
Count jobs
| Method | Path | Success envelope | Pagination |
|---|---|---|---|
| GET | /v1/jobs/count | {count, snapshot_watermark} | None. The route rejects pagination and change-feed parameters. |
The count uses a distinct included-job count at a projection watermark. It is a separate request from list paging; a changing projection or query scope can make totals differ from a client’s accumulated pages.
curl --request GET "$HEADCOUNTLABS_BASE_URL/v1/jobs/count?company_id=12345678-1234-4234-8234-123456789abc¤tness=current" --header 'Authorization: Bearer <API_KEY>'Read one job
| Method | Path | Result |
|---|---|---|
| GET | /v1/jobs/{jobId} | One {data: job} envelope when found. Merged IDs return 308 and a merge envelope; withdrawn IDs return 410; unknown IDs return 404. |
The identifier is a canonical lowercase UUID for the combined job. A posting identifier and source posting identifier refer to different records. Detail serialization differs from list serialization.
curl --request GET "$HEADCOUNTLABS_BASE_URL/v1/jobs/12345678-1234-4234-8234-123456789abc" --header 'Authorization: Bearer <API_KEY>'Read job changes
GET /v1/jobs/changes is available with an API key. Start with a since timestamp or continue with the opaque after cursor. The response contains data, resume_cursor, has_more, and snapshot_watermark; created and updated events can include a job, while expired events identify the job and event time. The route can return 503 if the projection is unavailable or changes during the request.
curl --request GET "$HEADCOUNTLABS_BASE_URL/v1/jobs/changes?after=opaque_cursor_example&limit=100" --header 'Authorization: Bearer <API_KEY>'Request example
curl --request GET "$HEADCOUNTLABS_BASE_URL/v1/jobs?currentness=current&limit=50" --header 'Authorization: Bearer <API_KEY>'The list response contains combined jobs and their postings.
Continue in the reference
Check related request behavior before you build.
View route status and methods Discuss API requirements