Ticket Activities
The Ticket Activities API returns ticket activities by other people affecting the agent making the API request. Ticket activities include assigning a ticket to the agent, increasing the priority of a ticket assigned to the agent, or adding a comment to a ticket assigned to the agent. A possible use case for the API is building a personalized notification service for agents.
JSON format
Ticket Activities are represented as JSON objects with the following properties:
| Name | Type | Read-only | Mandatory | Description |
|---|---|---|---|---|
| actor | object | true | false | The full user record of the user responsible for the ticket activity. See Users |
| actor_id | integer | true | false | The id of the user responsible for the ticket activity. An actor_id of "-1" is a Zendesk system user, such as an automations action. |
| created_at | string | true | false | When the record was created |
| id | integer | true | false | Automatically assigned on creation |
| object | object | true | false | The content of the activity. Can be a ticket, comment, or change. |
| target | object | true | false | The target of the activity, a ticket. |
| title | string | true | false | Description of the activity |
| updated_at | string | true | false | When the record was last updated |
| url | string | true | false | The API url of the activity |
| user | object | true | false | The full user record of the agent making the request. See Users |
| user_id | integer | true | false | The id of the agent making the request |
| verb | string | true | false | The type of activity. Can be "tickets.assignment", "tickets.comment", or "tickets.priority_increase" |
Example
{"actor": {"id": 8678530,"name": "James A. Rosen"},"actor_id": 23546,"created_at": "2019-03-05T10:38:52Z","id": 35,"object": {},"target": {},"title": "John Hopeful assigned ticket #123 to you","updated_at": "2019-03-05T10:38:52Z","url": "https://company.zendesk.com/api/v2/activities/35.json","user": {"id": 223443,"name": "Johnny Agent"},"user_id": 29451,"verb": "tickets.assignment"}
List Activities
GET /api/v2/activities
Lists ticket activities in the last 30 days affecting the agent making the request. Also sideloads the following arrays of user records:
- actors - All actors involved in the listed activities
- users - All users involved in the listed activities
Pagination
- Cursor pagination (recommended)
- Offset pagination
See Pagination.
Returns a maximum of 100 records per page.
Allowed For
- Agents
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
| since | string | Query | false | A UTC time in ISO 8601 format to return ticket activities since said date. |
Code Samples
curl
curl https://{subdomain}.zendesk.com/api/v2/activities.json \-v -u {email_address}/token:{api_token}
Go
import ("fmt""io""net/http")func main() {url := "https://example.zendesk.com/api/v2/activities?since=2013-04-03T16%3A02%3A46Z"method := "GET"req, err := http.NewRequest(method, url, nil)if err != nil {fmt.Println(err)return}req.Header.Add("Content-Type", "application/json")req.Header.Add("Authorization", "Basic <auth-value>") // Base64 encoded "{email_address}/token:{api_token}"client := &http.Client {}res, err := client.Do(req)if err != nil {fmt.Println(err)return}defer res.Body.Close()body, err := io.ReadAll(res.Body)if err != nil {fmt.Println(err)return}fmt.Println(string(body))}
Java
import com.squareup.okhttp.*;OkHttpClient client = new OkHttpClient();HttpUrl.Builder urlBuilder = HttpUrl.parse("https://example.zendesk.com/api/v2/activities").newBuilder().addQueryParameter("since", "2013-04-03T16:02:46Z");String userCredentials = "your_email_address" + "/token:" + "your_api_token";String basicAuth = "Basic " + java.util.Base64.getEncoder().encodeToString(userCredentials.getBytes());Request request = new Request.Builder().url(urlBuilder.build()).method("GET", null).addHeader("Content-Type", "application/json").addHeader("Authorization", basicAuth).build();Response response = client.newCall(request).execute();
Nodejs
var axios = require('axios');var config = {method: 'GET',url: 'https://example.zendesk.com/api/v2/activities',headers: {'Content-Type': 'application/json','Authorization': 'Basic <auth-value>', // Base64 encoded "{email_address}/token:{api_token}"},params: {'since': '2013-04-03T16%3A02%3A46Z',},};axios(config).then(function (response) {console.log(JSON.stringify(response.data));}).catch(function (error) {console.log(error);});
Python
import requestsfrom requests.auth import HTTPBasicAuthurl = "https://example.zendesk.com/api/v2/activities?since=2013-04-03T16%3A02%3A46Z"headers = {"Content-Type": "application/json",}email_address = 'your_email_address'api_token = 'your_api_token'# Use basic authenticationauth = HTTPBasicAuth(f'{email_address}/token', api_token)response = requests.request("GET",url,auth=auth,headers=headers)print(response.text)
Ruby
require "net/http"require "base64"uri = URI("https://example.zendesk.com/api/v2/activities")uri.query = URI.encode_www_form("since": "2013-04-03T16:02:46Z")request = Net::HTTP::Get.new(uri, "Content-Type": "application/json")email = "your_email_address"api_token = "your_api_token"credentials = "#{email}/token:#{api_token}"encoded_credentials = Base64.strict_encode64(credentials)request["Authorization"] = "Basic #{encoded_credentials}"response = Net::HTTP.start uri.hostname, uri.port, use_ssl: true do |http|http.request(request)end
Example response(s)
200 OK
// Status 200 OK{"activities": [{"actor": {"active": true,"alias": "","created_at": "2020-11-17T00:32:12Z","custom_role_id": null,"default_group_id": 1873,"details": "","email": "[email protected]","external_id": null,"iana_time_zone": "America/Juneau","id": 158488612,"last_login_at": "2020-11-17T00:33:44Z","locale": "en-gb","locale_id": 5,"moderator": true,"name": "Tedd","notes": "","only_private_comments": false,"organization_id": null,"phone": null,"photo": null,"report_csv": true,"restricted_agent": false,"role": "admin","role_type": null,"shared": false,"shared_agent": false,"shared_phone_number": null,"signature": "","suspended": false,"tags": [],"ticket_restriction": null,"time_zone": "Alaska","two_factor_auth_enabled": null,"updated_at": "2020-11-17T00:34:38Z","url": "https://example.zendesk.com/api/v2/users/158488612.json","user_fields": {"its_remember_september": null,"skittles": null,"user_field_1": null},"verified": true},"actor_id": 158488612,"created_at": "2020-11-17T00:34:40Z","id": 29183462,"object": {"ticket": {"id": 1521,"subject": "test"}},"target": {"ticket": {"id": 1521,"subject": "test"}},"title": "Tedd assigned ticket #1521 to you.","updated_at": "2020-11-17T00:34:40Z","url": "https://example.zendesk.com/api/v2/activities/29183462.json","user": {"active": true,"alias": "test","created_at": "2017-08-14T20:13:53Z","custom_role_id": null,"default_group_id": 1873,"details": "","email": "[email protected]","external_id": "oev7jj","iana_time_zone": "Pacific/Pago_Pago","id": 3343,"last_login_at": "2020-11-16T22:57:45Z","locale": "en-gb","locale_id": 5,"moderator": true,"name": "Samwise Gamgee","notes": "test","only_private_comments": false,"organization_id": 1873,"phone": null,"photo": {"content_type": "image/gif","content_url": "https://example.zendesk.com/system/photos/8730791/1f84950b8d7949b3.gif","deleted": false,"file_name": "1f84950b8d7949b3.gif","height": 80,"id": 8730791,"inline": false,"mapped_content_url": "https://example.zendesk.com/system/photos/8730791/1f84950b8d7949b3.gif","size": 4566,"thumbnails": [{"content_type": "image/gif","content_url": "https://example.zendesk.com/system/photos/8730801/1f84950b8d7949b3_thumb.gif","deleted": false,"file_name": "1f84950b8d7949b3_thumb.gif","height": 32,"id": 8730801,"inline": false,"mapped_content_url": "https://example.zendesk.com/system/photos/8730801/1f84950b8d7949b3_thumb.gif","size": 1517,"url": "https://example.zendesk.com/api/v2/attachments/8730801.json","width": 32}],"url": "https://example.zendesk.com/api/v2/attachments/8730791.json","width": 80},"report_csv": true,"restricted_agent": false,"role": "admin","role_type": null,"shared": false,"shared_agent": false,"shared_phone_number": null,"signature": "test","suspended": false,"tags": ["101"],"ticket_restriction": null,"time_zone": "American Samoa","two_factor_auth_enabled": null,"updated_at": "2020-11-17T00:33:55Z","url": "https://example.zendesk.com/api/v2/users/3343.json","user_fields": {"its_remember_september": null,"skittles": "2018-09-14T00:00:00+00:00","user_field_1": "101"},"verified": true},"user_id": 3343,"verb": "tickets.assignment"}],"actors": [{"active": true,"alias": "","created_at": "2020-11-17T00:32:12Z","custom_role_id": null,"default_group_id": 1873,"details": "","email": "[email protected]","external_id": null,"iana_time_zone": "America/Juneau","id": 158488612,"last_login_at": "2020-11-17T00:33:44Z","locale": "en-gb","locale_id": 5,"moderator": true,"name": "Tedd","notes": "","only_private_comments": false,"organization_id": null,"phone": null,"photo": null,"report_csv": true,"restricted_agent": false,"role": "admin","role_type": null,"shared": false,"shared_agent": false,"shared_phone_number": null,"signature": "","suspended": false,"tags": [],"ticket_restriction": null,"time_zone": "Alaska","two_factor_auth_enabled": null,"updated_at": "2020-11-17T00:34:38Z","url": "https://example.zendesk.com/api/v2/users/158488612.json","user_fields": {"its_remember_september": null,"skittles": null,"user_field_1": null},"verified": true}],"count": 1,"next_page": null,"previous_page": null,"users": [{"active": true,"alias": "test","created_at": "2017-08-14T20:13:53Z","custom_role_id": null,"default_group_id": 1873,"details": "","email": "[email protected]","external_id": "oev7jj","iana_time_zone": "Pacific/Pago_Pago","id": 3343,"last_login_at": "2020-11-16T22:57:45Z","locale": "en-gb","locale_id": 5,"moderator": true,"name": "Samwise Gamgee","notes": "test","only_private_comments": false,"organization_id": 1873,"phone": null,"photo": {"content_type": "image/gif","content_url": "https://example.zendesk.com/system/photos/8730791/1f84950b8d7949b3.gif","deleted": false,"file_name": "1f84950b8d7949b3.gif","height": 80,"id": 8730791,"inline": false,"mapped_content_url": "https://example.zendesk.com/system/photos/8730791/1f84950b8d7949b3.gif","size": 4566,"thumbnails": [{"content_type": "image/gif","content_url": "https://example.zendesk.com/system/photos/8730801/1f84950b8d7949b3_thumb.gif","deleted": false,"file_name": "1f84950b8d7949b3_thumb.gif","height": 32,"id": 8730801,"inline": false,"mapped_content_url": "https://example.zendesk.com/system/photos/8730801/1f84950b8d7949b3_thumb.gif","size": 1517,"url": "https://example.zendesk.com/api/v2/attachments/8730801.json","width": 32}],"url": "https://example.zendesk.com/api/v2/attachments/8730791.json","width": 80},"report_csv": true,"restricted_agent": false,"role": "admin","role_type": null,"shared": false,"shared_agent": false,"shared_phone_number": null,"signature": "test","suspended": false,"tags": ["101"],"ticket_restriction": null,"time_zone": "American Samoa","two_factor_auth_enabled": null,"updated_at": "2020-11-17T00:33:55Z","url": "https://example.zendesk.com/api/v2/users/3343.json","user_fields": {"its_remember_september": null,"skittles": "2018-09-14T00:00:00+00:00","user_field_1": "101"},"verified": true}]}
Count Activities
GET /api/v2/activities/countGET /api/v2/activities/count
Returns an approximate count of ticket activities in the last 30 days affecting the agent making the request. If the count exceeds 100,000, the count will return a cached result. This cached result will update every 24 hours.
The count[refreshed_at] property is a timestamp that indicates when the count was last updated.
Note: When the count exceeds 100,000, count[refreshed_at] may occasionally be null.
This indicates that the count is being updated in the background, and count[value] is limited to 100,000 until the update is complete.
Allowed For
- Agents
Code Samples
curl
curl https://{subdomain}.zendesk.com/api/v2/activities/count.json \-v -u {email_address}/token:{api_token}
Go
import ("fmt""io""net/http")func main() {url := "https://example.zendesk.com/api/v2/activities/count"method := "GET"req, err := http.NewRequest(method, url, nil)if err != nil {fmt.Println(err)return}req.Header.Add("Content-Type", "application/json")req.Header.Add("Authorization", "Basic <auth-value>") // Base64 encoded "{email_address}/token:{api_token}"client := &http.Client {}res, err := client.Do(req)if err != nil {fmt.Println(err)return}defer res.Body.Close()body, err := io.ReadAll(res.Body)if err != nil {fmt.Println(err)return}fmt.Println(string(body))}
Java
import com.squareup.okhttp.*;OkHttpClient client = new OkHttpClient();HttpUrl.Builder urlBuilder = HttpUrl.parse("https://example.zendesk.com/api/v2/activities/count").newBuilder();String userCredentials = "your_email_address" + "/token:" + "your_api_token";String basicAuth = "Basic " + java.util.Base64.getEncoder().encodeToString(userCredentials.getBytes());Request request = new Request.Builder().url(urlBuilder.build()).method("GET", null).addHeader("Content-Type", "application/json").addHeader("Authorization", basicAuth).build();Response response = client.newCall(request).execute();
Nodejs
var axios = require('axios');var config = {method: 'GET',url: 'https://example.zendesk.com/api/v2/activities/count',headers: {'Content-Type': 'application/json','Authorization': 'Basic <auth-value>', // Base64 encoded "{email_address}/token:{api_token}"},};axios(config).then(function (response) {console.log(JSON.stringify(response.data));}).catch(function (error) {console.log(error);});
Python
import requestsfrom requests.auth import HTTPBasicAuthurl = "https://example.zendesk.com/api/v2/activities/count"headers = {"Content-Type": "application/json",}email_address = 'your_email_address'api_token = 'your_api_token'# Use basic authenticationauth = HTTPBasicAuth(f'{email_address}/token', api_token)response = requests.request("GET",url,auth=auth,headers=headers)print(response.text)
Ruby
require "net/http"require "base64"uri = URI("https://example.zendesk.com/api/v2/activities/count")request = Net::HTTP::Get.new(uri, "Content-Type": "application/json")email = "your_email_address"api_token = "your_api_token"credentials = "#{email}/token:#{api_token}"encoded_credentials = Base64.strict_encode64(credentials)request["Authorization"] = "Basic #{encoded_credentials}"response = Net::HTTP.start uri.hostname, uri.port, use_ssl: true do |http|http.request(request)end
Example response(s)
200 OK
// Status 200 OK{"count": {"refreshed_at": "2020-04-06T02:18:17Z","value": 102}}
Show Activity
GET /api/v2/activities/{activity_id}
Lists a specific activity.
Allowed For
- Agents
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
| activity_id | integer | Path | true | The activity ID |
Code Samples
curl
curl https://{subdomain}.zendesk.com/api/v2/activities/{activity_id}.json \-v -u {email_address}/token:{api_token}
Go
import ("fmt""io""net/http")func main() {url := "https://example.zendesk.com/api/v2/activities/29183462"method := "GET"req, err := http.NewRequest(method, url, nil)if err != nil {fmt.Println(err)return}req.Header.Add("Content-Type", "application/json")req.Header.Add("Authorization", "Basic <auth-value>") // Base64 encoded "{email_address}/token:{api_token}"client := &http.Client {}res, err := client.Do(req)if err != nil {fmt.Println(err)return}defer res.Body.Close()body, err := io.ReadAll(res.Body)if err != nil {fmt.Println(err)return}fmt.Println(string(body))}
Java
import com.squareup.okhttp.*;OkHttpClient client = new OkHttpClient();HttpUrl.Builder urlBuilder = HttpUrl.parse("https://example.zendesk.com/api/v2/activities/29183462").newBuilder();String userCredentials = "your_email_address" + "/token:" + "your_api_token";String basicAuth = "Basic " + java.util.Base64.getEncoder().encodeToString(userCredentials.getBytes());Request request = new Request.Builder().url(urlBuilder.build()).method("GET", null).addHeader("Content-Type", "application/json").addHeader("Authorization", basicAuth).build();Response response = client.newCall(request).execute();
Nodejs
var axios = require('axios');var config = {method: 'GET',url: 'https://example.zendesk.com/api/v2/activities/29183462',headers: {'Content-Type': 'application/json','Authorization': 'Basic <auth-value>', // Base64 encoded "{email_address}/token:{api_token}"},};axios(config).then(function (response) {console.log(JSON.stringify(response.data));}).catch(function (error) {console.log(error);});
Python
import requestsfrom requests.auth import HTTPBasicAuthurl = "https://example.zendesk.com/api/v2/activities/29183462"headers = {"Content-Type": "application/json",}email_address = 'your_email_address'api_token = 'your_api_token'# Use basic authenticationauth = HTTPBasicAuth(f'{email_address}/token', api_token)response = requests.request("GET",url,auth=auth,headers=headers)print(response.text)
Ruby
require "net/http"require "base64"uri = URI("https://example.zendesk.com/api/v2/activities/29183462")request = Net::HTTP::Get.new(uri, "Content-Type": "application/json")email = "your_email_address"api_token = "your_api_token"credentials = "#{email}/token:#{api_token}"encoded_credentials = Base64.strict_encode64(credentials)request["Authorization"] = "Basic #{encoded_credentials}"response = Net::HTTP.start uri.hostname, uri.port, use_ssl: true do |http|http.request(request)end
Example response(s)
200 OK
// Status 200 OK{"activity": {"actor": {"active": true,"alias": "","created_at": "2020-11-17T00:32:12Z","custom_role_id": null,"default_group_id": 1873,"details": "","email": "[email protected]","external_id": null,"iana_time_zone": "America/Juneau","id": 158488612,"last_login_at": "2020-11-17T00:33:44Z","locale": "en-gb","locale_id": 5,"moderator": true,"name": "Tedd","notes": "","only_private_comments": false,"organization_id": null,"phone": null,"photo": null,"report_csv": true,"restricted_agent": false,"role": "admin","role_type": null,"shared": false,"shared_agent": false,"shared_phone_number": null,"signature": "","suspended": false,"tags": [],"ticket_restriction": null,"time_zone": "Alaska","two_factor_auth_enabled": null,"updated_at": "2020-11-17T00:34:38Z","url": "https://example.zendesk.com/api/v2/users/158488612.json","user_fields": {"its_remember_september": null,"skittles": null,"user_field_1": null},"verified": true},"actor_id": 158488612,"created_at": "2020-11-17T00:34:40Z","id": 29183462,"object": {"ticket": {"id": 1521,"subject": "test"}},"target": {"ticket": {"id": 1521,"subject": "test"}},"title": "Tedd assigned ticket #1521 to you.","updated_at": "2020-11-17T00:34:40Z","url": "https://example.zendesk.com/api/v2/activities/29183462.json","user": {"active": true,"alias": "test","created_at": "2017-08-14T20:13:53Z","custom_role_id": null,"default_group_id": 1873,"details": "","email": "[email protected]","external_id": "oev7jj","iana_time_zone": "Pacific/Pago_Pago","id": 3343,"last_login_at": "2020-11-16T22:57:45Z","locale": "en-gb","locale_id": 5,"moderator": true,"name": "Samwise Gamgee","notes": "test","only_private_comments": false,"organization_id": 1873,"phone": null,"photo": {"content_type": "image/gif","content_url": "https://example.zendesk.com/system/photos/8730791/1f84950b8d7949b3.gif","deleted": false,"file_name": "1f84950b8d7949b3.gif","height": 80,"id": 8730791,"inline": false,"mapped_content_url": "https://example.zendesk.com/system/photos/8730791/1f84950b8d7949b3.gif","size": 4566,"thumbnails": [{"content_type": "image/gif","content_url": "https://example.zendesk.com/system/photos/8730801/1f84950b8d7949b3_thumb.gif","deleted": false,"file_name": "1f84950b8d7949b3_thumb.gif","height": 32,"id": 8730801,"inline": false,"mapped_content_url": "https://example.zendesk.com/system/photos/8730801/1f84950b8d7949b3_thumb.gif","size": 1517,"url": "https://example.zendesk.com/api/v2/attachments/8730801.json","width": 32}],"url": "https://example.zendesk.com/api/v2/attachments/8730791.json","width": 80},"report_csv": true,"restricted_agent": false,"role": "admin","role_type": null,"shared": false,"shared_agent": false,"shared_phone_number": null,"signature": "test","suspended": false,"tags": ["101"],"ticket_restriction": null,"time_zone": "American Samoa","two_factor_auth_enabled": null,"updated_at": "2020-11-17T00:33:55Z","url": "https://example.zendesk.com/api/v2/users/3343.json","user_fields": {"its_remember_september": null,"skittles": "2018-09-14T00:00:00+00:00","user_field_1": "101"},"verified": true},"user_id": 3343,"verb": "tickets.assignment"}}