Retrieving transition attachments in Zoho Desk requires a straightforward GET request against the Desk REST API, supplying both the ticket identifier and the transition identifier to fetch all files attached to a transition draft.
Why this matters
When a Zoho Desk ticket moves through a blueprint or workflow, agents can attach supporting documents directly to a transition draft. If you need to audit those files, display them in a custom portal, or process them programmatically, you must know how to query the correct endpoint. This is also a prerequisite step before deciding whether to delete a specific attachment from a transition draft.
Step-by-step
Step 1. Confirm you have a valid OAuth access token scoped to Zoho Desk. Your token must be obtained through the standard Zoho OAuth flow — exchanging an authorisation code for an access token — before any API call will succeed. [8]
Step 2. Identify the two key identifiers you will need: the ticketId of the ticket in question and the transitionId of the specific blueprint transition whose attachments you want to retrieve. Both values are strings and must be supplied in the URL path. [1]
Step 3. Send a GET request to the following endpoint, substituting your real values for the placeholders:
GET /api/v1/tickets/{ticketId}/transitions/{transitionId}/attachments
This operation is documented internally as op15getattachmentof_transition and is described as "Get Attachment of Transition Draft." [1]
Step 4. Optionally, pass a p parameter as a query-string dictionary if you need to apply pagination or filtering options supported by the endpoint. When no extra parameters are needed, this argument can be omitted or set to None. [1]
Step 5. In Python, the call pattern looks like this:
result = client.op_15_get_attachment_of_transition(
ticketId="123456",
transitionId="789012",
p=None # or pass a dict of query params
)
The underlying request is a plain HTTP GET with no request body. [1]
Step 6. Parse the response to obtain the list of attachment objects associated with that transition draft. Each object will contain the metadata needed to identify individual attachments — you will need the attachmentId value from this response if you later intend to remove a specific file. [4]
Common pitfalls
- Wrong identifier order. The path requires
ticketIdfirst, thentransitionId. Swapping them will result in a 404 or an unexpected empty response. Double-check the order against the endpoint signature. [1] - Expired or missing OAuth token. All Zoho Desk API calls require a current access token. If your token has expired, refresh it before retrying — an expired token will return an authentication error rather than attachment data. [8]
- Confusing "get" with "delete." The retrieval endpoint (
GET …/attachments) and the deletion endpoint (DELETE …/attachments/{attachmentId}) share the same base path but differ in HTTP method and the presence ofattachmentId. Using the wrong method will either do nothing or permanently remove a file. [4]
What to check
- Verify both IDs are correct — confirm the
ticketIdandtransitionIdexist in your Zoho Desk organisation before making the call, as an invalid ID will return an error rather than an empty list. [1] - Confirm the response contains attachment metadata — if the transition draft has no files attached, the response array will be empty; this is expected behaviour, not an error. [1]
- Note any
attachmentIdvalues — if follow-up actions such as deletion are needed, capture those IDs from this response now, since the delete operation requires them explicitly. [4]
---
*Beam Help is an independent expert support resource for Zoho products and is not official Zoho support. Always test API calls in a sandbox environment before running them against production data.*