curl --request GET \
--url https://app.usertick.com/api/public/v1/responses/recent \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.usertick.com/api/public/v1/responses/recent', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.usertick.com/api/public/v1/responses/recent"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": "9b1c2d3e-4f50-4a61-8b72-93a4b5c6d7e8",
"url": "https://app.usertick.com/inbox/9b1c2d3e-4f50-4a61-8b72-93a4b5c6d7e8",
"survey": {
"id": "11111111-1111-4111-8111-111111111111",
"name": "Checkout feedback"
},
"site": {
"id": "22222222-2222-4222-8222-222222222222",
"domain": "shop.example.com"
},
"createdAt": "2026-09-30T10:00:00.123Z",
"updatedAt": "2026-09-30T12:31:05.120Z",
"source": "widget",
"language": "en",
"country": "US",
"pageUrl": "https://shop.example.com/checkout",
"device": {
"type": "desktop",
"browser": "Chrome",
"os": "macOS"
},
"variant": null,
"variantName": null,
"contact": {
"id": "77777777-7777-4777-8777-777777777777",
"email": "[email protected]"
},
"respondent": {
"userId": "user_8271",
"anonymousId": "5f0c7a2b-8d4e-4c1a-9e3f-2b6d8a0c4e1f",
"verified": true,
"email": "[email protected]",
"emailSource": "identify",
"name": "Maya Chen",
"company": "Example Inc.",
"traits": {
"company": "Example Inc.",
"plan": "pro"
},
"traitsVerified": false,
"contactQuestion": null,
"contact": {
"id": "77777777-7777-4777-8777-777777777777"
}
},
"answers": [
{
"questionId": "q_nps",
"question": "How likely are you to recommend us?",
"type": "nps",
"value": 4,
"text": "4"
},
{
"questionId": "q_comment",
"question": "What went wrong?",
"type": "text",
"value": "Checkout rejects my card every time",
"text": "Checkout rejects my card every time"
}
],
"answerText": {
"q_nps": "4",
"q_comment": "Checkout rejects my card every time"
},
"attachments": [],
"status": "in_progress",
"assignees": [
{
"id": "66666666-6666-4666-8666-666666666666",
"name": "Ana Ruiz",
"email": "[email protected]"
}
],
"ai": {
"type": "bug",
"urgency": "high",
"theme": {
"id": "44444444-4444-4444-8444-444444444444",
"name": "Checkout errors"
},
"category": {
"id": "55555555-5555-4555-8555-555555555555",
"name": "Payments"
},
"sentiment": "negative",
"analyzedAt": "2026-09-30T10:00:07.250Z",
"corrected": false
},
"commentsCount": 2
}
],
"nextCursor": "<string>"
}List recent responses
The newest responses in the shape a webhook of the same event carries in data (a trigger’s sample). response.created describes each response without its analysis; response.analyzed returns only analyzed ones and response.urgent only those whose urgency reads high, filtered the way a subscription is; response.status_changed returns the newest status changes (a response that changed twice is listed twice), each with its change. response.classification_corrected and theme.spiking have no list (400 APK-006-012). One page; limit 1 to 100, default 3. A sample, not a full list: it looks through the newest 1,000 responses (or status changes) in the plan’s window and stops there, so a filter that matches only older ones answers fewer than limit. GET /responses lists every response.
Scopes: responses:read.
curl --request GET \
--url https://app.usertick.com/api/public/v1/responses/recent \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.usertick.com/api/public/v1/responses/recent', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.usertick.com/api/public/v1/responses/recent"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": "9b1c2d3e-4f50-4a61-8b72-93a4b5c6d7e8",
"url": "https://app.usertick.com/inbox/9b1c2d3e-4f50-4a61-8b72-93a4b5c6d7e8",
"survey": {
"id": "11111111-1111-4111-8111-111111111111",
"name": "Checkout feedback"
},
"site": {
"id": "22222222-2222-4222-8222-222222222222",
"domain": "shop.example.com"
},
"createdAt": "2026-09-30T10:00:00.123Z",
"updatedAt": "2026-09-30T12:31:05.120Z",
"source": "widget",
"language": "en",
"country": "US",
"pageUrl": "https://shop.example.com/checkout",
"device": {
"type": "desktop",
"browser": "Chrome",
"os": "macOS"
},
"variant": null,
"variantName": null,
"contact": {
"id": "77777777-7777-4777-8777-777777777777",
"email": "[email protected]"
},
"respondent": {
"userId": "user_8271",
"anonymousId": "5f0c7a2b-8d4e-4c1a-9e3f-2b6d8a0c4e1f",
"verified": true,
"email": "[email protected]",
"emailSource": "identify",
"name": "Maya Chen",
"company": "Example Inc.",
"traits": {
"company": "Example Inc.",
"plan": "pro"
},
"traitsVerified": false,
"contactQuestion": null,
"contact": {
"id": "77777777-7777-4777-8777-777777777777"
}
},
"answers": [
{
"questionId": "q_nps",
"question": "How likely are you to recommend us?",
"type": "nps",
"value": 4,
"text": "4"
},
{
"questionId": "q_comment",
"question": "What went wrong?",
"type": "text",
"value": "Checkout rejects my card every time",
"text": "Checkout rejects my card every time"
}
],
"answerText": {
"q_nps": "4",
"q_comment": "Checkout rejects my card every time"
},
"attachments": [],
"status": "in_progress",
"assignees": [
{
"id": "66666666-6666-4666-8666-666666666666",
"name": "Ana Ruiz",
"email": "[email protected]"
}
],
"ai": {
"type": "bug",
"urgency": "high",
"theme": {
"id": "44444444-4444-4444-8444-444444444444",
"name": "Checkout errors"
},
"category": {
"id": "55555555-5555-4555-8555-555555555555",
"name": "Payments"
},
"sentiment": "negative",
"analyzedAt": "2026-09-30T10:00:07.250Z",
"corrected": false
},
"commentsCount": 2
}
],
"nextCursor": "<string>"
}Authorizations
An API key (utk_live_...) or an app's OAuth access token (uto_...).
Query Parameters
response.created (default), response.analyzed, response.status_changed or response.urgent.
response.created, response.analyzed, response.status_changed, response.urgent One survey.
Feedback types (repeat, or comma separated); not with response.created.
bug, idea, complaint, question, praise Urgency bands; response.analyzed and response.status_changed.
high, medium, low Theme ids (GET /themes); not with response.created.
1 to 100, default 3.
1 <= x <= 100