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}). When X-Storage-Type resolves to envelope-attachment specifically, 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.
uuidHeader Parameters
Caller email, used for identity resolution in authenticated mode.
Indicates which OAuth flow variant issued the Authorization token, in authenticated mode.
Container-type key used to look up the blob. Expected value for this operation is envelope-attachment; envelope-document/envelope-audit are also recognized container types.
Response 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" \ -H "X-Storage-Type: envelope-attachment"{ "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": "https://app.mavenmule.com", "dateTime": "2026-07-14T09:32:15.0000000+00:00", "operationId": "3a4b5c6d7e8f90112233445566778899"}{ "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": "https://app.mavenmule.com", "dateTime": "2026-07-14T09:32:15.0000000+00:00", "operationId": "3a4b5c6d7e8f90112233445566778899"}{ "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": "https://app.mavenmule.com", "dateTime": "2026-07-14T09:32:15.0000000+00:00", "operationId": "3a4b5c6d7e8f90112233445566778899"}{ "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": "https://app.mavenmule.com", "dateTime": "2026-07-14T09:32:15.0000000+00:00", "operationId": "3a4b5c6d7e8f90112233445566778899"}