---
title: "List jobs"
method: GET
path: "/jobs"
tags: ["Jobs"]
---

# List jobs

`GET /jobs`

## Request

- Base URL: `https://api.100hires.com/v2`
- URL: `https://api.100hires.com/v2/jobs`
- Auth: HTTP bearer

Returns paginated jobs with status/date filters. Use for career-site sync, reporting, and external system indexing.

## Query parameters

- `company_id` integer
- `status` string
- `created_at_start` union
  - integer
  - string
- `created_at_end` union
  - integer
  - string
- `updated_after` union
  - integer
  - string
- `department_id` integer
- `q` string
- `include` string
- `page` integer
- `size` integer
- `view` 'full' | 'summary'

## Response `200`

Job list

- JobListResponse
  - `jobs` Job[], required: Array of jobs.
    - `id` integer, required: Unique identifier
    - `alias` string, nullable: Short alphanumeric alias used in UI URLs. Use this to build job links — `https://app.100hires.com/job/{alias}/candidates/pipeline`. Also accepted as `{id}` in API requests.
    - `company_id` integer, required: ID of the company this job belongs to
    - `title` string, required: Public job title shown to candidates
    - `internal_title` string, nullable: Internal job title visible only to the hiring team
    - `internal_job_id` string, nullable: Company's internal job identifier (e.g. requisition number)
    - `description` string: Job description (HTML). Present only when `view=full` (default); omitted entirely when `view=summary` to keep list responses inside the agent context budget. Use `GET /jobs/{id}` or `view=full` to retrieve.
    - `resume_field_status` 'required' | 'optional' | 'hidden', nullable: Whether resume upload is required, optional, or hidden on the application form
    - `location` JobLocation
      - `country` string: Country.
      - `city` string: City.
      - `state` string: State or region.
      - `postal_code` string: Postal code.
      - `street_address` string: Street address.
      - `full_address` string: Full formatted address.
    - `url` string, required: Public URL of the job posting page
    - `url_backoffice` string: Backoffice URL — opens the job's pipeline view inside the recruiter app (`https://app.100hires.com/job/{alias}/candidates/pipeline`). Use this to link agent widgets / UI to the in-app job page rather than the public career page.
    - `is_remote` boolean, required: Whether this is a remote position
    - `is_hybrid` boolean, required: Whether this is a hybrid position: office days plus remote days at the job address. Never true together with is_remote.
    - `job_board_remote_scope` 'city' | 'statewide' | 'nationwide', nullable: How a remote job is listed on Indeed: city, statewide or nationwide. Null when the job is not remote.
    - `status` string, required: Job status: open, closed, draft, or archived
    - `department` IdName
      - `id` integer, required: Unique identifier.
      - `name` string, required: Display name.
    - `category` IdName
      - `id` integer, required: Unique identifier.
      - `name` string, required: Display name.
    - `employment_type` IdName
      - `id` integer, required: Unique identifier.
      - `name` string, required: Display name.
    - `education_level` IdName
      - `id` integer, required: Unique identifier.
      - `name` string, required: Display name.
    - `experience_level` IdName
      - `id` integer, required: Unique identifier.
      - `name` string, required: Display name.
    - `workflow_id` integer, nullable: ID of the hiring workflow (pipeline) assigned to this job
    - `workflow` IdName
      - `id` integer, required: Unique identifier.
      - `name` string, required: Display name.
    - `form_id` integer, nullable: ID of the application form candidates fill in for this job — the form attached to the job, or the company default form when the job has none attached yet (the same rule the public apply page follows). `null` only when the company has no forms. Fetch the questions with `GET /forms/{id}`. Present in both `view=full` and `view=summary`.
    - `pipeline_stages` object[], nullable: Pipeline stages for this job's workflow. Only included when `include=pipeline_stages` is specified. Suppressed when `view=summary` even if the include was requested.
      - `id` integer
      - `name` string
    - `salary_min` number, nullable: Minimum salary
    - `salary_max` number, nullable: Maximum salary
    - `salary_currency` string, nullable: Salary currency code (e.g. USD, EUR)
    - `salary_period` 'annually' | 'monthly' | 'daily' | 'hourly', nullable: Salary period
    - `hours_per_week_min` integer, nullable: Minimum hours per week
    - `hours_per_week_max` integer, nullable: Maximum hours per week
    - `indeed_posting_data` object: Indeed job board posting metadata. Present only when `view=full` (default); omitted entirely when `view=summary`.
    - `hiring_team` JobHiringTeamMember[]: Team members assigned to this job. Embedded via `include=hiring_team`. Suppressed when `view=summary` even if the include was requested.
      - `id` integer, required: User ID.
      - `full_name` string, required: User full name.
      - `email` string, nullable: User email.
      - `role` string, nullable: Role on hiring team (e.g. hiring_manager, recruiter).
    - `is_satellite` boolean: Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.
    - `parent_job_id` integer, nullable: ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.
    - `language` string, nullable: Locale this job's public page renders in, overriding the career site language. Null means the page follows the career site language (`GET /companies/career-site-settings`), which in turn falls back to en-US. This is the override, not the effective language. Present in both `view=full` and `view=summary`.
    - `created_at` integer, required: Unix timestamp (seconds)
    - `updated_at` integer, required: Unix timestamp (seconds)
    - `ai_scoring_criteria` AiScoringCriterion[]: AI scoring criteria configured for this job, ordered by `position` ASC. Returned as an empty array when none are configured. Present only when `view=full` (default); omitted entirely when `view=summary`.
      - `id` integer, required: Unique identifier of the criterion.
      - `title` string, nullable: Optional short label for the criterion.
      - `text` string, required: Prompt text describing what to evaluate.
      - `weight` integer, required: Relative importance of this criterion in the total score (1–10).
      - `position` integer, required: 0-based ordinal of the criterion in the job's list.
  - `pagination` Pagination, required
    - `page_size` integer, required: Items per page.
    - `page_count` integer, required: Total number of pages.
    - `page` integer, required: Current page number.
    - `total_count` integer, required: Total number of items.

## Other responses

- `400`: Validation error
- `401`: Unauthorized
- `403`: Forbidden
- `415`: Content-Type must be application/json
- `429`: Too many requests

---

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