API reference
Surveys
2 operations. Base URL: https://api.ringura.com/api/v1. Authenticate with a bearer token that carries the scope named on each operation.
GET /api/v1/surveys
CSAT and NPS surveys, newest first.
Parameters
| Name | In | Type | Required | Constraints |
|---|---|---|---|---|
limit | query | integer | No | 1 to 200 |
cursor | query | string | No | at most 400 characters |
status | query | string | No | one of "sent", "answered", "expired", "failed" |
Response
200 JSON with these fields.
| Field | Type | Required | Constraints |
|---|---|---|---|
data | array of object | Yes | |
data[].id | string (uuid) | Yes | |
data[].conversationId | string (uuid) | Yes | |
data[].contactId | string (uuid) | Yes | |
data[].agentId | string (uuid) or null | Yes | |
data[].queueId | string (uuid) or null | Yes | |
data[].channel | string | Yes | |
data[].kind | string | Yes | one of "csat", "nps" |
data[].scale | object | Yes | |
data[].scale.min | integer | Yes | |
data[].scale.max | integer | Yes | |
data[].status | string | Yes | |
data[].failure | string or null | Yes | |
data[].sentAt | string (date-time) | Yes | |
data[].expiresAt | string (date-time) | Yes | |
data[].respondedAt | string (date-time) or null | Yes | |
data[].score | integer or null | Yes | |
data[].comment | string or null | Yes | |
data[].via | string or null | Yes | |
data[].followUpConversationId | string (uuid) or null | Yes | |
nextCursor | string or null | Yes |
Errors
400, 401, 403, 404, 409, 429. What each status means
Example request
curl -X GET 'https://api.ringura.com/api/v1/surveys' \
-H "Authorization: Bearer $CC_TOKEN"
POST /api/v1/surveys/{id}/responses
Record an answer collected elsewhere: the post-call IVR's digit, or your own form.
Parameters
| Name | In | Type | Required | Constraints |
|---|---|---|---|---|
id | path | string (uuid) | Yes | |
Idempotency-Key | header | string | No | matches ^[A-Za-z0-9_.:-]{8,100}$ |
Request body
JSON (Content-Type: application/json).
| Field | Type | Required | Constraints |
|---|---|---|---|
score | integer | Yes | 0 to 10 |
comment | string | No | at most 2000 characters |
via | string | Yes | one of "ivr", "api" |
Response
201 JSON with these fields.
| Field | Type | Required | Constraints |
|---|---|---|---|
id | string (uuid) | Yes | |
conversationId | string (uuid) | Yes | |
contactId | string (uuid) | Yes | |
agentId | string (uuid) or null | Yes | |
queueId | string (uuid) or null | Yes | |
channel | string | Yes | |
kind | string | Yes | one of "csat", "nps" |
scale | object | Yes | |
scale.min | integer | Yes | |
scale.max | integer | Yes | |
status | string | Yes | |
failure | string or null | Yes | |
sentAt | string (date-time) | Yes | |
expiresAt | string (date-time) | Yes | |
respondedAt | string (date-time) or null | Yes | |
score | integer or null | Yes | |
comment | string or null | Yes | |
via | string or null | Yes | |
followUpConversationId | string (uuid) or null | Yes |
Errors
400, 401, 403, 404, 409, 422, 429. What each status means
Example request
curl -X POST 'https://api.ringura.com/api/v1/surveys/0192f5a0-7c1e-7d3a-9b2e-3f4a5b6c7d8e/responses' \
-H "Authorization: Bearer $CC_TOKEN" \
-H 'Idempotency-Key: order-2027-0001' \
-H 'Content-Type: application/json' \
-d '{
"score": 0,
"via": "ivr"
}'