Surveys
Read-only access to survey templates and the answers collected across their spawns. Mirrors the data available in the CMS Excel export.
A template defines the survey (questions, schedule, anonymity); each time it runs it produces a spawn (one occurrence, with its own answers). Pass the template id to /surveys/{template_id}/answers to retrieve answers from every spawn of that template in one feed — each row carries its spawn's id and starts_at so you can group client-side.
Required scope: read:surveys
Endpoints
/api/open/v1/surveysList survey templates (paginated)
/api/open/v1/surveys/{id}Get a single survey template
/api/open/v1/surveys/{template_id}/answersList answers across every spawn of a template (paginated)
/api/open/v1/surveys/{template_id}/answers/{id}Get a single answer
List templates
Returns survey templates only (not spawn instances).
curl "https://customer.monotree.com/api/open/v1/surveys?category=satisfaction" \
-H "Authorization: Bearer mono_your_token_here"| Query param | Notes |
|---|---|
category | default, satisfaction, assessment, or development. |
since | ISO 8601 — filter by updated_at. |
page, per_page | Standard pagination — see Pagination. |
List answers for a template
Returns all answers across every spawn of the template, ordered by created_at descending. Each answer embeds its spawn (id + starts_at), question, and choice so the row is self-describing — no separate question lookup required.
curl "https://customer.monotree.com/api/open/v1/surveys/42/answers?since=2026-04-01&per_page=100" \
-H "Authorization: Bearer mono_your_token_here"| Query param | Notes |
|---|---|
since | ISO 8601 — only answers created at or after this time. |
until | ISO 8601 — only answers created at or before this time. |
spawn_starts_at | YYYY-MM-DD — restrict to a single spawn date. |
page, per_page | per_page max 100 (raised from the usual 50 because export consumers pull bulk). |
Answer response
{
"data": {
"id": 9001,
"template_id": 42,
"spawn": { "id": 1378, "starts_at": "2026-04-01" },
"question": {
"id": 17,
"title": "Engagement",
"body": "How was your week?",
"type": "rating",
"position": 1
},
"choice": { "id": 88, "body": "Great", "value": 100 },
"body": null,
"reason": "lots of customers this week",
"is_skipped": false,
"is_anonymous": false,
"respondent": {
"id": 501,
"name": "Jane Doe",
"email": "jane@example.com",
"type": "user",
"avatar_url": "https://images.monotree.com/avatars/jane-doe.jpg",
"groups": [
{ "id": 12, "name": "Kitchen", "type": "department", "created_at": "2025-09-01T10:00:00+00:00" }
],
"hired_at": "2025-09-01",
"is_away": false,
"last_active_on": "2026-04-28",
"registered_at": "2025-11-01T09:00:00+00:00",
"created_at": "2025-11-01T09:00:00+00:00"
},
"department": { "id": 12, "name": "Kitchen", "type": "department", "created_at": "2025-09-01T10:00:00+00:00" },
"created_at": "2026-04-01T11:14:33+00:00",
"updated_at": "2026-04-01T11:14:33+00:00"
}
}respondent uses the same Open API user object served by /users; department uses the group object.