Confirm an upload and start processing
Hands the uploaded file back to InkSeal. Call this once the PUT to uploadUrl has succeeded.
The object is verified before anything is queued: its size is checked against the 25 MB cap, and its leading bytes are checked against the content type declared at creation. A file that fails either check is deleted from storage and the document is moved to failed.
The document is not usable when this returns. It is left in processing while a background job converts it to the normalized PDF, counts its pages, and renders page previews, and it moves from there to ready or failed. Two ways to learn which:
- Poll GET /documents/{documentId} until status is no longer processing. A few seconds of interval is plenty; conversion is usually quick.
- Subscribe to the document.ready and document.failed webhook events and do nothing until one arrives.
A document already in ready answers 200 with its existing status and re-queues nothing, so a duplicate confirmation is harmless. A failed document stays retryable, which is what makes recovery from a queue outage possible.
The object key comes from the document row, never from the request: the optional objectKey field exists only so older clients keep working and is verified rather than honoured, so a caller can never repoint a document at an object the server did not sign for.
Accepts an Idempotency-Key: a retry with the same key replays the original response instead of re-queuing processing.
Request
- Base URL: https://inkseal.net/api/v1
- URL: https://inkseal.net/api/v1/documents/{documentId}/confirm-upload
- Auth: HTTP bearer
Headers
Makes this mutation retry-safe. 1 to 255 printable ASCII characters (0x20 to 0x7e), trimmed before use. The key is scoped to the workspace and the credential that sent it. Reusing it with a different method, path, or payload answers 422 idempotency_key_reuse. A completed attempt replays its stored status and body with an Idempotent-Replay: true response header; 5xx, 429, and non-JSON answers leave the key retryable. A concurrent request holding the 90 second lease answers 409 idempotency_in_progress. Records are retained 24 hours.
Request body
Example request
{
"objectKey": "w/wk_8f2c/2026-08-21/6f1b8a2c-2f61-4a1e-9d0f-1c0f9f6a4b77.pdf"
}Response
The upload was verified and processing was queued. status is processing, or ready when this document had already finished processing.
Example response
{
"data": {
"documentId": "V1StGXR8_Z5jdHi6B-myT",
"status": "processing"
}
}Changes
No recorded changes to this operation across all 1 revision of this API.