Case Update
Update an existing case using PATCH /api/v2/{company}/case/{case_id}/update.
Case Update
Use this endpoint to update a case after it has been created. You can change the case lifecycle status, update general case settings, patch an existing recipient, append new recipients, and append documents.
Authorization
All requests to this endpoint require authentication using a Bearer Token.
Use your NextSign API key as the bearer token for this endpoint.
PATCH is the documented method for this endpoint. POST is also accepted for backwards compatibility.
Endpoint
PATCH https://www.nextsign.dk/api/v2/{company}/case/{case_id}/updatePath Parameters
| Parameter | Type | Description |
|---|---|---|
company | string | Your company identifier |
case_id | string | Unique identifier of the case to update |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
title | string | No | Update the case title |
referenceId | string | No | Update or clear the internal reference ID |
status | string | No | Public lifecycle status. Supported values: draft, open, completed, denied, cancelled. Aliases pending -> open and signed -> completed are also accepted |
state | string | No | Alias for status using canonical lifecycle values |
completedReason | string | No | Optional reason stored when the case is marked as completed |
settings | object | No | Merge into the existing case settings. Availability expiration is recalculated from settings.availability.days |
signingSchemas | array | No | Replace the case-level signing methods. Blocked after any recipient has signed |
recipient | object | No | Patch one existing recipient. recipient._id or recipient.id is required. Blocked after any recipient has signed |
recipients | array | No | Append new recipients to the case. Blocked after any recipient has signed |
addDocuments | array | No | Append new documents to the case. Blocked after any recipient has signed |
Shared object reference: Settings Object, Signing Schemas, Recipient Object, Document Object, and Case States.
status on this endpoint changes the case lifecycle itself. This is different from the status filter on Case List, which describes signing progress derived from the recipients on the case.
Changing status or state here updates the stored case lifecycle directly. It does not send cancellation emails or run other side effects from dedicated dashboard actions such as the separate cancel flow.
Important After First Signature
Once any recipient has signed, the signing package should be treated as locked.
The update endpoint rejects these contract-shape changes after the first signature:
- Changing
signingSchemas - Updating
recipient - Adding
recipients - Adding
addDocuments
If you need to make one of those changes after someone has signed, re-send a new contract/case instead of editing the existing one.
Possible States
| Value | Meaning |
|---|---|
draft | The case exists but is not open for signing yet |
open | The case is active and can be signed |
completed | The case has been marked as completed or fully finished |
denied | The case has been denied during the signing flow |
cancelled | The case has been cancelled |
Alias values accepted on status:
pendingmaps toopensignedmaps tocompleted
Recipient Patch Fields
| Field | Type | Description |
|---|---|---|
_id | string | Existing recipient identifier |
id | string | Alias for _id |
name | string | Updated recipient name |
email | string | Updated recipient email |
phone | string | Updated recipient phone number |
needsCpr | boolean | Enable or disable CPR validation |
cpr | string | New CPR number. It is encrypted before storage |
clearCpr | boolean | Set to true together with an empty cpr value to clear stored CPR data |
signing | boolean | Whether the recipient must sign |
signingSchema | string | Force a recipient-specific signing method |
group | number | Preferred signing order/group |
order | number | Legacy alias for group |
template | string | Recipient-specific template id |
type | string | Delivery type such as email, sms, or eboks |
eboks | object | e-Boks delivery payload. See the e-Boks Object for method, cvr, address, and name |
redirectUrl | string | Redirect URL after signing |
Add Recipient Fields
New recipients appended with recipients use the same structure as Case Create.
Add Document Fields
| Field | Type | Description |
|---|---|---|
name | string | File name including extension |
file | string | Hosted file URL or base64 file data |
fileIsBlob | boolean | Set to true when file contains base64 data |
signObligated | boolean | Whether signing is required for the document |
Example Request
curl --location --request PATCH 'https://www.nextsign.dk/api/v2/{company}/case/{case_id}/update' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
--data-raw '{
"status": "completed",
"completedReason": "Handled manually outside NextSign",
"title": "Lejeaftale - afsluttet",
"referenceId": "Jrn. 2342-23B",
"settings": {
"reminders": {
"send": false
},
"availability": {
"days": 14
}
},
"signingSchemas": [
"urn:grn:authn:dk:mitid:substantial",
"draw"
],
"recipient": {
"_id": "65ab12cd34ef56ab78cd90af",
"email": "kunde@example.com",
"signingSchema": "urn:grn:authn:dk:mitid:substantial"
}
}'Example Response
{
"success": true,
"status": "case_updated",
"errors": [],
"notices": [],
"newDocuments": [],
"case": {
"_id": "657b2ffb0965b111023fb0d1",
"title": "Lejeaftale - afsluttet",
"referenceId": "Jrn. 2342-23B",
"state": "completed",
"signingSchemas": [
"urn:grn:authn:dk:mitid:substantial",
"draw"
],
"settings": {
"deletion": {
"autoDelete": true,
"days": 30
},
"availability": {
"days": 14,
"isExpired": false,
"unlimited": false,
"expiration": "2026-06-24T09:10:14.271Z"
},
"reminders": {
"send": false,
"amount": 2,
"daysBetween": 3
}
},
"updatedAt": "2026-06-10T09:10:14.294Z"
}
}Response Fields
| Field | Type | Description |
|---|---|---|
success | boolean | Indicates whether the update was applied |
status | string | Operation status, typically case_updated |
errors | array | Validation or processing errors |
notices | array | Informational messages |
newDocuments | array | Documents appended during this update request |
case | object | Updated case payload |
case.state | string | Stored lifecycle status of the case |
Common Error Responses
Invalid lifecycle status:
{
"success": false,
"errors": [
{
"message": "Invalid status. Use draft, open, completed, denied, cancelled, pending, or signed."
}
],
"notices": [],
"newDocuments": []
}Blocked after first signature:
{
"success": false,
"errors": [
{
"message": "Cannot add documents after a recipient has signed. Re-send a new contract instead."
}
],
"notices": [],
"newDocuments": []
}Recipient not found:
{
"message": "Recipient not found"
}