Skip to main content

Survey Results

Retrieve and analyze survey responses.

Get Survey Responses

Retrieve individual survey responses for a campaign.

warning

The campaign must be of type Survey. If the specified campaign is not a Survey campaign, the API returns a 400 Bad Request error.

GET /api/v1/survey-results

Query Parameters

ParameterTypeRequiredDescription
campaignIdUUIDYesCampaign ID
phoneNumberstringNoFilter by phone number
externalUserIdstringNoFilter by external user ID (e.g., order ID)
startDatedatetimeNoFilter from date
endDatedatetimeNoFilter to date
selectedOptionIndexintegerNoFilter by selected option
pageintegerNoPage number (default: 1)
pageSizeintegerNoItems per page (default: 20, max: 100)

Response

{
"results": [
{
"id": "880e8400-e29b-41d4-a716-446655440003",
"campaignId": "660e8400-e29b-41d4-a716-446655440001",
"phoneNumber": "38970123456",
"externalUserId": "order_12345",
"selectedOptionText": "Very Satisfied",
"selectedOptionIndex": 0,
"trackingData": null,
"respondedAt": "2024-01-15T14:30:00Z"
},
{
"id": "880e8400-e29b-41d4-a716-446655440004",
"campaignId": "660e8400-e29b-41d4-a716-446655440001",
"phoneNumber": "38970654321",
"externalUserId": "order_12346",
"selectedOptionText": "Satisfied",
"selectedOptionIndex": 1,
"trackingData": null,
"respondedAt": "2024-01-15T14:35:00Z"
}
],
"totalCount": 85,
"page": 1,
"pageSize": 20,
"totalPages": 5
}

Response Fields

FieldTypeDescription
idUUIDSurvey response ID
campaignIdUUIDCampaign ID
phoneNumberstringRespondent's phone
externalUserIdstringExternal user ID from the original message (e.g., order ID)
selectedOptionTextstringText of selected option
selectedOptionIndexintegerIndex of selected option (0-based)
trackingDatastringOptional tracking data
respondedAtdatetimeWhen response was submitted

Example

# Get all responses for a campaign
curl -X GET "https://api.transformify.mk/api/v1/survey-results?campaignId=660e8400-e29b-41d4-a716-446655440001" \
-H "X-API-Key: your-api-key"

# Filter by external user ID (e.g., order ID)
curl -X GET "https://api.transformify.mk/api/v1/survey-results?campaignId=660e8400-e29b-41d4-a716-446655440001&externalUserId=order_12345" \
-H "X-API-Key: your-api-key"

# Filter by date range
curl -X GET "https://api.transformify.mk/api/v1/survey-results?campaignId=660e8400-e29b-41d4-a716-446655440001&startDate=2024-01-01&endDate=2024-01-31" \
-H "X-API-Key: your-api-key"

# Filter by option index (matches optionValue from template creation)
curl -X GET "https://api.transformify.mk/api/v1/survey-results?campaignId=660e8400-e29b-41d4-a716-446655440001&selectedOptionIndex=3" \
-H "X-API-Key: your-api-key"

Get Survey Summary

Get aggregated statistics for a survey campaign.

GET /api/v1/survey-results/{campaignId}/summary

Path Parameters

ParameterTypeDescription
campaignIdUUIDCampaign ID

Response

{
"campaignId": "660e8400-e29b-41d4-a716-446655440001",
"campaignName": "Customer Satisfaction Survey - Q1 2024",
"totalResponses": 850,
"totalMessagesSent": 1000,
"responseRate": 85.0,
"optionBreakdown": [
{
"optionIndex": 0,
"optionText": "Very Satisfied",
"count": 450,
"percentage": 52.94
},
{
"optionIndex": 1,
"optionText": "Satisfied",
"count": 280,
"percentage": 32.94
},
{
"optionIndex": 2,
"optionText": "Neutral",
"count": 70,
"percentage": 8.24
},
{
"optionIndex": 3,
"optionText": "Dissatisfied",
"count": 35,
"percentage": 4.12
},
{
"optionIndex": 4,
"optionText": "Very Dissatisfied",
"count": 15,
"percentage": 1.76
}
]
}

Response Fields

FieldTypeDescription
campaignIdUUIDCampaign ID
campaignNamestringCampaign name
totalResponsesintegerNumber of responses received
totalMessagesSentintegerNumber of surveys sent
responseRatedecimalResponse rate percentage
optionBreakdownarrayBreakdown by option
optionBreakdown[].optionIndexintegerOption index (0-based)
optionBreakdown[].optionTextstringOption text
optionBreakdown[].countintegerNumber of responses
optionBreakdown[].percentagedecimalPercentage of total

Example

curl -X GET "https://api.transformify.mk/api/v1/survey-results/660e8400-e29b-41d4-a716-446655440001/summary" \
-H "X-API-Key: your-api-key"

Errors

StatusErrorDescription
400Bad RequestcampaignId required, or campaign is not a Survey type
401UnauthorizedInvalid API key
404Not FoundCampaign not found