Skip to content

List responses

Returns a page of responses for one survey, with each answer as a question id and a text value.

HTTP request

GET https://www.asqiro.com/api/v1/surveys/{id}/responses

Any API key in the survey's workspace.

Path parameters

ParameterTypeDescription
idstringThe survey id, as returned by the surveys endpoints.Required

Query parameters

ParameterTypeDescription
limitintegerNumber of items per page.Optional · Default: 25 · Maximum: 100
cursorstringOpaque cursor from a previous response's nextCursor.Optional
createdAfterstringOnly return responses created at or after this ISO 8601 timestamp. The bound is inclusive, so a response created exactly at this instant is returned again; deduplicate by id when polling.Optional
statusenumFilter by completion. completed returns finished responses, incomplete returns abandoned ones.Optional · One of: all, completed, incomplete · Default: all
formatenumSet to csv to stream the filtered responses as a CSV file instead of JSON.Optional · One of: csv

Response body

The response is a page envelope. Each item in data carries an answers array; a question the respondent skipped has no entry.

FieldTypeDescription
idstringUnique response id.
surveyIdstringId of the survey this response belongs to.
externalUserIdstring· nullableThe identifier supplied when creating an embed session, or null for a regular respondent link.
completedbooleanWhether the respondent reached the end of the survey.
completedAtstring (ISO 8601)· nullableWhen the response was completed, or null if it never was.
createdAtstring (ISO 8601)When the response was started.
answers[].fieldIdstring· nullableId of the question this answer belongs to, or null if the question no longer exists.
answers[].type"textarea" | "email" | "checkbox" | "number" | "calendar" | "country" | "heatmap" | "scale" | "sort"· nullableType of the question this answer was given to, or null when that question has since been deleted.
answers[].valuestringThe answer exactly as stored. Choice and ranking answers hold a JSON array once they carry more than one entry, so read values instead of parsing this.
answers[].valuesstring[]The answer as a list: one element for an ordinary answer, the selected options for a choice question, and the ranked order for a ranking question. Empty when the question was skipped.
Note Every answer carries the type of its question, so a value can be read without fetching the survey first, and values holds the parsed form: the selected options for a choice question, the ranked order for a ranking one.
Note createdAfter filters on when a response was started, not on when it was completed. A response started before the timestamp and finished after it is not returned again, so a sync that has to catch late completions should overlap its window instead of advancing it to the newest createdAt it saw.
Note Adding format=csv streams the same filtered set as a CSV download instead of JSON, with a text/csv content type. The CSV is not paginated - cursor and limit do not apply to it. The Export responses as CSV guide describes its columns, values, and quoting.

Errors

  • unauthorized · 401 · The API key is missing, malformed, deleted, or its creator lost workspace access. Check the Authorization header, then the key itself.
  • forbidden · 403 · The key is valid but lacks the access this call needs - most often a read-only key attempting a write.
  • not_found · 404 · No survey with that id is reachable by this key. A survey in another workspace answers the same way as one that does not exist.
  • plan_upgrade_required · 403 · The workspace owner's plan does not include API access. Upgrading the plan restores it; retrying will not.
  • rate_limited · 429 · Too many requests. The Retry-After response header carries the number of seconds to wait.
  • service_unavailable · 503 · The request was valid but could not be completed safely right now. No data was returned or changed, so the same request can be retried.

Example request

bash
curl "https://www.asqiro.com/api/v1/surveys/s_7t2qk8wvbf31/responses?status=completed&createdAfter=2026-08-11T00:00:00.000Z&limit=50" \
  -H "Authorization: Bearer $ASQIRO_API_KEY"

Returns 200 on success.

Example response
json
{
  "data": [
    {
      "id": "r_9fk21bqz4m",
      "surveyId": "s_7t2qk8wvbf31",
      "externalUserId": null,
      "completed": true,
      "completedAt": "2026-08-11T15:58:44.019Z",
      "createdAt": "2026-08-11T15:56:12.771Z",
      "answers": [
        { "fieldId": "f_title", "type": "checkbox", "value": "Weekly", "values": ["Weekly"] },
        {
          "fieldId": "f_channels",
          "type": "checkbox",
          "value": "[\"Email\",\"Slack\"]",
          "values": ["Email", "Slack"]
        },
        {
          "fieldId": "f_reason",
          "type": "textarea",
          "value": "It fits our review cycle.",
          "values": ["It fits our review cycle."]
        }
      ]
    }
  ],
  "nextCursor": null
}