Retrieving article attachments in Zoho Desk is done via a single GET request to the Help Center articles attachments endpoint, passing your Help Center ID and Article ID as path parameters.
Why this matters
When you build integrations, custom portals, or automated content pipelines on top of Zoho Desk, you often need to programmatically list or download files attached to knowledge base articles. This endpoint lets your application fetch all attachments for a given article without manual intervention. It is especially useful for syncing Desk content to external systems or auditing article assets at scale.
Step-by-step
Step 1. Identify the two required path parameters before making any call: your helpcenterid (the unique identifier for the Help Center where the article lives) and the articleid (the identifier of the specific article whose attachments you want to retrieve). Both values can be found in the Zoho Desk admin panel or by querying the Help Center articles list endpoint first. [3]
Step 2. Construct the request URL using the following pattern:
GET /api/v1/helpcenter/{helpcenter_id}/articles/{article_id}/attachments
Replace {helpcenterid} and {articleid} with the actual values you collected in Step 1. [3]
Step 3. If you need to paginate through a large set of attachments, include the optional p query parameter to specify the page number. Pass it as a dictionary or query string depending on your HTTP client. [3]
Step 4. Authenticate the request using your Zoho Desk OAuth 2.0 token. Include the token in the Authorization header as a Bearer token. Without valid credentials the API will reject the call.
Step 5. Send the request and parse the JSON response. Each item in the returned collection represents one attachment associated with the article. You can then use the attachment metadata (such as file name, size, or download URL) to drive downstream logic in your integration.
Step 6. If you are working in Python, the call can be wrapped as shown below — note that p is optional and defaults to None when not supplied:
def get_article_attachments(self, helpcenter_id: str, article_id: str, p: dict = None):
"""Get article attachments"""
return self.c.request(
"GET",
f"/api/v1/helpcenter/{helpcenter_id}/articles/{article_id}/attachments",
p,
None
)
This pattern passes the pagination dictionary as query parameters and leaves the request body empty (None). [3]
Common pitfalls
- Wrong IDs in the path. Swapping
helpcenteridandarticleid, or using a ticket ID instead of an article ID, will result in a 404 or empty response. Double-check both values against the Zoho Desk admin UI before calling the endpoint. [3] - Missing pagination handling. If an article has many attachments and you do not iterate through pages using the
pparameter, you may only receive the first page of results and silently miss files. [3] - Attachment sync gaps in integrations. If your workflow also involves Zoho Projects, be aware that attachments added via the attachment icon in Zoho Desk comments are not automatically synced to linked Projects issues — only inline images are. This means files retrieved via the API may not reflect what developers see on the Projects side. [2]
What to check
- Confirm that the
helpcenteridandarticleidin your request URL correspond to the correct Help Center and article in the Zoho Desk admin panel. [3] - Verify that your OAuth token has the necessary Desk scopes to read Help Center content, and that it has not expired before making the call. [3]
- After receiving the response, check whether the total attachment count matches what is visible in the Desk UI — if there is a discrepancy, try incrementing the
pparameter to retrieve additional pages. [3]
---
*Beam Help is an independent expert support resource for Zoho products and is not official Zoho support. For platform-level issues, always confirm behaviour against the latest Zoho Desk API documentation.*