---
title: "List responses"
method: GET
path: "/quizzes/{id}/responses"
tags: ["Responses"]
---

# List responses

`GET /quizzes/{id}/responses`

## Request

- Base URL: `https://quizgen.dev/api/v1`
- URL: `https://quizgen.dev/api/v1/quizzes/{id}/responses`
- Auth: HTTP bearer

Lists responses. `answers` is a flat `question_id → value` map (`multi_choice` → array of values). `complete: false` rows are partial autosaves — useful for drop-off analysis.

## Query parameters

- `complete` boolean
- `format` 'json' | 'csv'
- `limit` integer
- `offset` integer

## Response `200`

The quiz's responses.

- object
  - `responses` QuizResponse[], required
    - `id` string
    - `quiz_id` string
    - `definition_version` integer
    - `answers` object: Flat question_id → value map (multi_choice → array of values).
    - `outcome` string, nullable: Matched bucket key, if the quiz uses outcomes.
    - `score` number, nullable
    - `respondent_email` string, nullable
    - `complete` boolean
    - `paid` boolean: True once the response's payment succeeded.
    - `payment_intent` string, nullable: Stripe PaymentIntent id, if the quiz takes payment.
    - `started_at` string, date-time
    - `completed_at` string, date-time, nullable
    - `meta` object
  - `total` integer, required: Total responses for the quiz (after the complete filter).
  - `count` integer, required: Items in this page.
  - `offset` integer, required
  - `has_more` boolean, required
  - `next_offset` integer: Offset for the next page. Present only when `has_more` is true.

## Other responses

- `401`: Missing or invalid API key.
- `404`: No such quiz (or not yours).

---

[API](https://skmtc.dev/quizgen/apis/quizgen-api.md) · [All operations](https://skmtc.dev/quizgen/apis/quizgen-api/llms.txt) · [OpenAPI document](https://skmtc.dev/quizgen/apis/quizgen-api/revisions/100cf9a83300?raw)
