provider surveys GET /api/projects/{project_id}/surveys/{id}/responses/
@utdk/posthog /api/projects/{project_id}/surveys/{id}/responses/
surveys_responses_list
List survey responses for a specific survey, with question text resolved server-side so callers do not have to map opaque `$survey_response_<id>` keys. Each row carries `distinct_id`, `session_id`, `submitted_at`, and an `extra` block (device, browser, OS, geoip, current_url, iteration) so agents can cross-pivot to recordings, persons, or paths in a single follow-up call. For person properties at event time, follow up with `persons-get` using the returned `distinct_id` — keeps scopes scoped. Use `question_id` + `score_lte` to fetch NPS detractors and similar score-filtered cohorts.
exclude_archived query
When true, exclude responses that have been archived via the archive_response endpoint.
boolean
id path required
A UUID string identifying this survey.
string
limit query
Maximum number of rows to return (1-500). Defaults to 100.
integer
offset query
Number of rows to skip for pagination. Combine with `limit` and the `has_more` field to paginate.
integer
project_id path required
Project ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/.
string
question_id query
If set, only return rows where this question has a non-empty answer, and only include that question's answer in each row. Required when using score_lte or score_gte.
string
score_gte query
Filter to rows where the rating answer for `question_id` is >= this value. Common use: NPS promoters with score_gte=9. Requires question_id.
number
score_lte query
Filter to rows where the rating answer for `question_id` is <= this value. Common use: NPS detractors with score_lte=6. Requires question_id.
number
since query
Only return responses submitted on or after this ISO 8601 timestamp.
string
until query
Only return responses submitted on or before this ISO 8601 timestamp.
string

Try it

Authentication
Configure credentials for PostHog API
surveysResponsesList
GET/api/projects/{project_id}/surveys/{id}/responses/
List survey responses for a specific survey, with question text resolved server-side so callers do not have to map opaque `$survey_response_<id>` keys. Each row carries `distinct_id`, `session_id`, `submitted_at`, and an `extra` block (device, browser, OS, geoip, current_url, iteration) so agents can cross-pivot to recordings, persons, or paths in a single follow-up call. For person properties at event time, follow up with `persons-get` using the returned `distinct_id` — keeps scopes scoped. Use `question_id` + `score_lte` to fetch NPS detractors and similar score-filtered cohorts.

Parameters

required

A UUID string identifying this survey.

required

Project ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/.

When true, exclude responses that have been archived via the archive_response endpoint.

Maximum number of rows to return (1-500). Defaults to 100.

Number of rows to skip for pagination. Combine with `limit` and the `has_more` field to paginate.

If set, only return rows where this question has a non-empty answer, and only include that question's answer in each row. Required when using score_lte or score_gte.

Filter to rows where the rating answer for `question_id` is >= this value. Common use: NPS promoters with score_gte=9. Requires question_id.

Filter to rows where the rating answer for `question_id` is <= this value. Common use: NPS detractors with score_lte=6. Requires question_id.

Only return responses submitted on or after this ISO 8601 timestamp.

Only return responses submitted on or before this ISO 8601 timestamp.

Configure credentials above to enable sending.

Code snippet
Updates live as you fill in the form above.

TypeScript

import posthog from '@utdk/posthog';

await posthog.surveysResponsesList({
  "exclude_archived": false,
  "limit": 100,
  "offset": 0
})