---
title: "Update a job (PATCH)"
method: PATCH
path: "/api/v0/jobs/{id}"
tags: ["Jobs"]
---

# Update a job (PATCH)

`PATCH /api/v0/jobs/{id}`

## Request

- Base URL: `https://www.getonbrd.com`
- URL: `https://www.getonbrd.com/api/v0/jobs/{id}`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/getonbrd/apis/get-on-board-api/docs/api/v0/jobs/:id/patch.ts> (a function with typed inputs; its response is checked against the schema)

Same behavior as `PUT /api/v0/jobs/{id}`. Send only the fields you want to change.

## Path parameters

- `id` string, required

## Headers

- `Authorization` string, required

## Request body

- object
  - `questions` object[]
    - `slug` string
    - `title` string
    - `kind` string
    - `language` string
    - `id` string
    - `hidden` string
  - `expand` string[]
  - `title` string
  - `hiring_company` string, nullable: Name of the client company where the applicant will actually work, when you recruit or outsource on behalf of a client. Requires `hiring_company_website`. Placeholder names ("confidential", "rubro") and your own company name are rejected with `422`.
  - `hiring_company_website` string, nullable: Website of the client company named in `hiring_company`. Required whenever `hiring_company` is sent; it must be a valid http(s) URL and not your own company's domain.
  - `description` string
  - `remote_modality` 'no_remote' | 'temporarily_remote' | 'remote_local' | 'fully_remote' | 'hybrid': Work-location policy. Determines which location ID fields are accepted.
  - `location_region_ids` string[]: For `remote_local` jobs only. Region slugs from `GET /api/v0/regions`.
  - `location_country_ids` string[]: For `remote_local` jobs only. Country slugs from `GET /api/v0/countries`.
  - `location_city_ids` integer[]: Required for `no_remote`, `hybrid`, and `temporarily_remote`. Numeric city IDs from `GET /api/v0/cities`.
  - `company_shell_id` string, nullable: Partner accounts only. Slug of one of your company shells (`GET /api/v0/company_shells`) to publicly brand this job as that client company. Omit for a normal job. On update, send `""` to detach the shell. `404` for an unknown or foreign slug; `422` if your account is not partner-enabled.
  - `hide_salary` boolean: Hide the salary range on public job pages. Full-time and internship jobs still need `min_salary` and `max_salary`. While `true`, responses return `min_salary` and `max_salary` as `null`, so send only the fields you change: a job read back from the API and sent again returns `422`. Get on Board resets it to `false` when your subscription is cancelled or the job is unlocked as a regular (non-subscriber) job. Not the same as `confidential`, which keeps the whole job out of public listings.
  - `cv_required` boolean: Require the candidate's CV file when applying. Only applied when the subscription permits requiring a CV (can_require_resume?). Otherwise silently ignored; the request still succeeds.
  - `linkedin_required` boolean: Require the candidate's LinkedIn profile URL when applying. Only applied when the subscription permits requiring a CV (can_require_resume?). Otherwise silently ignored; the request still succeeds.

## Response `200`

Updates an existing job posting by its slug.

- object
  - `data` object, required
    - `id` string, required
    - `type` string, required
    - `attributes` object, required
      - `title` string, required
      - `description_headline` unknown, required
      - `description` string, required
      - `projects` string, required
      - `functions_headline` unknown, required
      - `functions` string, required
      - `benefits_headline` unknown, required
      - `benefits` string, required
      - `desirable_headline` unknown, required
      - `desirable` string, required
      - `remote` boolean, required
      - `remote_modality` string, required
      - `remote_zone` unknown, required
      - `countries` string[], required
      - `lang` string, required
      - `rejected_reasons` object[], required: Job moderation reasons, meaningful when state is rejected or submitted after rejection. Published jobs may retain earlier reasons. Each item has one reason key with localized title and description. Legacy jobs may also contain retired keys: candidate, compensation_missing, other. Consumers should tolerate unknown keys. Private job responses and job.created/job.updated webhooks share this shape.
        - `anonymous_company` object
          - `title` string, required
          - `description` string, required
        - `bad_job` object
          - `title` string, required
          - `description` string, required
        - `contact_info` object
          - `title` string, required
          - `description` string, required
        - `desirable_required` object
          - `title` string, required
          - `description` string, required
        - `duplicate` object
          - `title` string, required
          - `description` string, required
        - `excess_requirements` object
          - `title` string, required
          - `description` string, required
        - `inconsistent_information` object
          - `title` string, required
          - `description` string, required
        - `information` object
          - `title` string, required
          - `description` string, required
        - `insufficient_project_info` object
          - `title` string, required
          - `description` string, required
        - `irrelevant_requirements` object
          - `title` string, required
          - `description` string, required
        - `list_required_as_desirable` object
          - `title` string, required
          - `description` string, required
        - `mismatch_title_description` object
          - `title` string, required
          - `description` string, required
        - `multiple_positions` object
          - `title` string, required
          - `description` string, required
        - `non_compliant_business_practices` object
          - `title` string, required
          - `description` string, required
        - `no_position_info` object
          - `title` string, required
          - `description` string, required
        - `no_requirements` object
          - `title` string, required
          - `description` string, required
        - `not_really_remote` object
          - `title` string, required
          - `description` string, required
        - `obfuscated_company` object
          - `title` string, required
          - `description` string, required
        - `off_topic` object
          - `title` string, required
          - `description` string, required
        - `seniority_mismatch` object
          - `title` string, required
          - `description` string, required
        - `specific_school_required` object
          - `title` string, required
          - `description` string, required
        - `spelling_grammar` object
          - `title` string, required
          - `description` string, required
        - `talent_pool` object
          - `title` string, required
          - `description` string, required
        - `too_vague` object
          - `title` string, required
          - `description` string, required
        - `unclear_functions` object
          - `title` string, required
          - `description` string, required
      - `category_name` string, required
      - `perks` unknown[], required
        - unknown
      - `min_salary` unknown, required
      - `max_salary` unknown, required
      - `published_at` integer, required
      - `response_time_in_days` object, required
        - `min` unknown, required
        - `max` unknown, required
      - `applications_count` integer, required
      - `location_regions` object, required
        - `data` unknown[], required
          - unknown
      - `location_tenants` object, required
        - `data` unknown[], required
          - unknown
      - `location_cities` object, required
        - `data` object[], required
          - `id` integer, required
          - `type` string, required
      - `modality` object, required
        - `data` object, required
          - `id` integer, required
          - `type` string, required
      - `seniority` object, required
        - `data` object, required
          - `id` integer, required
          - `type` string, required
      - `tags` object, required
        - `data` unknown[], required
          - unknown
      - `state` string, required
      - `hide_salary` boolean, required
      - `company_shell_id` unknown, required
      - `deleted` boolean, required
      - `questions` object, required
        - `data` unknown[], required
          - unknown
      - `location_countries` object, required
        - `data` unknown[], required
          - unknown
      - `submitted_at` integer, required
      - `created_at` integer, required
      - `updated_at` integer, required
      - `hiring_company` unknown
      - `hiring_company_website` unknown

---

[API](https://skmtc.dev/getonbrd/apis/get-on-board-api.md) - [All operations](https://skmtc.dev/getonbrd/apis/get-on-board-api/llms.txt) - [OpenAPI document](https://skmtc.dev/getonbrd/apis/get-on-board-api/revisions/f8405113049f?raw)
