Beam Help
Get help now

How-to · Zoho DESK

How to delete transition attachments in Zoho Desk

Remove specific attachments from ticket transitions programmatically.

Deleting a transition attachment in Zoho Desk requires a targeted API call that references the ticket, the specific transition draft, and the attachment you want to remove — three IDs working together.


Why this matters


When agents work through blueprint transitions in Zoho Desk, they can attach files to a transition draft before submitting it. If an incorrect or outdated file is attached, you need a clean way to remove it programmatically without affecting the ticket's other attachments or threads. This is especially relevant for teams automating support workflows via the Zoho Desk REST API.


> Note: Beam Help is independent expert support for Zoho — we are not official Zoho support.


---


Step-by-step


Step 1. Gather the three required identifiers before making any API call: the ticketId of the ticket undergoing the transition, the transitionId of the active blueprint transition draft, and the attachmentId of the specific file you want to delete. [1]


Step 2. If you are unsure of the attachmentId, first retrieve the list of attachments on the transition draft by sending a GET request to /api/v1/tickets/{ticketId}/transitions/{transitionId}/attachments. The response will include the IDs of all files currently attached to that draft. [7]


Step 3. Once you have all three IDs, send a DELETE request to the following endpoint:


DELETE /api/v1/tickets/{ticketId}/transitions/{transitionId}/attachments/{attachmentId}

Replace {ticketId}, {transitionId}, and {attachmentId} with the actual values you collected in the previous steps. [1]


Step 4. If you are working in Python, the call maps to the op16deleteattachmentof_transition operation. A minimal implementation looks like this: [1]


def op_16_delete_attachment_of_transition(self, ticketId: str, transitionId: str, attachmentId: str, p: dict = None):
    return self.c.request(
        "DELETE",
        f"/api/v1/tickets/{ticketId}/transitions/{transitionId}/attachments/{attachmentId}",
        p,
        None
    )

Pass your credential/session context through self.c, and supply the three string IDs as arguments. [1]


Step 5. Confirm the deletion by re-running the GET request from Step 2. If the attachment list no longer contains the target attachmentId, the operation was successful. [7]


---


Common pitfalls


  • Wrong endpoint for the wrong attachment type. Zoho Desk exposes several distinct attachment-deletion endpoints. Use /api/v1/tickets/{ticketId}/transitions/{transitionId}/attachments/{attachmentId} specifically for transition draft attachments. [1] Do *not* confuse this with the general ticket attachment endpoint (/api/v1/tickets/{ticketId}/attachments/{attachmentId}) [6], the thread-level attachment endpoint (/api/v1/tickets/{ticketid}/threads/{threadid}/attachments/{attachment_id}) [2], or the task attachment endpoint (/api/v1/tasks/{taskId}/attachments/{attachmentId}). [5] Each targets a different resource.

  • Stale or invalid transitionId. Blueprint transitions are draft objects tied to a specific workflow state. If the transition has already been submitted or cancelled, the transitionId may no longer be valid, and the delete call will fail. Always verify the transition is still in a draft state before attempting deletion. [1]

  • Missing attachmentId. Attempting the DELETE without first confirming the attachmentId via the GET endpoint is a common source of 404 errors. Use the list endpoint to confirm the file exists on the transition before deleting it. [7]

---


What to check


  • All three IDs are correct and current — confirm ticketId, transitionId, and attachmentId are valid and that the transition draft is still open before issuing the DELETE. [1]
  • The correct endpoint is targeted — verify you are calling the transitions-specific path, not a ticket-level or thread-level attachment route. [1][2][6]
  • Deletion is confirmed — re-run the GET on /api/v1/tickets/{ticketId}/transitions/{transitionId}/attachments and check that the removed file no longer appears in the response. [7]

Sources cited

  1. [1] DELETE /api/v1/tickets/{ticketId}/transitions/{transitionId}/attachments/{attachmentId}
  2. [2] DELETE /api/v1/tickets/{ticket_id}/threads/{thread_id}/attachments/{attachment_id}
  3. [3] DELETE /api/v1/tickets/{ticket_id}/attachments/{attachment_id}
  4. [4] DELETE /api/v1/products/{productId}/attachments/{attachmentId}
  5. [5] DELETE /api/v1/tasks/{taskId}/attachments/{attachmentId}
  6. [6] DELETE /api/v1/tickets/{ticketId}/attachments/{attachmentId}
  7. [7] GET /api/v1/tickets/{ticketId}/transitions/{transitionId}/attachments
  8. [8] DELETE /api/v1/accounts/{accountId}/attachments/{attachmentId}
Delete Transition Attachment | Beam Help — Beam Help