Update a public page
Updates the settings of a collection's public page and returns the updated page. Protecting a page (protection_mode: email_otp) requires the secured-sharing feature on your plan; otherwise the request fails with 403. Invalid protection settings fail with 400 and error code invalid_protection_settings, listing every problem found.
Basic authentication using Cloudinary API Key and API Secret.
In: header
Path Parameters
The cloud name of your Cloudinary product environment.
External ID of the collection the public page belongs to.
External ID of the public page.
Request Body
application/json
Partial-update payload. Only the fields you include are forwarded and changed; any field you omit is left unchanged. Sending null does not clear a value.
New display name for the public page. Omit to leave the current value unchanged.
New activation time for the page. Omit to leave the current value unchanged.
date-timeNew expiry time for the page. Omit to leave the current value unchanged.
date-timeWhether viewers may download the original asset. Omit to leave the current value unchanged.
Named transformations that viewers of the public page can apply when downloading assets, referenced by name (see the Admin API's Get transformations endpoint to list the named transformations in your product environment). The list replaces the page's current download transformations; pass an empty list to remove them all. Omit to leave the current value unchanged. At most 200 entries.
items <= 200When true, any name in download_transformations that isn't yet set as a transformation template is set as one automatically. It then appears in the Console's templates list and counts toward your product environment's template limit. When false or omitted, the request instead fails with download_transformation_not_available if any listed name isn't yet set as a transformation template, and nothing is changed.
falseSecured-sharing protection mode. none removes protection and clears the allowed emails, domains and allow_any. email_otp protects the page so viewers must verify an allowed email address with a one-time passcode; a protected page needs at least one allowed email or domain, or allow_any: true. Omit to leave the current mode unchanged: on a protected page the allowlist fields below then update its allowlist, but on an unprotected page they are ignored, so send email_otp to protect it.
Value in
- "none"
- "email_otp"
Email addresses allowed to access the page when it is protected. The list replaces the current one; send an empty array to clear it (the page must still satisfy the allow_any rule). Together with allowed_domains, at most 500 entries. Omit to leave the current value unchanged.
Email domains allowed to access the page when it is protected, as bare lowercase domains such as example.com. The list replaces the current one; send an empty array to clear it (the page must still satisfy the allow_any rule). Together with allowed_emails, at most 500 entries. Omit to leave the current value unchanged.
Whether any email address is allowed to access the page when it is protected. After the update, an email_otp page needs allow_any: true or at least one entry in allowed_emails or allowed_domains; otherwise the request fails with 400 invalid_protection_settings. Omit to leave the current value unchanged.
URL of a custom HTML page in your product environment to use in place of the public page's default design. It must be an https URL on a cloudinary.com host that belongs to this product environment, at most 2048 bytes. Setting it requires the custom collection layout feature on your plan; otherwise the request fails with 403. Pass an empty string to return to the default design. Omit to leave the current value unchanged.
^(|https://[A-Za-z0-9.-]+\.cloudinary\.com/.*)$length <= 2048Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PUT "https://example.com/v2/asset_management/demo/collections/col_8f3a2b1c9d4e/public_pages/pub_2c4d6e8f0a1b" \ -H "Content-Type: application/json" \ -d '{}'{ "data": { "id": "pub_2c4d6e8f0a1b", "url": "https://collection.cloudinary.com/your-cloud-name/pub_2c4d6e8f0a1b", "name": "Summer Campaign Preview", "available_from": "2026-03-20T00:00:00Z", "expires_at": "2026-04-20T00:00:00Z", "show_download_original_option": true, "download_transformations": [ { "name": "thumbnail_400", "transformation": "c_thumb,w_400,g_face", "types": [ "image" ] } ], "protection_mode": "email_otp", "allowed_emails": [ "alice@example.com", "bob@example.com" ], "allowed_domains": [ "example.com" ], "allow_any": false, "custom_layout_url": "https://res.cloudinary.com/demo/raw/upload/layouts/summer-page.html" }}