# upload_inbox_attachment Behavior, inputs, outputs and permissions for upload_inbox_attachment. Source: https://docs.getridian.com/developers/tools/upload_inbox_attachment/ Language: en Reviewed: 2026-10-06 This reference is generated from the published tool contract. ## Behavior and boundaries Reserves storage and returns a one-use binary upload ticket for an existing draft and expectedRevision. Up to 10 attachments and 15000000 raw bytes total per message. Send the raw file body with HTTP POST to url using Authorization: Bearer ; never pass Base64 through tool arguments. The ticket expires after at most five minutes (expiresAt is Unix milliseconds). Completion verifies actual size/type and current access, attaches the file and increments draft revision. Upload one file at a time and read the draft before another edit or send. After an uncertain response, list attachments and read the draft; do not blindly reserve again. An unfinished or failed upload blocks sending until removed. Requires a client capable of binary HTTP transfer; this tool alone does not transfer bytes or prove client support. Does not send mail. ## Permissions Granted scopes, accounts, calendars and visibility rules limit access. Workspace administrators do not automatically gain access to other users’ accounts. `inbox:write` [Consent and boundaries](https://docs.getridian.com/developers/authentication/) ## Input ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "draftId": { "type": "string", "minLength": 1, "maxLength": 200 }, "expectedRevision": { "type": "integer", "minimum": 1, "maximum": 9007199254740991 }, "filename": { "type": "string", "minLength": 1, "maxLength": 200 }, "contentType": { "type": "string", "minLength": 3, "maxLength": 150 }, "size": { "type": "integer", "minimum": 0, "maximum": 15000000 } }, "required": [ "draftId", "expectedRevision", "filename", "contentType", "size" ], "additionalProperties": false } ``` ## Output ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "attachmentId": { "type": "string", "minLength": 1, "maxLength": 200 }, "url": { "type": "string", "format": "uri" }, "token": { "type": "string" }, "expiresAt": { "type": "number" }, "method": { "type": "string", "enum": [ "POST", "GET" ] } }, "required": [ "attachmentId", "url", "token", "expiresAt", "method" ], "additionalProperties": false } ``` ## Errors and retries Check the tool result for errors. Do not blindly retry writes after a timeout. Check the current resource or send status first. [Error handling](https://docs.getridian.com/developers/errors/)