Envelope Attachment Download
Downloads an attachment associated with an envelope, returned in its original format as uploaded. Genuinely supports TWO alternate, mutually exclusive auth contracts (intentional dual-mode design, not a bug): (1) anonymous mode — a Guid-parseable tid query parameter is present, and no Authorization header is required at all; the acting identity is resolved via the transaction token instead; or (2) authenticated mode — no valid tid is supplied, so a real Authorization bearer token IS required. Exactly one of {tid, Authorization} applies per call. Blob lookup uses a folder-per-envelope layout ({envelopeId}/{attachmentId}). An additional cross-type check guards against fetching an envelope-document/envelope-audit blob through this route; that extra check is skipped for the other two envelope container types.
JWT token to authenticate the request.
In: header
API key, sent as a request header.
In: header
Path Parameters
GUID of the envelope the attachment belongs to.
uuidGUID of the attachment to download.
uuidQuery Parameters
Transaction token identifying a specific recipient+envelope pair. When present and Guid-parseable, selects anonymous mode and no Authorization header is required. When absent or not Guid-parseable, authenticated mode applies and Authorization is required instead.
uuidResponse Body
application/octet-stream
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/signatures/envelope/3fa85f64-5717-4562-b3fc-2c963f66afa6/attachment/9c858901-8a57-4791-81fe-4c455b099bc9/download"{ "error": { "statusCode": 401, "message": "The request could not be authenticated.", "innerErrors": [ { "code": "UNAUTHORIZED", "message": "The request could not be authenticated.", "userMessage": "Your session has expired or is invalid. Please sign in again." } ] }, "origin": "GET https://api.doctavian.com/v1/signatures/envelope/{envelopeId}/attachment/{attachmentId}/download", "dateTime": "2026-07-14T09:32:15.000Z", "operationId": "3a4b5c6d7e8f90112233445566778899", "userId": "49ee894d-6b53-4497-bae7-8af6df16906e"}{ "error": { "statusCode": 403, "message": "The requested file does not belong to the authenticated user.", "innerErrors": [ { "code": "FILE_ACCESS_DENIED", "message": "The requested file does not belong to the authenticated user.", "userMessage": "You don't have access to this file." } ] }, "origin": "GET https://api.doctavian.com/v1/signatures/envelope/{envelopeId}/attachment/{attachmentId}/download", "dateTime": "2026-07-14T09:32:15.000Z", "operationId": "3a4b5c6d7e8f90112233445566778899", "userId": "a4aa8dc5-23f0-4df1-b3f5-22376e73c4ce"}{ "error": { "statusCode": 404, "message": "No file was found for the supplied id.", "innerErrors": [ { "code": "NOT_FOUND_BY_ID", "message": "No file was found for the supplied id.", "userMessage": "We couldn't find that file. Check the id and try again." } ] }, "origin": "GET https://api.doctavian.com/v1/signatures/envelope/{envelopeId}/attachment/{attachmentId}/download", "dateTime": "2026-07-14T09:32:15.000Z", "operationId": "3a4b5c6d7e8f90112233445566778899", "userId": "c3e5c988-065a-494f-80ff-5142f6bf14f9"}{ "error": { "statusCode": 500, "message": "Failed to read the requested file from storage.", "innerErrors": [ { "code": "FILE_DOWNLOAD_FAILED", "message": "Failed to read the requested file from storage.", "userMessage": "Something went wrong while downloading. Please try again or contact support." } ] }, "origin": "GET https://api.doctavian.com/v1/signatures/envelope/{envelopeId}/attachment/{attachmentId}/download", "dateTime": "2026-07-14T09:32:15.000Z", "operationId": "3a4b5c6d7e8f90112233445566778899", "userId": "2cd04469-bbbf-44bf-85ad-a287d7131a71"}