---
title: "Changes to Create Paywall"
method: POST
path: "/v2/paywalls"
---

# Changes to Create Paywall

`POST /v2/paywalls`

> Every recorded change to this operation, newest first.

## Timeline

Changed in 4 of 29 revisions.

- **2026-11-02** `523b4734dfab`: 2 info
- **2026-10-29** `778a11cd2c15`: 3 warning, 8 info
- **2026-09-30** `bfb85c07a3d3`: 1 info
- **2026-09-09** `217c96dc9a29`: 23 breaking, 106 info

## Changes

- **2026-11-02** `523b4734dfab`: 2 info
  - added the new optional request property `products/anyOf[subschema #1]/items/billing_plan_type`
  - added the optional property `products/items/billing_plan_type` to the response with the `200` status
- **2026-10-29** `778a11cd2c15`: 3 warning, 8 info
  - added the new `credentials_missing` enum value to the `code/anyOf[subschema #1]/` response property for the response status `403`
  - added the new `credentials_missing` enum value to the `code/anyOf[subschema #1]/` response property for the response status `404`
  - added the new `credentials_missing` enum value to the `code/anyOf[subschema #1]/` response property for the response status `429`
  - added `subschema #1, subschema #2` to the response body `anyOf` list for the response status `409`
  - added `subschema #1, subschema #2` to the response body `anyOf` list for the response status `500`
  - added `subschema #1, subschema #2, subschema #3, subschema #4, subschema #5` to the response body `anyOf` list for the response status `401`
  - added `subschema #2, subschema #3` to the response body `anyOf` list for the response status `400`
  - removed `subschema #1, subschema #2` from the response body `anyOf` list for the response status `409`
  - removed `subschema #1, subschema #2` from the response body `anyOf` list for the response status `500`
  - removed `subschema #1, subschema #2, subschema #3, subschema #4, subschema #5` from the response body `anyOf` list for the response status `401`
  - removed `subschema #2, subschema #3` from the response body `anyOf` list for the response status `400`
- **2026-09-30** `bfb85c07a3d3`: 1 info
  - added the optional property `legacy_editor` to the response with the `200` status
- **2026-09-09** `217c96dc9a29`: 23 breaking, 106 info
  - removed `subschema #1, subschema #2` from the `feature_gating` request property `anyOf` list
  - removed `subschema #1, subschema #2, subschema #3, subschema #4` from the `presentation_style` request property `anyOf` list
  - the `headless` request property type changed from `boolean` to no type
  - the `identifier` request property type changed from `string` to no type
  - the `metadata` request property type changed from `object` to no type
  - the `products` request property type changed from `array` to no type
  - the `template` request property type changed from `string` to no type
  - the `url` request property type changed from `string` to no type
  - the `code` response's property type changed from `string` to no type for status `403`
  - the `code` response's property type changed from `string` to no type for status `404`
  - the `code` response's property type changed from `string` to no type for status `429`
  - the `doc_url` response's property type changed from `string` to no type for status `403`
  - the `doc_url` response's property type changed from `string` to no type for status `404`
  - the `message` response's property type changed from `string` to no type for status `404`
  - the `message` response's property type changed from `string` to no type for status `429`
  - the `param` response's property type changed from `string` to no type for status `404`
  - the `required_scope` response's property type changed from `string` to no type for status `403`
  - the `resource_id` response's property type changed from `string` to no type for status `404`
  - the `resource_type` response's property type changed from `string` to no type for status `404`
  - the `retry_after` response's property type changed from `number` to no type for status `429`
  - the `type` response's property type changed from `string` to no type for status `403`
  - the `type` response's property type changed from `string` to no type for status `404`
  - the `type` response's property type changed from `string` to no type for status `429`
  - added `subschema #1` to the `feature_gating` request property `anyOf` list
  - added `subschema #1` to the `headless` request property `anyOf` list
  - added `subschema #1` to the `identifier` request property `anyOf` list
  - added `subschema #1` to the `metadata` request property `anyOf` list
  - added `subschema #1` to the `presentation_style` request property `anyOf` list
  - added `subschema #1` to the `products` request property `anyOf` list
  - added `subschema #1` to the `template` request property `anyOf` list
  - added `subschema #1` to the `url` request property `anyOf` list
  - added `subschema #1, subschema #2` to the response body `anyOf` list for the response status `409`
  - added `subschema #1, subschema #2` to the response body `anyOf` list for the response status `500`
  - added `subschema #1, subschema #2, subschema #3, subschema #4, subschema #5` to the response body `anyOf` list for the response status `401`
  - added `subschema #2, subschema #3` to the response body `anyOf` list for the response status `400`
  - removed `subschema #1: Conflict, subschema #2: Paywall Already Exists` from the response body `anyOf` list for the response status `409`
  - removed `subschema #1: Missing API Key, subschema #2: Invalid API Key Format, subschema #3: Invalid API Key, subschema #4: Authentication Failed, subschema #5: Invalid Session` from the response body `anyOf` list for the response status `401`
  - removed `subschema #1: Side Effect Execution Error, subschema #2: Internal Server Error` from the response body `anyOf` list for the response status `500`
  - removed `subschema #2: Bad Request, subschema #3: Invalid Template Reference` from the response body `anyOf` list for the response status `400`
  - added `subschema #1` to the `code` response property `anyOf` list for the response status `403`
  - …89 more
  - …this revision’s changelog is incomplete

---

[Operation](https://skmtc.dev/superwall/apis/superwall-api-v2/docs/v2/paywalls/post.md) - [API](https://skmtc.dev/superwall/apis/superwall-api-v2.md) - [Page](https://skmtc.dev/superwall/apis/superwall-api-v2/changes/v2/paywalls/post)
