Skip to main content
POST https://api.craftkit.dev/v1/signatures/:id/cancel
Cancels an in-flight request with the signature service and marks it cancelled. Rejected with 409 when the request is already in a terminal state (completed, declined, expired, cancelled, or failed).

Authorization

Authorization
string
required
Bearer ck_live_… — a project API key.

Path parameters

id
string
required
The signature request id (UUID).

Body

The body is optional — an empty body is accepted.
reason
string
Cancellation reason (≤500 chars). Stored on the request as errorMessage.

Response

The updated signature request (same shape as the create response), now with status: "cancelled".
id
string
status
string
cancelled after a successful cancel.
errorMessage
string | null
The supplied reason, if any.
completedAt
string | null

Errors

StatuscodeMeaning
400invalid_jsonBody is not valid JSON.
400invalid_requestBody failed schema validation (issues included).
401unauthorizedMissing/invalid/revoked key.
404not_foundNo such signature request in this key’s project.
409conflictRequest is already terminal and cannot be cancelled.
502signature_provider_errorThe signature service failed to cancel the request.
cURL
curl -X POST https://api.craftkit.dev/v1/signatures/$SIGNATURE_ID/cancel \
  -H "Authorization: Bearer $CRAFTKIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "reason": "Customer changed the terms" }'
200
{
  "id": "0193c2c3-2222-7aaa-8bbb-000000000002",
  "renderId": "0193c2c3-1111-7aaa-8bbb-000000000001",
  "name": "Charter handover — BK-12345",
  "status": "cancelled",
  "recipients": [],
  "expirationHours": 168,
  "signedDownloadUrl": null,
  "certificateUrl": null,
  "errorMessage": "Customer changed the terms",
  "createdAt": "2026-06-05T10:00:00.000Z",
  "completedAt": null
}