---
title: "Update form"
method: PUT
path: "/forms/{id}"
tags: ["Forms"]
---

# Update form

`PUT /forms/{id}`

## Request

- Base URL: `https://api.100hires.com/v2`
- URL: `https://api.100hires.com/v2/forms/{id}`
- Auth: HTTP bearer

Updates form metadata and question composition. Supports iterative form design and rollout workflows.

## Path parameters

- `id` integer, required

## Request body

- FormUpdateRequest
  - `name` string, required: Form name.
  - `questions` integer[]: Array of question IDs to attach to this form.

## Response `200`

Updated form

- Form
  - `id` integer, required: Form ID.
  - `name` string, required: Form name.
  - `url_backoffice` string, uri: Absolute backoffice URL to edit this questionnaire form in the 100Hires recruiter app. Use to render deep-links in agent UIs.
  - `job_ids` integer[]: IDs of live jobs whose active application form this is, ascending. A job with no form attached falls back to the company default form but is NOT listed here — read the job's `form_id` for the effective form. Present in both `view=full` and `view=summary`.
  - `questions` Question[]: Array of questions on this form. Present only when `view=full` (default); omitted entirely when `view=summary` — forms can embed dozens of question definitions.
    - `id` integer, required: Question ID.
    - `text` string, required: Question text.
    - `type` string, required: Question type.
    - `options` string[]: Answer options for select/multiselect types.
    - `status` 'required' | 'optional' | 'hidden': Visibility status on the form.

## Other responses

- `400`: Validation error
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not found
- `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)
