---
title: "List responses"
method: GET
path: "/v1/forms/{id}/responses/"
tags: ["Forms"]
---

# List responses

`GET /v1/forms/{id}/responses/`

## Request

- Base URL: `https://api.pdfbetter.com`
- URL: `https://api.pdfbetter.com/v1/forms/{id}/responses/`
- Auth: HTTP bearer

Newest first, with answers keyed by field name.

## Path parameters

- `id` string, required

## Query parameters

- `limit` integer
- `cursor` string

## Response `200`

List responses

- FormResponseList
  - `object` 'list', required
  - `data` object[], required
    - `object` 'form_response', required
    - `id` string, required
    - `formId` string, required
    - `edition` integer, required
    - `respondentEmail` string, nullable, required
    - `values` object, required: Answers keyed by field name (radio groups by group name). Images and drawn signatures are data URLs.
    - `createdAt` string, required: ISO 8601 timestamp (UTC)
    - `pdf` object, nullable, required: Filled PDF (single-response endpoint only; link valid 5 minutes)
      - `object` 'file_link', required
      - `url` string, required
      - `fileName` string, required
      - `expiresAt` string, required: ISO 8601 timestamp (UTC)
  - `hasMore` boolean, required
  - `nextCursor` string, nullable, required

## Other responses

- `400`: Invalid request (see `error.details.issues`)
- `401`: Missing or invalid API key
- `402`: Your plan doesn't include this (API access needs Business) or a monthly allowance is used up
- `403`: The API key lacks the required scope
- `404`: Not found (or not yours)
- `409`: Conflict with the current state
- `422`: Validation failed
- `429`: Rate limited — see RateLimit-* and Retry-After

---

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