Adding a comment to a ticket via the API

Have more questions? Submit a request


  • Michael

    Where can I find examples that show how to do this ... using the ruby client or the REST API straight up?

    Right now I can do something like this to *create a new ticket* with comments using the ruby client:

    ticket = ZendeskAPI::Ticket.import(client, :subject => 'Help me, Spock', :comments => [{ :author_id => xxxxx, :value => 'Comment1' }, { :author_id => xxxxxx, :value => 'Comment2' }])

    But how do I *update* the collection of comments on a ticket using the API for an existing ticket?


    thanks- Michael

  • Jessie - Community Manager

    Hey Michael!

    There are a couple examples in our ticket update API documentation that I think will help you out!

  • Michael

    Thanks Jesse.  I did look at that, and the above import code *does* work for creating a new ticket with a number of comments.  But what does not yet work for me is using the (official) ruby wrapper library to add a new comment to a ticket that has a number of comments already.  Here is what I am doing now, in ruby:

    # get a valid client

    client = do |config| ... end
    ticket = => [my existing ticket id])
    ticket.comments.length # = 10... good, that's what I created
    comment = ticket.comments.las.dup . # create a new one and null id
    comment.body = "11th comment" # or something
    comment.ticked_id = # just in case
    ticket.comments << comment . # add it! # saves ticket, doesn't show comment! # doesn't work either
  • Rebecca
    Hi Michael! Sorry to hear you're having some trouble using the Ruby client. I am going to create a ticket on your behalf to troubleshoot this further. 
  • Michael

    Hey Rebecca - thanks for the reply, but I figured it out... I wish it were better-documented, but it is very simple:  I found the answer in a GitHub issue on the project for the ruby wrapper:

    t =

    t.update(comment: {public: false, body: 'comment 2' })

    This adds a comment to the collection of comments on the ticket.  It's not obvious (to me) that this is what would happen; I was expecting something more like

    t.comments << comment


  • Hbh

    I support Michael's idea. The official ruby client's documentation should be improved or the usage of api should be changed.

  • Mike Martello

    Yes, please update the documentation! I had to dig quite a bit to find this info.

  • Paulo Delgado

    +1 on this.

    Also, is there a way to get the comment id when you create a comment using the method above?

  • Nguyenhoang

    Is there any way that I can detect if there's a new internal note of a Zendesk ticket submitted?

  • Nicole - Community Manager

    Hi Hoang - 

    If an internal note updates a ticket, it will send notifications the same as updating via the interface. 

    In order to receive a notification of an internal note, you would need to be an agent cc'd on the ticket, or if you have a trigger set up to notify you about ticket updates. 

  • Dan Ross

    I too have the same question as Paulo,

    Is there a way to get the comment id when you create a comment so we can send it to an external service?


  • Jessie - Community Manager

    Hey Dan!

    According to our API docs, the comment ID is available via API:

    Will that work?

  • Dan Ross

    Hey Jessie,

    Thanks for the link:)  It could work, but not nearly as well as we'd hoped. We're trying to send the ticket comment ID to an external target for possible action. unfortunately, ticket comment ID only appears to be available via Liquid which to the best of my knowledge, isn't supported in the Notify Target feature.

    To use it via the API, we need to push the ticket ID to the target, have the target be able to come back to Zendesk with that ticket ID and request all the comments. Then we need to sort through them to find the latest comment we need. 

    It adds at least one extra unnecessary API call for each interaction and more complexity to the application.

  • Kaio Cristian

    Hey there.

    Using this question to ask something related to this to see if I can get help here. If not, I can submit a separate question.

    Is there any specific scope I have to specify to generate an OAuth token to be able to access (list) ticket comments?

    I mean, if I use global scopes, like `scope=read write`, I can access the comments without any issues (`/tickets/:id/comments.json`), but If I use `scope=tickets:read tickets:write` or even if I specify read and write to every other scope listed here I am still not able to list ticket comments.

    I tried settings scopes like `comments:read comments:write`, `ticket_comments:read ticket_comments:write`, etc, but they don't seem to exist.

    The response I get when calling the endpoint without global write and read scopes is: `You are missing the following required scopes: read` or something like that.

    Thank you :)

  • Dipesh Dave

    Hey Kaio,

    Just wanted to follow-up again after doing some more research. It appears that you might need a global scope to fine tune the ticket comments.

    Unfortunately ticket comments is not a resource that can be fine-tuned like the other ones. The ones that can be fine tuned are listed here:

    auditlogs (read only)

    Since you were able to access ticket comments with read write access, I would recommend just using that since it works.



Please sign in to leave a comment.

Powered by Zendesk