Skip to main content

Mark a document as signed

Mark a document as signed when a physical or out-of-band signature has been obtained. You can mark the entire document as complete, or mark an individual recipient as complete if others are still signing. You can upload a signed PDF at the same time.

Prerequisites​

  • Your document ID (base64-encoded) — if you have a REST UUID prefix it with doc and base64-encode the result (e.g. doc + <your-document-uuid> → base64). See Understand Web IDs and API IDs for details.

Option A: Mark as signed without a PDF upload​

Call markAsComplete with isUploaded: false. The declarationText field is required — use it to record the reason the document is being marked complete (e.g. "Verbal confirmation received", "Wet signature obtained"). It can be left as an empty string, but a meaningful value is useful for audit purposes.

mutation MarkAsComplete {
markAsComplete(input: {
documentId: "<document-id>"
declarationText: "Verbal confirmation received"
isUploaded: false
})
}

Option B: Mark as signed with a PDF upload​

Step 1: Get a pre-signed upload URL​

Call the upload query with uploadType: MARKASCOMPLETE to get a short-lived S3 URL.

query GetUploadUrl {
upload(
id: "<document-id>"
uploadType: MARKASCOMPLETE
extension: "pdf"
) {
url
}
}

Response:

{
"data": {
"upload": {
"url": "https://lon-files-clearing.s3-accelerate.amazonaws.com/upload/..."
}
}
}

Step 2: PUT the file to S3​

Upload the signed PDF directly to the returned URL using an HTTP PUT request with Content-Type: application/pdf. The URL is short-lived — use it immediately. See Upload files for more detail on the PUT step.

curl -X PUT \
-H "Content-Type: application/pdf" \
--data-binary @signed-copy.pdf \
"<url from previous step>"

Step 3: Mark the document as complete​

Call markAsComplete with isUploaded: true. The declarationText field behaves the same as Option A.

mutation MarkAsComplete {
markAsComplete(input: {
documentId: "<document-id>"
declarationText: "Signed copy received by post"
isUploaded: true
})
}

Mark a single recipient as signed​

Use markRecipientAsComplete when one party has signed out-of-band but others have not.

If you want to upload a signed PDF for the recipient, first get a pre-signed URL using uploadType: MARKRECIPIENTASCOMPLETE:

query GetUploadUrl {
upload(
id: "<recipient-id>"
uploadType: MARKRECIPIENTASCOMPLETE
extension: "pdf"
) {
url
}
}

Then PUT the file to the returned URL — see Upload files.

Key fields:

  • suppressNextRecipientNotification — set to true to prevent the next recipient in the signing order from being notified immediately.
  • auditlogText — optional. Leave it empty if not needed, but a meaningful value is useful for audit purposes.

Then call markRecipientAsComplete:

mutation MarkRecipientAsComplete {
markRecipientAsComplete(input: {
recipientId: "<recipient-id>"
documentOptions: NONE
suppressNextRecipientNotification: false
auditlogText: "Signed copy received by post"
}) {
id
uploadId
}
}

Archive the document (optional)​

Once marked as complete, you can archive the document to remove it from the active documents view.

mutation ArchiveDocument {
archiveDocument(input: {
documentId: "<document-id>"
restore: false
})
}

Set restore: true to unarchive.