---
title: "List Headless Versions"
method: GET
path: "/v2/paywalls/{id}/versions"
tags: ["Paywalls V2"]
---

# List Headless Versions

`GET /v2/paywalls/{id}/versions`

Returns every version pushed to a code-first paywall, newest first, each with its immutable snapshot URL, declared products and whether it is the version production serves. 400 for visual-editor paywalls. Requires paywalls:read scope.

## Path parameters

- `id` string, required

## Response `200`

Success

- object
  - `object` 'list', required — Object type, always `list`
  - `data` object[], required — Pushed versions, newest first
    - `object` 'paywall.version', required — Object type, always `paywall.version`
    - `id` string, required
    - `version` number, required — The pushed version number
    - `created_at` string, required — ISO 8601 timestamp of when the version was pushed
    - `snapshot_id` string, nullable, required — Content hash (sha256) identifying the pushed snapshot
    - `url` string, required — Immutable URL the pushed snapshot is served from
    - `products` object[], required — The products the snapshot's config declared when it was pushed
      - `store` union, required — Store this product belongs to
        - 'app-store' — Apple App Store product
        - 'play-store' — Google Play product
        - 'stripe' — Stripe product
        - 'custom' — Custom (external purchase controller)
      - `identifier` string, required — Platform-specific product identifier
      - `reference_name` string, required — Stable reference name used in paywall editor/runtime (for example: primary)
    - `locales` string[], required — The locales the snapshot ships message catalogs for, as BCP 47 tags
    - `source_commit_sha` string, nullable, required — Git commit in the application's source repo that produced this version
    - `live` boolean, required — Whether this is the version production currently serves

## Other responses

- `400` — The request did not match the expected schema | The request was invalid or malformed
- `401` — No API key was provided in the request | The API key does not have a valid format | The API key is invalid or has been revoked | An error occurred while validating the API key | The session cookie is invalid or expired
- `403` — The API key does not have permission to perform this action
- `404` — The requested resource was not found
- `429` — Too many requests have been made in a short period
- `500` — An unexpected error occurred on the server

## Changes

- **2026-09-15** `9291e5369ab4` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/superwall/apis/superwall-api-v2/changes/v2/paywalls/:id/versions/get.md)

---

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