Ask questions, share tips, and discuss best practices about apps and integrations, App builder, APIs, SDKs, ZAF, and Sunshine
Recently active
Why is there no endpoint to get a comment by its ID like the other resources?i.e. api/v2/comments/{commend_id} is not a valid endpointIf the ID is not global, why can I not at least specify like so:api/v2/tickets/{ticket_id}/comments/{commend_id} or with a parameter?
I am trying to pull which user segment the current logged in end user belongs to. I am currently using the "GET /api/v2/users/me" to retrieve the current users ID and using that ID to try to pull the user segments. (Code below, it's working for admins but not for end users, I also masked the email and tokenID for this forum purposes) $.getJSON('/api/v2/users/me', function(data) { console.log("got data", data); getUserSegment(data.user.id);});function getUserSegment(userID){ // fetch UserSegment API. $.ajax ({ url: '/api/v2/help_center/users/'+userID+'/user_segments.json', headers: { "Authorization": "Basic email-address/token:tokenID" }, beforeSend: function (xhr){xhr.setRequestHeader('Authorization', "Basic "+ btoa("email-address/token:tokenID")); }, secure: true, type: 'GET', contentType: "application/json", dateType: 'json', su
Since deprecation of web widget (classic) and not available for new Zendesk customers like myself, we are not able to simply embed form managed in Zendesk portal into our website pages e.g. contact us or support ticket creation from a web form. We have to custom code our own form, fields and values then submit to Zendesk API. This is doubling up work and slowing down the process of form, field and values changes by non-technical staff and requires developers to update continuously. Is there a method to simply load the form (including fields, values and dependencies) already existing in Zendesk so we're just loading it outside of the Zendesk chat bubble. We just want it as a basic web page form that is dynamically integrated like the old embed web widget (classic) feature.
I'm using AWS Cognito as the OAuth provider for a Zendesk support app. The OAuth flow completes successfully, and the ZIS token is correctly issued. However, after authentication, the browser shows:"OAuth authentication has been completed successfully. You can close the current browser window and continue with the app installation page." At this point, the window doesn't close, and the app setup page doesn't proceed.Inspecting the HTML/JS, I see that window.opener is null, so window.opener.postMessage() fails, and the parent window isn't notified that authentication completed. This issue does not occur with Azure AD, where everything works as expected. It seems specific to AWS Cognito. Has anyone else experienced this behavior? Is there something Cognito is doing (e.g., setting Cross-Origin-Opener-Policy or using a redirect that breaks opener references) that could cause this?Looking for guidance on how to ensure the OAuth window can communicate back to the parent page c
Hi Zendesk team, We’re a Zendesk tech alliance partner working on tools that interact with Help Center articles. With the introduction of article multiplacement (ability to publish the same article in multiple sections), we’ve encountered a technical issue when retrieving article data through the API. Currently, when an article is placed in multiple sections, the API returns separate entries with different artidle IDs for each placement — even though they all point to the same content. As a result, there’s no straightforward way to tell that these are actually the same article. For our use case, this leads to duplicated content in the data layer, making it difficult to manage and accurately report on articles. We’ve searched through the API response but haven’t found any attribute or reference that links these placements together as instances of the same article. Are we missing something? It would be incredibly helpful if there were a way to identify that article ID
Hello,I'm hoping someone can help walk me through if the following scenario for an integration is possible. Essentially, I'm wanting to create an integration (I believe a webhook) with Discord, where if I add the tag “Escalate” and put the ticket on hold, it will get sent to a specific Discord Server and channel and create a Discord Thread with at least the most recent public reply. I want people to be able to discuss freely in the thread, but have the option to post a private note in the Zendesk ticket by using a command, something like "!reply" in Discord. If the above scenario is possible, I would have one other similar scenario I’d like to explore involving the same process but also incorporating a Zendesk custom field to determine which Discord channel to send the ticket info to, instead of a tag.
for a url ${baseUrl}/users/${user.id}.json where baseUrl = ‘https://{subdomain}.zendesk.com/api/v1’I was able to run PUT request on Postman to edit custom field in the data with ease.The authentication method I used was [Basic Auth]username: {email}/tokenpassword: API token I generated And yet, for a bulk update over the json data, (user list) using either of the script I am getting 401 error1. pm.sendRequest({ url: `${baseUrl}/users.json`, method: 'GET', header: { 'Content-Type': 'application/json', 'Authorization': pm.environment.get('auth') }2. ----the rest same---- header: { 'Content-Type': 'application/json', 'Authorization': pm.request.headers.get('Authorization') }Does anyone have advise? Thank you
I hope I chose the correct topic: Regarding creating Tickets from email. I am using two tags in my emails to Zendesk #assignee and #status The #status tag is working well. I read on the support site that the #assignee should assign the ticket to proper owner. (it is always myself and i am listed as a technician) The email is spelled correctly. I would like to figure out why it's not putting me (the sender) as the Assignee.
Hello, we create users through an api call when they sign up for our service, but when a user wants to visit the portal they have to use the “forgot password” to setup a password, I would like to send them a 1 time password to initially log into the portal, then they have to reset their password when they log in, is that possible using the set password api? or does it just allow them to continue to use the password?
Hi! In legacy chat mobile SDKs we had a logic that checks if there is an active chat with the user (in order not to block the app by timeout, what we usually do). We used the below code: chat.providers()?.chatProvider()?.chatState?.isChatting == true How should it look like in Messaging? We can not find relevant documentation
Hello everyone,I'm currently trying to update the user profiles in Zendesk using the Zendesk Messaging Widget authentication and need some assistance.I've created custom fields named "ZipCode" and "BirthDate" in the Zendesk portal. Additionally, I've included these fields in the authentication JWT token. Despite these efforts, the custom fields have not been updated in the Zendesk portal as expected.Could anyone provide guidance or suggest any workarounds to resolve this issue? Your insights would be greatly appreciated. Thank you!
I'm trying to update a custom field value via the API. I'm using a PUT request to /api/v2/tickets/<ticketID>.json I'm getting a validation error as follows:{ "error": "RecordInvalid", "description": "Record validation errors", "details": { "base": [ { "description": "Incident vs. Service Request: needed", "error": null, "ticket_field_id": 21621964218653, "ticket_field_type": "FieldTagger" } ] } } The “Incident vs. Service Request” field is not the field I'm updating. I assume there some is configuration that is making this field required when updating a ticket, although I can't figure out what that config might be? The field has “Required to solve a ticket” enabled, but I'm not trying to solve a ticket, and there are other fields with this setting which don't cause the same problem. Can anyone help me out? Thanks.
I want to send an e-mail to a recipient outside of Zendesk and I want to have the e-mail sent in the background from the main ticket without creating a side ticket. I want to add the tickets attachments to it and to have a specific subject that takes value from the organizational custom fields. I tried with a target and trigger, but I don't see an option to add the attachments. Any suggestions?
Hello Zendesk Support Team,We are currently developing a live chat integration using Zendesk and encountered a limitation related to user identity synchronization between Sunshine Conversations and the Zendesk ticketing system.It appears that Sunshine Conversations (Live Chat) operates on a separate user identity system from Zendesk Support, and we are unable to update the user's name or email via the Sunshine Conversations API. We have not found any official API that allows us to modify these fields directly within the live chat session.As a result, the tickets generated from live chat often display incorrect or placeholder user information in Zendesk Support.We’ve attempted a workaround: after the ticket is created, we use the Zendesk Support API to search for the ticket and then create or update the user with the correct name and email. However, this process is inefficient — it takes at least 30 seconds to complete, which is unacceptable in a real-time support environment.We would l
Hi Zendesk Team,It’s currently not possible to reorder Zendesk views when they’re on different pages. This is a problem for us because new views for Tech Support land at the bottom, and we can’t drag them to the top unless they’re on the same page. Please consider allowing reordering across pages or giving an option to disable pagination when sorting views. Thank you!Sabine
We attempt to enable Zendesk ClickUp sync and hit this road block where we are getting this message: Failed to import packages from Zendesk . We are going through following steps.Step 1: App Center > Zendesk SyncStep 2: Connecting to our Zendesk Account when prompted.Step 3: Failed to import packages from Zendesk Please expedite the resolution process so that we can serve our customers more seamlessly.
Hi team,I followed the all the steps mentioned in the below documentation to generate the API tokenhttps://support.zendesk.com/hc/en-us/articles/4408889192858-Managing-API-token-access-to-the-Zendesk-API However, when I call the endpoint belowcurl --location 'https://{subDomian}.zendesk.com/wfm/public/api/v1/activities?startTime=1722105600' \--header 'Authorization: Basic XXXXX' \--header 'Content-Type: application/json' \--header 'Accept: application/json'I receive a 403 error with the message "JWT not found."Could you please help us understand the reason for this error and how to resolve it?
Hi all,I’m running into some odd behavior with the Zendesk Incremental Export API for ticket_metric_events, and I’m hoping to get some insight or confirmation from others or the Zendesk team.Scenario: I’m using the endpoint:GET /api/v2/incremental/ticket_metric_events.json?start_time=... When I set start_time=1735689600 (which is 1 June 2025), I get: ~3MB of data Pagination cursor (end_of_stream = false) However, when I use an older start_time=1646873940 (which is 10 March 2022), I get: Only ~192KB of data end_of_stream = true in the very first response This is confusing because: I would expect the API to return all ticket metric events from 10 March 2022 up to now, including all events in 2025 But that doesn’t seem to happen — I’m only getting a small chunk and no continuation According to the docs, the API should return everything with updated_at >= start_time What I've checked: The newer data does exist — it shows up fine when I start from 2025 directly I’ve reviewed the d
Hi folks, Almost every organisation attaches a standard footer to every outgoing email, that talks about having been scanned for viruses, being intended for a certain recipient, etc. I have categories like “email” and “virus” for tickets about those topics. The trouble is that the auto-tag system doesn't realise these footer/signatures are irrelevant to the actual email content. As such, almost every ticket we have come in gets tagged with email and virus, regardless of what the user is enquring about. As a result, our tags are pretty much useless. I'm sure I'm not the only one afflicted by this problem. Does anyone have any ideas on how get the auto tag to ignore email footers/sigs? Helpdesk claims that “[ignoring footers/sigs] is not natively available in Zendesk” but it can be done via the API and suggested I post here.
Some of our apps only use only read triggers:write webhooks:write scopes, and do not have the full write scope. But, without write we can't do any POST requests, including the one that is required to obtain the refresh token. Is there a way to avoid having `write` scope? Or anything else I'm doing wrong?
As the title says, we want go somehow trigger an event outside of Zendesk using a Macro, or some other automation. We are hoping to set up a system where when we set up this Macro, it then creates a connection to our software's API Is there some sort of tie in from Zendesk to external APIs triggered by a Macro or other trigger?
Hi we’ve encountered a limitation in the Zendesk Help Center Search API (/api/v2/help_center/articles/search.json) that impacts our user experience and custom search implementation.Currently, the API only supports full word search, which means a query like:query=maquininha correctly returns an article titled “How to use the maquininha”.(Note: “maquininha” is a Portuguese term commonly used for card reader devices.)But when using a partial word like:query=maqui the same article is not returned, even though maqui is a clear prefix of maquininha.This behavior differs from the Help Center’s Instant Search, which does support partial word matching and would return relevant results for maqui. Why this mattersOur users often type incomplete or partial terms, and we are building a custom frontend where we rely on the API to return meaningful results. The lack of prefix-based search in the API means we either: Miss potential matches and frustrate users, or Need to build a separate workarou
Hello, We're using Zendesk's ZAF client extensively in our application, and our clients have recently started reporting that their ticket forms aren't being updated. Upon further investigation, we found out that the client.invoke('macro', 123) method stopped updating the ticket form, despite having such a rule in its actions. However, when I try to apply the same macro via the ‘native’ Zendesk ‘Apply macro’ UI, the ticket form is updated correctly, along with other fields. The documentation for this action says:Invoking a macro will have the same effect as if the user were to select the macro via the UI.And it worked like this for years, but suddenly stopped, and we haven't updated our app for a while. So I assume this is the issue on Zendesk API's side.
I am looking for export the agent time-in-status data from a Zendesk API - at first I was directed to the Incremental Exports API, then it was confirmed that the time-in-status historical data does not actually exist for export and is only available in the Explore view. When can we expect an API to extract this data?
I am struggling to find a way how I could upload attachments to a ticket securely with my app.I can't upload an attachment with ZAFClient.Request() because it does not support the header Content-Type to be set as "application/binary", and therefore corrupts the uploads.So, my only option is to use for example the javascript function fetch to call Zendesk api where I can set the required headers. But because this is not the ZAF client, I need to add a header for authorization.There is no function to get an authorization header from the ZAFClient, and using Secure settings will not work because the code block where I need to set the authorization header is not in a ZAFClient.Request().My only option is to set the authorization header as plain text in the code itself. This is extremely bad and makes me nervous. Is there something obvious that I am missing, or is this really the only way to make this work?Here is my current working (but insecure) way of doing this:  
Already have an account? Login
No account yet? Create an account
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.