---
title: "Update paywall"
method: PUT
path: "/api/v2/server-side-api/paywalls/{paywall_id}/"
tags: ["Paywalls"]
---

# Update paywall

`PUT /api/v2/server-side-api/paywalls/{paywall_id}/`

Updates the remote config of a specific paywall. This endpoint allows you to modify the remote config values that help you to customize the paywall's appearance and behavior.

**Important:** If you update a remote config, it will overwrite all the existing remote configs! If you need to preserve the existing remote configs, first, get the paywall. Then, copy the remote_configs from there and modify the objects you need in the update request.

## Path parameters

- `paywall_id` string, uuid, required

## Request body

- PaywallUpdateRequest — At least one field must be provided
  - `remote_configs` object[], required — Array of RemoteConfig objects to update
    - `locale` string, required — The locale for the remote config (e.g., "en", "es", "fr")
    - `data` string, required — JSON string containing the remote config data

## Response `200`

Paywall updated successfully

- PaywallResponse
  - `title` string, required — The name of the paywall, as defined in your Adapty Dashboard
  - `paywall_id` string, uuid, required — The unique identifier of the paywall
  - `use_paywall_builder` boolean, required — Whether the paywall uses the paywall builder
  - `use_paywall_builder_legacy` boolean, required — Whether the paywall uses the legacy paywall builder
  - `updated_at` string, date-time, required — Timestamp when the paywall was last updated
  - `created_at` string, date-time, required — Timestamp when the paywall was created
  - `state` 'draft' | 'live' | 'inactive' | 'archived', required — The current state of the paywall
  - `is_deleted` boolean, required — Whether the paywall is marked as deleted
  - `web_purchase_url` string, uri, nullable — URL for web purchases, if applicable
  - `products` object[], required — Array of Product objects containing product information
    - `product_id` string, uuid, required — The unique identifier of the product
    - `title` string, required — The title of the product
    - `product_set` 'weekly' | 'monthly' | 'trimonthly' | 'semiannual' | 'annual' | 'lifetime' | 'uncategorised' | 'nonsubscriptions' | 'two_months' | 'consumable', required — The product set category
    - `offer` object, nullable, required
      - `product_offer_id` string, uuid, required — The unique identifier of the product offer
      - `title` string, required — The title of the offer
  - `remote_configs` object[] — Array of RemoteConfig objects with locale and data
    - `locale` string, required — The locale for the remote config
    - `data` string, required — JSON string containing the remote config data
  - `main_screenshot` object, nullable — Main screenshot object with image_id and url
    - `image_id` integer, required — The unique identifier of the image
    - `url` string, uri, required — The URL of the image

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `404` — Paywall not found
- `500` — Internal server error

---

[API](https://skmtc.dev/adapty/apis/adapty-server-side-api.md) · [All operations](https://skmtc.dev/adapty/apis/adapty-server-side-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/adapty/adapty-server-side-api/revisions/abdc1c773a17/schema)
