# Update a deployment

```
PUT 
https://api.freemius.com/v1/products/{product_id}/tags/{tag_id}.json
```

#### Auth:Bearer TokenSCOPE: <!-- -->PRODUCT

Product-scoped API tokens allow you to operate on the product itself. This token usually allows read-only access to the product configuration and write access to several operations on subscriptions, customers, payments, and more. For most SaaS or app integrations, this is the token you will need.

1. Go to the [Freemius Developer Dashboard](https://dashboard.freemius.com/).
2. Open the Settings page of the relevant product.
3. Click the API & Keys tab.
4. Copy the API Bearer Authorization Token from the UI.

***

Update a specific deployed version of the product. This applies to WordPress products only. Use this endpoint to update the `release_mode` of a deployment to make it available to your customers.

### Release Modes[​](#release-modes "Direct link to Release Modes")

Defined by the `release_mode` property, with the following possible values:

* `pending` – The deployment is pending and not visible to customers. This is the default value.
* `beta` – The deployment is in beta mode. Only customers with beta access will see this version.
* `released` – The deployment is released and visible to all customers.

Additionally, WordPress plugins and themes support **incremental releases** and **staged rollouts**:

* [**Incremental Release**](https://freemius.com/help/documentation/release-management/incremental-update/): Controlled via the `is_incremental` flag, incremental releases enforce sequential updates, requiring users to install designated intermediate versions before proceeding to newer ones.
* [**Staged Rollout**](https://freemius.com/help/documentation/release-management/staged-rollouts/): Managed through the `limit` and `percentage_limit` flags, staged rollouts enable gradual deployment of updates to a subset of users, allowing for monitoring and issue resolution before full release.

> Note: Incremental Release and Staged Rollout are not supported for templates and widgets.

## Request[​](#request "Direct link to request")

### Path Parameters

* **product\_id**
  <!-- -->
  integer\<int64>[](#param-property-deployments-update-param-path-product-id "Direct link to product_id")required

  The ID of the product.

  **Possible values:** `>= 1`

  **Example:<!-- -->&#x20;**`1234`

  **tag\_id**
  <!-- -->
  integer\<int64>[](#param-property-deployments-update-param-path-tag-id "Direct link to tag_id")required

  The ID of the product version.

  **Possible values:** `>= 1`

  **Example:<!-- -->&#x20;**`1234`

application/json

### Body

* **release\_mode**string[](#schema-property-deployments-update-request-body-release-mode-string "Direct link to release_mode")

  The release mode of the product.

  **Possible values:** \[`released`, `pending`, `beta`]

  **limit**integer[](#schema-property-deployments-update-request-body-limit-integer "Direct link to limit")

  The maximum number of downloads allowed for this version. This is used for [staged rollout](https://freemius.com/help/documentation/release-management/staged-rollouts/) of WordPress products. Unlimited number is set as `null`.

  **Possible values:** `>= 1`

  **Example:<!-- -->&#x20;**`50`

  **percentage\_limit**integer[](#schema-property-deployments-update-request-body-percentage-limit-integer "Direct link to percentage_limit")

  Instead of `limit`, you can use this property to limit the percentage of license owners that will receive an update. The value must be between 0 and 100. Behind the scenes the system will count the current active license owners and convert it into an absolute value.

  **Possible values:** `>= 0` and `<= 100`

  **is\_incremental**boolean[](#schema-property-deployments-update-request-body-is-incremental-boolean "Direct link to is_incremental")

  Determines whether the version is incremental or not.

  **Example:<!-- -->&#x20;**`true`

## Responses[​](#responses "Direct link to Responses")

* 200
* 400
* 401
* 402
* 404

The updated deployment.

application/json

**Schema**

**id**string\<int64>[](#schema-property-deployments-update-response-schema-id-string-int64 "Direct link to id")

The unique identifier of the entity.

**Possible values:** `>= 1`

**Example:<!-- -->&#x20;**`123456`

**created**string\<date-time>[](#schema-property-deployments-update-response-schema-created-string-date-time "Direct link to created")

The date and time the entity was created, under UTC timezone.

**Example:<!-- -->&#x20;**`2025-01-01 00:00:00`

**updated**string\<date-time>[](#schema-property-deployments-update-response-schema-updated-string-date-time "Direct link to updated")nullable

The date and time the entity was updated, under UTC timezone. If `null` then the entity was never updated since its creation.

**Example:<!-- -->&#x20;**`2025-01-01 00:00:00`

**plugin\_id**string\<int64>[](#schema-property-deployments-update-response-schema-plugin-id-string-int64 "Direct link to plugin_id")

The ID of the product the entity belongs to.

**Possible values:** `>= 1`

**Example:<!-- -->&#x20;**`123456`

**developer\_id**string\<int64>[](#schema-property-deployments-update-response-schema-developer-id-string-int64 "Direct link to developer_id")

The ID of a developer.

**Possible values:** `>= 1`

**Example:<!-- -->&#x20;**`1234`

**slug**string[](#schema-property-deployments-update-response-schema-slug-string "Direct link to slug")nullable

The `slug` of the product. This is auto-generated from your product settings.

**Example:<!-- -->&#x20;**`my-freemius-plugin`

**premium\_slug**string[](#schema-property-deployments-update-response-schema-premium-slug-string "Direct link to premium_slug")nullable

The `slug` of the premium product. This is auto-generated from your product's settings.

**Example:<!-- -->&#x20;**`my-freemius-plugin-pro`

**version**string\<semver>[](#schema-property-deployments-update-response-schema-version-string-semver "Direct link to version")

The version of the product. For WordPress.org products (plugins and themes), we recommend using semver semantics to support composer integration.

**Example:<!-- -->&#x20;**`1.0.0`

**sdk\_version**string[](#schema-property-deployments-update-response-schema-sdk-version-string "Direct link to sdk_version")

The Freemius SDK version. Only relevant for WordPress products using the Freemius [WP SDK](https://freemius.com/help/documentation/wordpress-sdk/).

**Example:<!-- -->&#x20;**`1.2.2`

**requires\_platform\_version**string[](#schema-property-deployments-update-response-schema-requires-platform-version-string "Direct link to requires_platform_version")nullable

The platform version required (e.g WordPress version).

**Example:<!-- -->&#x20;**`1.0.0`

**requires\_programming\_language\_version**string[](#schema-property-deployments-update-response-schema-requires-programming-language-version-string "Direct link to requires_programming_language_version")nullable

The programming language version (e.g PHP version).

**Example:<!-- -->&#x20;**`5.6`

**tested\_up\_to\_version**string[](#schema-property-deployments-update-response-schema-tested-up-to-version-string "Direct link to tested_up_to_version")nullable

The tested platform version that the product is compatible (e.g WordPress version).

**Example:<!-- -->&#x20;**`1.0.0`

**downloaded**integer[](#schema-property-deployments-update-response-schema-downloaded-integer "Direct link to downloaded")

The number of times the product has been downloaded.

**Possible values:** `>= 0`

**Example:<!-- -->&#x20;**`1234`

**has\_free**boolean[](#schema-property-deployments-update-response-schema-has-free-boolean "Direct link to has_free")

If the product has a free version.

**has\_premium**boolean[](#schema-property-deployments-update-response-schema-has-premium-boolean "Direct link to has_premium")

If the product has a premium version.

**release\_mode**string[](#schema-property-deployments-update-response-schema-release-mode-string "Direct link to release_mode")

The release mode of the product.

**Possible values:** \[`released`, `pending`, `beta`]

**limit**integer[](#schema-property-deployments-update-response-schema-limit-integer "Direct link to limit")

The maximum number of downloads allowed for this version. This is used for [staged rollout](https://freemius.com/help/documentation/release-management/staged-rollouts/) of WordPress products. Unlimited number is set as `null`.

**Possible values:** `>= 1`

**Example:<!-- -->&#x20;**`50`

**uniques**integer[](#schema-property-deployments-update-response-schema-uniques-integer "Direct link to uniques")

The number of unique users that have downloaded the product.

**Possible values:** `>= 1`

**Example:<!-- -->&#x20;**`1234`

**is\_incremental**boolean[](#schema-property-deployments-update-response-schema-is-incremental-boolean "Direct link to is_incremental")

Determines whether the version is incremental or not.

**Example:<!-- -->&#x20;**`true`

Bad request. The request could not be understood by the server due to malformed syntax or arguments.

application/json

**Schema**

**path**string[](#schema-property-deployments-update-response-schema-path-string "Direct link to path")

The API request path.

**Example:<!-- -->&#x20;**`:/products/product_id/users.json`

**error** <!-- -->object

This object contains the error details.

**type**string[](#schema-property-deployments-update-response-schema-type-string "Direct link to type")

The type of the error encountered by the server.

**Example:<!-- -->&#x20;**`UnauthorizedAccess`

**message**string[](#schema-property-deployments-update-response-schema-message-string "Direct link to message")

The descriptive error message.

**Example:<!-- -->&#x20;**`Some error has occured.`

**code**string[](#schema-property-deployments-update-response-schema-code-string "Direct link to code")

The error code.

**Example:<!-- -->&#x20;**`unauthorized_access`

**http**integer[](#schema-property-deployments-update-response-schema-http-integer "Direct link to http")

The HTTP status code returned by the server.

**Example:<!-- -->&#x20;**`401`

**timestamp**string[](#schema-property-deployments-update-response-schema-timestamp-string "Direct link to timestamp")

Current timestamp.

**Example:<!-- -->&#x20;**`Thu, 11 May 2023 11:45:30 +0000`

**request** <!-- -->object

This object sends back the request payload as received by the server (both from path and from body or query).

**property name\***&#x61;ny[](#schema-property-deployments-update-response-schema-property-name-any "Direct link to property name*")

This object sends back the request payload as received by the server (both from path and from body or query).

**Example:<!-- -->&#x20;**`{"beautify":true,"format":"json"}`

Unauthorized access error. The request requires [authentication](https://freemius.com/help/api/#bearer-token-authentication) but was not provided or the provided authentication does not satisfy the required permissions.

application/json

**Schema**

**path**string[](#schema-property-deployments-update-response-schema-path-string "Direct link to path")

The API request path.

**Example:<!-- -->&#x20;**`:/products/product_id/users.json`

**error** <!-- -->object

This object contains the error details.

**type**string[](#schema-property-deployments-update-response-schema-type-string "Direct link to type")

The type of the error encountered by the server.

**Example:<!-- -->&#x20;**`UnauthorizedAccess`

**message**string[](#schema-property-deployments-update-response-schema-message-string "Direct link to message")

The descriptive error message.

**Example:<!-- -->&#x20;**`Some error has occured.`

**code**string[](#schema-property-deployments-update-response-schema-code-string "Direct link to code")

The error code.

**Example:<!-- -->&#x20;**`unauthorized_access`

**http**integer[](#schema-property-deployments-update-response-schema-http-integer "Direct link to http")

The HTTP status code returned by the server.

**Example:<!-- -->&#x20;**`401`

**timestamp**string[](#schema-property-deployments-update-response-schema-timestamp-string "Direct link to timestamp")

Current timestamp.

**Example:<!-- -->&#x20;**`Thu, 11 May 2023 11:45:30 +0000`

**request** <!-- -->object

This object sends back the request payload as received by the server (both from path and from body or query).

**property name\***&#x61;ny[](#schema-property-deployments-update-response-schema-property-name-any "Direct link to property name*")

This object sends back the request payload as received by the server (both from path and from body or query).

**Example:<!-- -->&#x20;**`{"beautify":true,"format":"json"}`

The request is missing the specified argument.

application/json

**Schema**

**path**string[](#schema-property-deployments-update-response-schema-path-string "Direct link to path")

The API request path.

**Example:<!-- -->&#x20;**`:/products/product_id/users.json`

**error** <!-- -->object

This object contains the error details.

**type**string[](#schema-property-deployments-update-response-schema-type-string "Direct link to type")

The type of the error encountered by the server.

**Example:<!-- -->&#x20;**`UnauthorizedAccess`

**message**string[](#schema-property-deployments-update-response-schema-message-string "Direct link to message")

The descriptive error message.

**Example:<!-- -->&#x20;**`Some error has occured.`

**code**string[](#schema-property-deployments-update-response-schema-code-string "Direct link to code")

The error code.

**Example:<!-- -->&#x20;**`unauthorized_access`

**http**integer[](#schema-property-deployments-update-response-schema-http-integer "Direct link to http")

The HTTP status code returned by the server.

**Example:<!-- -->&#x20;**`401`

**timestamp**string[](#schema-property-deployments-update-response-schema-timestamp-string "Direct link to timestamp")

Current timestamp.

**Example:<!-- -->&#x20;**`Thu, 11 May 2023 11:45:30 +0000`

**request** <!-- -->object

This object sends back the request payload as received by the server (both from path and from body or query).

**property name\***&#x61;ny[](#schema-property-deployments-update-response-schema-property-name-any "Direct link to property name*")

This object sends back the request payload as received by the server (both from path and from body or query).

**Example:<!-- -->&#x20;**`{"beautify":true,"format":"json"}`

The requested resource was not found.

application/json

**Schema**

**path**string[](#schema-property-deployments-update-response-schema-path-string "Direct link to path")

The API request path.

**Example:<!-- -->&#x20;**`:/products/product_id/users.json`

**error** <!-- -->object

This object contains the error details.

**type**string[](#schema-property-deployments-update-response-schema-type-string "Direct link to type")

The type of the error encountered by the server.

**Example:<!-- -->&#x20;**`UnauthorizedAccess`

**message**string[](#schema-property-deployments-update-response-schema-message-string "Direct link to message")

The descriptive error message.

**Example:<!-- -->&#x20;**`Some error has occured.`

**code**string[](#schema-property-deployments-update-response-schema-code-string "Direct link to code")

The error code.

**Example:<!-- -->&#x20;**`unauthorized_access`

**http**integer[](#schema-property-deployments-update-response-schema-http-integer "Direct link to http")

The HTTP status code returned by the server.

**Example:<!-- -->&#x20;**`401`

**timestamp**string[](#schema-property-deployments-update-response-schema-timestamp-string "Direct link to timestamp")

Current timestamp.

**Example:<!-- -->&#x20;**`Thu, 11 May 2023 11:45:30 +0000`

**request** <!-- -->object

This object sends back the request payload as received by the server (both from path and from body or query).

**property name\***&#x61;ny[](#schema-property-deployments-update-response-schema-property-name-any "Direct link to property name*")

This object sends back the request payload as received by the server (both from path and from body or query).

**Example:<!-- -->&#x20;**`{"beautify":true,"format":"json"}`
