---
title: "Edit an intake"
method: PATCH
path: "/v1/intakes/{id}"
tags: ["Intakes"]
---

# Edit an intake

`PATCH /v1/intakes/{id}`

## Request

- Base URL: `https://api.briefgate.dev`
- URL: `https://api.briefgate.dev/v1/intakes/{id}`
- Auth: HTTP bearer

Edit project name, due date, chase cadence, and the client's name/phone/language/timezone on an existing intake — the alternative used to be deleting it and creating a new one, which re-sends the invitation. `client.email` cannot be changed here: the portal link and magic token are bound to it, so add, remove, or reinstate addresses through the recipients endpoints instead. Every field is optional but at least one is required (400 otherwise); `null` clears `owner_note`, `client_brief`, `due_date` and `chase_at_time`, omitting a field always leaves it untouched. On a `sent`, `in_progress` or stalled intake, changing any cadence-related field (`chase_schedule`, `chase_interval`, `chase_interval_unit`, `chase_at_time`, `max_reminders`, `respect_quiet_hours`, `client.timezone`, `due_date`) cancels every still-scheduled reminder and re-plans under the new settings; attempt numbering is unaffected. Raising `max_reminders` (or setting it to `"unlimited"`) past the number of reminders already sent un-stalls a stalled intake and resumes automatic chasing. Refused with `409 conflict` on an archived intake.

## Path parameters

- `id` string, required

## Request body

- object
  - `owner_note` string, nullable
  - `client_brief` string, nullable: See `client_brief` on POST /v1/intakes. `null` clears it; an empty string is also stored as null.
  - `project_name` string
  - `due_date` string, date, nullable: YYYY-MM-DD
  - `chase_schedule` 'default' | 'gentle' | 'aggressive' | 'custom' | 'off'
  - `chase_interval` integer: Only meaningful with chase_schedule="custom".
  - `chase_interval_unit` 'minutes' | 'hours' | 'days'
  - `chase_at_time` string, nullable: 24-hour local time, e.g. "07:00". Needs a whole-day interval.
  - `max_reminders` union
    - integer
    - 'unlimited'
  - `respect_quiet_hours` boolean
  - `client` object: No `email` — see the endpoint description.
    - `name` string
    - `phone` string, nullable: E.164, e.g. +420601123456
    - `language` 'cs' | 'sk' | 'pl' | 'de' | 'es' | 'en'
    - `timezone` string: IANA timezone, e.g. Europe/Prague
  - `folder_id` string, nullable: Move the intake into this folder, or `null` to move it to Unfiled. Must name a folder on the caller's own account (400 invalid_request, reason validation_error, otherwise). Never affects status, chases, or anything else about the intake. See Folders.

## Response `200`

Updated intake

- object
  - `intake` object
    - `intake_id` string, required
    - `project_name` string, required
    - `status` 'draft' | 'sent' | 'in_progress' | 'completed' | 'archived', required
    - `mode` 'live' | 'test', required
    - `portal_url` string, uri
    - `client` object, required
      - `email` string, email
      - `name` string, nullable
      - `phone` string, nullable: E.164, e.g. +420601123456.
      - `language` 'cs' | 'sk' | 'pl' | 'de' | 'es' | 'en'
      - `timezone` string
      - `also_notify` object[]: Other people who receive the same invitation and reminders through the same link. Present on GET /v1/intakes/{id} only; omitted from the list endpoint, where absent means "not loaded" rather than "none".
        - `email` string, email, required
        - `name` string, nullable, required
        - `bounced_at` string, date-time, nullable, required
      - `client_bounced_at` string, date-time, nullable: When the primary address stopped accepting mail, if it has.
    - `branding` object, nullable
      - `logo_url` string, uri
      - `accent_color` string
      - `sender_name` string: Part of custom branding (Solo plan or higher). On a plan without it the value is stored but not used: mail and the portal show the built-in sender name with the account owner's address. Links and web or e-mail addresses are refused.
      - `reply_to` string, email
    - `folder_id` string, nullable: The folder this intake is filed under, or null for Unfiled. See Folders.
    - `chase_schedule` 'default' | 'gentle' | 'aggressive' | 'custom' | 'off'
    - `chase_interval_minutes` integer, nullable: Only set for chase_schedule="custom".
    - `respect_quiet_hours` boolean
    - `max_reminders` integer, nullable: Null means no cap ("unlimited").
    - `chase_at_time` string, nullable: "HH:MM" in the client's timezone.
    - `due_date` string, date-time, nullable
    - `retention` object
      - `mode` 'days' | 'on_delivery'
      - `days` integer, nullable
      - `anonymize` boolean
    - `created_at` string, date-time, required
    - `sent_at` string, date-time, nullable
    - `completed_at` string, date-time, nullable
    - `delivered_at` string, date-time, nullable: First time an agent collected every delivered item via GET /v1/intakes/{id}/results.
    - `anonymized_at` string, date-time, nullable
    - `client_last_seen` string, date-time, nullable
    - `stalled_at` string, date-time, nullable
    - `purge_at` string, date-time, nullable
    - `client_note` string, nullable: Written by the client. Visible to both sides.
    - `owner_note` string, nullable: The owner's own note on the whole intake. Never shown to the client.
    - `client_brief` string, nullable: The owner's own text handed to the client — shown at the top of the portal as "Information from <sender name>", before the requested items. Attachments are `brief_files`, present on GET /v1/intakes/{id} only — see the Intakes description above.
    - `export` object, nullable: Null if this intake has never been exported. See POST /v1/intakes/{id}/export.
      - `status` 'queued' | 'running' | 'done' | 'failed'
      - `provider` 'google_drive' | 'dropbox', nullable
      - `url` string, uri, nullable: Link to the destination folder, once done.
      - `exported_at` string, date-time, nullable
      - `error` string, nullable

## Other responses

- `400`: Invalid request — malformed body or query parameters
- `401`: Missing or invalid API key
- `403`: Authenticated but not allowed to perform this action
- `404`: Resource not found
- `409`: The intake is archived and cannot be edited.
- `422`: Validation error — the body shape is correct but values are invalid

---

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