Forms & Surveys
Survey Responses
The Survey Responses API allows you to retrieve responses submitted to your organisation's surveys and forms. This includes all types of form submissions including surveys, assessments, and progress reports.
List Survey Responses
Retrieve a paginated list of survey responses with optional filtering.
Endpoint
GET /api/v1/survey-responses
Query Parameters
Pagination:
limit(number, default: 100, max: 250) - Maximum number of responses to returnoffset(number, default: 0) - Number of responses to skip for pagination
Filtering:
SurveyId(string) - Filter by form/survey IDfunderSurveyId(string) - Filter by funder survey ID
Response
{
"surveyResponses": [
{
"responseId": "response_abc123",
"surveyId": "form_xyz789",
"funderSurveyId": null,
"managedBy": "org123",
"submittedTo": "org123",
"creator": "user_456",
"date": "2025-01-20T14:30:00.000Z",
"created": "2025-01-20T14:30:00.000Z",
"updated": "2025-01-20T14:35:00.000Z",
"responses": [
{
"questionId": "q_001",
"question": "How would you rate your experience?",
"outcome": "satisfaction",
"type": "select",
"response": "Very satisfied"
},
{
"questionId": "q_002",
"question": "What could we improve?",
"outcome": "feedback",
"type": "textarea",
"response": "The session was excellent. More evening slots would be helpful."
},
{
"questionId": "q_003",
"question": "Would you recommend us to others?",
"outcome": "nps",
"type": "number",
"response": 9
}
],
"linkedEntities": {
"memberIds": ["member_123"],
"partnerIds": [],
"volunteerIds": []
},
"tags": ["feedback", "q1-2025"],
"isPrivate": false,
"surveyScore": 85
}
],
"offset": 0,
"limit": 100,
"total": 342
}
Example Requests
List all survey responses:
curl -X GET "https://app.plinth.org.uk/api/v1/survey-responses" \
-H "x-api-key: sk_your_api_key"
Filter by survey/form ID:
curl -X GET "https://app.plinth.org.uk/api/v1/survey-responses?SurveyId=form_xyz789" \
-H "x-api-key: sk_your_api_key"
Filter by funder survey:
curl -X GET "https://app.plinth.org.uk/api/v1/survey-responses?funderSurveyId=funder_survey_123" \
-H "x-api-key: sk_your_api_key"
Paginate through results:
curl -X GET "https://app.plinth.org.uk/api/v1/survey-responses?limit=50&offset=100" \
-H "x-api-key: sk_your_api_key"
Response Fields
Survey Response Object
| Field | Type | Description |
|---|---|---|
responseId | string | Unique identifier for the response |
surveyId | string | ID of the form/survey this response belongs to |
funderSurveyId | string/null | ID of associated funder survey (if applicable) |
managedBy | string | Organisation ID that manages this response |
submittedTo | string | Organisation ID the response was submitted to |
creator | string | User ID of the person who created the response |
date | string | Response date (ISO 8601) |
created | string | Creation timestamp (ISO 8601) |
updated | string/null | Last update timestamp (ISO 8601) |
responses | array | Array of individual question responses |
linkedEntities | object | Associated members, partners, and volunteers |
tags | array | Tags associated with this response |
isPrivate | boolean | Whether the response is marked as private |
surveyScore | number | Calculated survey score (if applicable) |
Response Item Object
Each item in the responses array contains:
| Field | Type | Description |
|---|---|---|
questionId | string | Unique identifier for the question |
question | string | The question text |
outcome | string | Associated outcome/metric ID |
type | string | Question type (text, textarea, select, number, date, etc.) |
response | any | The submitted response value |
Linked Entities Object
| Field | Type | Description |
|---|---|---|
memberIds | array | IDs of members linked to this response |
partnerIds | array | IDs of partners linked to this response |
volunteerIds | array | IDs of volunteers linked to this response |
Use Cases
Exporting Survey Data
To export all responses for a specific survey:
# Get all responses for a survey, paginating through results
curl -X GET "https://app.plinth.org.uk/api/v1/survey-responses?SurveyId=form_xyz789&limit=250" \
-H "x-api-key: sk_your_api_key"
Linking Responses to Members
Each response includes a linkedEntities object that tells you which members, partners, or volunteers the response is associated with. You can use these IDs to fetch additional information from the respective endpoints.
Error Responses
| Status | Description |
|---|---|
| 400 | Bad Request - Invalid parameters |
| 401 | Unauthorized - Invalid or missing API key |
| 500 | Internal Server Error |
