/api/v2/server-side-api/paywalls/{paywall_id}/ Update paywall
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
The unique identifier of the paywall to update
Request body
At least one field must be provided
Array of RemoteConfig objects to update
The locale for the remote config (e.g., "en", "es", "fr")
JSON string containing the remote config data
Responses
Paywall updated successfully
Schema
The name of the paywall, as defined in your Adapty Dashboard
The unique identifier of the paywall
Whether the paywall uses the paywall builder
Whether the paywall uses the legacy paywall builder
Timestamp when the paywall was last updated
Timestamp when the paywall was created
The current state of the paywall
One of: "draft", "live", "inactive", "archived"
Whether the paywall is marked as deleted
URL for web purchases, if applicable
Array of Product objects containing product information
The unique identifier of the product
The title of the product
The product set category
One of: "weekly", "monthly", "trimonthly", "semiannual", "annual", "lifetime", "uncategorised", "nonsubscriptions", "two_months", "consumable"
The unique identifier of the product offer
The title of the offer
Array of RemoteConfig objects with locale and data
The locale for the remote config
JSON string containing the remote config data
Main screenshot object with image_id and url
The unique identifier of the image
The URL of the image
Example
{
"title": "Premium Subscription",
"paywall_id": "fd891d4f-5906-45b9-97c1-13cc3dc665df",
"use_paywall_builder": true,
"use_paywall_builder_legacy": false,
"updated_at": "2025-07-30T11:13:58.798Z",
"created_at": "2025-07-30T11:13:58.798Z",
"state": "live",
"is_deleted": false,
"web_purchase_url": "https://example.com/purchase",
"products": [
{
"product_id": "b95e9e51-a056-4eb6-9cf7-b75d139e7c3c",
"title": "Premium Monthly",
"product_set": "uncategorised",
"offer": {
"product_offer_id": "e31a4296-f250-4faf-ac80-3cc93c2da8f5",
"title": "Free Trial"
}
}
],
"remote_configs": [
{
"locale": "en",
"data": "{\"title\":\"Premium Features\",\"subtitle\":\"Unlock all premium content\"}"
}
],
"main_screenshot": {
"image_id": 123456,
"url": "https://public-media.adapty.io/public/screenshot.jpg"
}
} Bad request
Schema
Source of the error
Array of error messages
Short error name
HTTP status code
Example
{
"errors": [
{
"source": "remote_configs",
"errors": [
"At least one field must be provided"
]
}
],
"error_code": "validation_error",
"status_code": 400
} Unauthorized
Schema
Source of the error
Array of error messages
Short error name
HTTP status code
Example
{
"errors": [
"Invalid API key"
],
"error_code": "unauthorized",
"status_code": 401
} Paywall not found
Schema
Source of the error
Array of error messages
Short error name
HTTP status code
Example
{
"errors": [
{
"source": null,
"errors": [
"Paywall not found"
]
}
],
"error_code": "paywall_does_not_exist",
"status_code": 404
} Internal server error
Schema
Source of the error
Array of error messages
Short error name
HTTP status code