Question
Can I attach files, such as photos, to a ticket using the Zendesk API?
Answer
Yes. When a file is attached to a ticket, and if the account requires authentication to download attachments, the attachment's visibility becomes restricted to only users with access to the ticket. Until the attachment is associated with a ticket, any authenticated user can view an attachment using its content_URL
. The attachment's token expires after three days.
Note: If step 2 below is not completed, the uploaded files will be deleted and will appear missing (returning a
404 not found
error) when the upload token expires.Procedure:
- Use our Uploading files API, which returns a token.
- Include the token in a ticket comment by the
uploads
array while creating or updating a ticket.
Example:
{ "ticket": { "comment": { "body": "See screenshot.", "uploads": ["vz7ll9ud8oofowy"] } } }
For more information, see our Developer Documentation.
16 Comments
Hi, is it possible to attache a file from external resource, smth like Google Cloud Bucket, or Azure Blob Storage? Since, I do not have the file on the server I am not able to upload it.
Hi Віктор Борисюк,
Thanks for reaching out!
Unfortunately it's not possible to attach files to a ticket comment directly from an external source. The file must be uploaded via the Attachment API which requires the actual file, which then creates a token that is used to attach the file to the ticket.
An alternative option could be uploading the file as an inline attachment using markdown, depending on the file type.
Feel free to reach out if you have any questions!
Tipene
Tipene Hughes I'm trying to do this exact thing. We have Power Apps forms that create SharePoint lists, in which we then use the Zendesk API to create the ticket in Zendesk. I'm wondering about the best approach to get the attachment into the ticket, or at the very least, a link to the attachment?
I've found this article online, but am having a hard time understanding the 'Attachment' section:
https://4sysops.com/archives/using-the-zendesk-api-with-microsoft-power-automate/
Thanks in advance,
Chris
Hey Chris,
I'm not super familiar with Microsoft Power Apps but from the looks of it, the article is outlining how to utilize the Attachments API along with the Tickets API within the Power Apps UI.
When uploading an image to create a token using the Attachments API, the file must first be converted to binary which appears to be something that can be handled within Power Apps. Once the token has been generated, it's then passed in to the payload sent to the Tickets API to create or update a ticket which again looks like it can be handled within the Power Apps UI.
Sorry I can't give you any specifics on the functionality of Power Apps but by the looks of it, the article is outlining the correct workflow as written in the documentation I linked above.
Hello Tipene Hughes, sorry for hijacking this thread, but I am currently stuck and I desperately need some help.
I am currently developing an app that has 2 fields, a file upload field that allows multiple files and a text area.
Here is the current status of the app:
The next goal is for all the files to be attached to the ticket. I am using this as my reference and on the examples, only 1 file is attached to the ticket comment.
Can you help to confirm if it is possible to attach multiple files/images to 1 ticket comment? If yes, can you point me in the right direction?
Thank you,
Benessa
Hey, Benessa Dumol!
Can you confirm if you're passing in the token as a query parameter to the endpoint URL when uploading more than one attachment? This is referenced in the documentation here.
HI Tipene Hughes, thank you for responding to my comment.
Currently, I am looping through all the files that were uploaded to get all the tokens.
I am using this endpoint /api/v2/uploads.json?filename=attachment.jpg to get the upload token. Below is my for loop code to get all the tokens.
I am also using the endpoint /api/v2/tickets/ to create the ticket comment. Below is my code to create the ticket comment.
Thank you,
Hi Benessa Dumol,
You only need to generate one token which you'll then use to make subsequent requests to the uploads API endpoint to add additional attachments.
After making the first request to the uploads endpoint, you will need to add the token to the end of the URL for subsequent uploads e.g:
"https://{subdomain}.zendesk.com/api/v2/uploads?filename=user_crash.log&token={optional_token}"
Then, using just the single token, you'll make the call to the tickets API which will upload all attachments that have been associated with the token.
I hope this helps! Feel free to reach out with any questions.
Tipene
Hi Tipene Hughes,
It seems that I am not passing the correct data on the /api/v2/uploads.json?filename=attachment.jpg API endpoint. Currently, I am passing the filename and when it was uploaded and attached to the ticket I am getting the error Error loading image when I tried opening the attached file.

I also tried passing Binary and Base64 data but I am getting the error
May I ask what is the correct data format that I need to pass on the data parameter?
Appreciate your response.
Thank you,
Benessa
Hi Benessa,
Can you try changing the ContentType header value on the settings object of the /api/v2/uploads.json call to "image/jpg". Also, be sure to correctly match the filename extension in the URL query parameter with the filename extension of the actual file being uploaded.
Let me know if that helps!
Tipene
Hi Tipene Hughes,
Thanks for the suggestion. I changed it to image/jpg and made sure that the filename extension in the URL query parameter and the filename extension of the actual file being uploaded is the same but I am still getting the same error.
I tried uploading Binary and Base64 data of the images uploaded for contentType: "application/binary" and jpg images for "image/jpg" but still no luck.
I hope you still have some suggestions that I can try. Appreciate your response.
Thank you,
Benessa
I've done some more digging and it unfortunately appears that you cannot upload attachments using the
client.request
method - you'll need to make the request via the Fetch API or something similar. Here's a working example of how that might look:Let me know if this helps and if you have any questions, feel free to reach out!
Tipene
Hi Tipene Hughes, thank you for the patience and for looking deeper into this question.
Can you confirm if the working example that you provided can be used on multiple images?
I am currently using a file upload field that allows multiple files to be uploaded.
Appreciate your response.
Thank you,
Benessa
You'll need to update the code slightly to fit your use case, but yes, in general it should work as intended using the Fetch API or something similar.
Thanks!
Tipene
Hello Tipene Hughes
Happy to inform you that I was able to make my code work.
Thank you for your help.
~ Benessa
Why isn't this supported in the ZAF Client? Yes, you can use the fetch api but then you need the authorization header in plaintext code... Stupid security risk.
Please sign in to leave a comment.