Update Case
Rename a case, edit its description or agent instructions, move it to another status, archive it, or restore it
agent.instructions is returned by Get Case and by this
endpoint.
Statuses
These five keys are always accepted:statuses array of
Get Case — you never have to hardcode them.
There is no transition matrix: any accepted key can follow any other, reopening a
closed case included. This is the same freedom a user has inside Penbox.
parent_status is derived by Penbox from the status you set and cannot be written.
Authorizations
API token (starts with pnbx_). Create at https://app.penbox.io/workspace/settings/api. Include as: Authorization: Bearer {token}
Path Parameters
Case UUID
Body
The status key to move the case to. Always accepted: draft, pending, in_progress, closed, cancelled. A case created from a case template also accepts that template's custom status keys — read them from the statuses array of GET /cases/{id}. Any other key returns 422 with the list of accepted keys.
"in_progress"
Set to true to archive the case, false to restore it.
true
The new title of the case. Cannot be empty.
1"Litige bail commercial - Dupont"
The new description of the case. null or an empty string clears it.
"Commercial lease dispute, hearing on 12 March."
The case agent. Only its instructions can be set through the API; the rest of its settings stay as they are.
Response
Case updated successfully
Case UUID
Case title
Parent status
draft, pending, in_progress, closed, cancelled Creation timestamp
Last update timestamp
Workspace the case belongs to
Case description
The case agent, as far as the API exposes it.
Language/locale code
Custom reference number
Key of the current status
Human-readable label of the current status. Custom statuses return the label configured on the case template, in the language it was written in. Built-in statuses (draft, pending, in_progress, closed, cancelled) return an English label, as the API has no notion of the reader's language.
"Waiting for documents"
Who the case is waiting for
none, owner, contact Statuses available on this case, inherited from its case template. Use it to resolve the status key into a readable label. Null when no status is configured.
Timestamp when archived
True for a Silent case: created from a connected mailbox, not picked up by anyone yet, and kept out of the team's case views. It is picked up, for good, at the first action a person takes on it.
Array of contact objects
Template reference
Case owner information
Who decided to create the case: human a person, ai a model, automation a rule configured on a case template, partner a partner integration, system Penbox itself or an API token. Read-only, and null on cases created before this was recorded.
human, ai, automation, partner, system The surface the case came through: the Penbox app, the Outlook add-in, an AI assistant, this API, an email, a completed form, a connection or Penbox itself. Read-only, and null on cases created before this was recorded.
app, outlook, mcp, api, email, form, connection, system The workspace member who created the case. Null when no person created it, and null on cases created before this was recorded. Read-only.
Array of step objects representing the case workflow
The data of the case: its declared fields with their current values, and the values written without a declared field.
One embed link per contact who has the customer portal on this case. Empty when the case runs no portal, when the contact's role has no portal, or when the case requires a verification code.