Survey Responses
Stream all survey responses for a specific questionnaire in JSON form—perfect for dashboards or ETL jobs that previously relied on emailed CSV exports.
Endpoint
- GET:
/api/v2/organizations/:organization_id/surveys/:id/export
Optional Query Parameters
| Name | Type | Default | Description |
|---|---|---|---|
reporting_days | String | all | Same presets as the Meeting Attendance endpoint (today, current_month, last_week, last_month, custom, etc.). |
start_time | String | — | Required when reporting_days=custom. Format: MM/DD/YYYY HH:MM AM/PM. |
end_time | String | — | Required when reporting_days=custom. Same format as start_time. |
page | Integer | 1 | Page number for paginating survey responses (1-indexed). |
per_page | Integer | 25 | Responses per page (clamped to Pagy max, default 25). |
Response Example
{
"success": true,
"survey": {
"id": 42,
"name": "Monthly Satisfaction",
"questions": [
{
"id": 503,
"position": 1,
"content": "I feel welcome at the group",
"question_type": "likert_scale"
},
{
"id": 504,
"position": 2,
"content": "Please share a little more information",
"question_type": "short_answer"
}
]
},
"metadata": {
"total_responses": 57,
"page": 1,
"per_page": 25,
"total_pages": 3,
"filters": {
"reporting_days": "custom",
"start_time": "03/01/2025 12:00 AM",
"end_time": "03/31/2025 11:59 PM"
}
},
"responses": [
{
"survey_id": 42,
"survey_name": "Monthly Satisfaction",
"meeting_id": 9001,
"meeting_user_id": 372,
"idp_id": "sso-user-42", // added when SSO is enabled for an organization
"meeting_name": "Anxiety Support Group",
"meeting_start_time": "2025-03-05T14:00:00-05:00",
"survey_type": "post",
"response_id": 123456,
"response_date": "2025-03-06T09:45:00-05:00",
"answers": [
{ "question": "How was the meeting?", "answer": "Great!" },
{ "question": "Would you recommend us?", "answer": "Yes" }
]
}
]
}Error Responses
404 Not Found– survey does not belong to the authenticated organization.500 Internal Server Error– unexpected runtime issue (response:{ "error": "Unable to generate survey export" }).
Notes
- Timestamps use the organization’s preferred timezone and are returned in ISO 8601.
- Empty answers are omitted so consumers only see meaningful data.
- The JSON payload is produced by
Reports::SurveyResponses, ensuring parity with CSV exports.
Last updated on