Welcome to the Freemius API Documentation!
You can use our API to access Freemius API endpoints, which can get information on various aspects of Freemius.
If you're using Freemius for a WordPress product, please check out our official SDK.
Freemius API supports Bearer Token authentication for product-specific operations.
To retrieve your API token:
Use this token by including it in the Authorization
header of your API requests:
Authorization: Bearer {api_token}
Bearer tokens are scoped to a specific product. This means they can only be used with endpoints under the /products/{product_id}/
namespace. For example:
GET /products/12345/users.json
Authorization Bearer {api_token}
Requests to endpoints outside the product scope will result in an authorization error.
The Freemius API is organized around different scopes, based on the top-level entity of the operation:
For example, let's say you want to list all payments of a product. This operation can be done in several scopes:
/products/{product_id}/payments.json
./developers/{developer_id}/products/{product_id}/payments.json
.On the other hand, if a user would want to list their payment, then endpoint will be scoped to the user:
/users/{user_id}/payments.json
.Some operations can be done from a particular scope only. For example only a developer can update a plan of a product or create a new plan. So the following operations will work:
/developers/{developer_id}/products/{product_id}/plans/{plan_id}.json
/developers/{developer_id}/products/{product_id}/plans.json
If you try to perform the same operation on a product scope, it will return an error. The scopes provides a way to control access and permissions for different entities in the Freemius ecosystem.
Currently, Bearer Token authentication is supported for product scope only. If you need access to endpoints in others scopes, use the secret-key based authentication with the following SDKs:
For most use cases, managing your products, licenses, and customers through the Developer Dashboard or Customer Portal provides all the necessary capabilities.
https://api.freemius.com/v1/
https://docs.freemius.com/_mock/api/
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.
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:
is_incremental
flag, incremental releases enforce sequential updates, requiring users to install designated intermediate versions before proceeding to newer ones.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.
The maximum number of downloads allowed for this version. This is used for staged rollout of WordPress products. Unlimited number is set as null
.
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.
https://api.freemius.com/v1/products/{product_id}/tags/{tag_id}.json
https://docs.freemius.com/_mock/api/products/{product_id}/tags/{tag_id}.json
curl -i -X PUT \
https://api.freemius.com/v1/products/1234/tags/1234.json \
-H 'Authorization: Bearer <YOUR_AccessToken_HERE>' \
-H 'Content-Type: application/json' \
-d '{}'
The updated deployment.
The date and time the entity was created, under UTC timezone.
The date and time the entity was updated, under UTC timezone. If null
then the entity was never updated since its creation.
The slug
of the product. This is auto-generated from your product settings.
The slug
of the premium product. This is auto-generated from your product's settings.
The version of the product. For WordPress.org products (plugins and themes), we recommend using semver semantics to support composer integration.
The Freemius SDK version. Only relevant for WordPress products using the Freemius WP SDK.
The platform version required (e.g WordPress version).
The programming language version (e.g PHP version).
The tested platform version that the product is compatible (e.g WordPress version).
The maximum number of downloads allowed for this version. This is used for staged rollout of WordPress products. Unlimited number is set as null
.
{ "id": "123456", "created": "2025-01-01 00:00:00", "updated": "2025-01-01 00:00:00", "plugin_id": "123456", "developer_id": "1234", "slug": "my-freemius-plugin", "premium_slug": "my-freemius-plugin-pro", "version": "1.0.0", "sdk_version": "1.2.2", "requires_platform_version": "1.0.0", "requires_programming_language_version": "5.6", "tested_up_to_version": "1.0.0", "downloaded": "1234", "has_free": true, "has_premium": true, "release_mode": "released", "limit": 50, "uniques": "1234", "is_incremental": true }
Download a specific deployed version of the product. This is for WordPress products only (including plugins, themes, templates and widgets). It outputs the zip file of the deployed version.
You can download both the premium and the free version of the deployment using the
is_premium
flag. This will help you setup automation to deploy Freemius generated free version to WordPress.org repository.
https://api.freemius.com/v1/products/{product_id}/tags/{tag_id}.zip
https://docs.freemius.com/_mock/api/products/{product_id}/tags/{tag_id}.zip
curl -i -X GET \
'https://api.freemius.com/v1/products/1234/tags/1234.zip?is_premium=true' \
-H 'Authorization: Bearer <YOUR_AccessToken_HERE>'
https://api.freemius.com/v1/products/{product_id}/tags.json
https://docs.freemius.com/_mock/api/products/{product_id}/tags.json
curl -i -X GET \
'https://api.freemius.com/v1/products/1234/tags.json?count=10&fields=id%2Cname%2Cslug&offset=10' \
-H 'Authorization: Bearer <YOUR_AccessToken_HERE>'
{ "tags": [ { … } ] }
Upload a new version of the product (for WordPress products only). The endpoint supports only the multipart/form-data
content type and expects two payloads: file
and data
.
file
- The zip file containing the product. For WordPress plugins or themes this must contain the root directory.data
- Please omit this when deploying WordPress plugins and themes. In case of deploying templates and widgets, this needs to be a stringified JSON and must have the version
and requires_platform_version
properties.An example of the data
property:
{"version": "2.0.0", "requires_platform_version": "1.0.0"}
After you have created a deployment, please send another PUT request to the newly created version to update the
release_status
to eitherreleased
orbeta
. The default value ispending
which means none of the customers will be able to see the new version.
You can learn more about the deployment process here.
The zip file containing the product. For WordPress plugins or themes this must contain the root directory.
https://api.freemius.com/v1/products/{product_id}/tags.json
https://docs.freemius.com/_mock/api/products/{product_id}/tags.json
curl -i -X POST \
https://api.freemius.com/v1/products/1234/tags.json \
-H 'Authorization: Bearer <YOUR_AccessToken_HERE>' \
-H 'Content-Type: multipart/form-data' \
-F file=string \
-F 'data={"version": "1.0.0", "requires_platform_version": "1.0.0"}'
OK
The date and time the entity was created, under UTC timezone.
The date and time the entity was updated, under UTC timezone. If null
then the entity was never updated since its creation.
The slug
of the product. This is auto-generated from your product settings.
The slug
of the premium product. This is auto-generated from your product's settings.
The version of the product. For WordPress.org products (plugins and themes), we recommend using semver semantics to support composer integration.
The Freemius SDK version. Only relevant for WordPress products using the Freemius WP SDK.
The platform version required (e.g WordPress version).
The programming language version (e.g PHP version).
The tested platform version that the product is compatible (e.g WordPress version).
The maximum number of downloads allowed for this version. This is used for staged rollout of WordPress products. Unlimited number is set as null
.
{ "id": "123456", "created": "2025-01-01 00:00:00", "updated": "2025-01-01 00:00:00", "plugin_id": "123456", "developer_id": "1234", "slug": "my-freemius-plugin", "premium_slug": "my-freemius-plugin-pro", "version": "1.0.0", "sdk_version": "1.2.2", "requires_platform_version": "1.0.0", "requires_programming_language_version": "5.6", "tested_up_to_version": "1.0.0", "downloaded": "1234", "has_free": true, "has_premium": true, "release_mode": "released", "limit": 50, "uniques": "1234", "is_incremental": true }
https://api.freemius.com/v1/products/{product_id}/tags/latest.json
https://docs.freemius.com/_mock/api/products/{product_id}/tags/latest.json
curl -i -X GET \
'https://api.freemius.com/v1/products/1234/tags/latest.json?is_premium=true&type=released' \
-H 'Authorization: Bearer <YOUR_AccessToken_HERE>'
The latest deployment information.
The date and time the entity was created, under UTC timezone.
The date and time the entity was updated, under UTC timezone. If null
then the entity was never updated since its creation.
The slug
of the product. This is auto-generated from your product settings.
The slug
of the premium product. This is auto-generated from your product's settings.
The version of the product. For WordPress.org products (plugins and themes), we recommend using semver semantics to support composer integration.
The Freemius SDK version. Only relevant for WordPress products using the Freemius WP SDK.
The platform version required (e.g WordPress version).
The programming language version (e.g PHP version).
The tested platform version that the product is compatible (e.g WordPress version).
The maximum number of downloads allowed for this version. This is used for staged rollout of WordPress products. Unlimited number is set as null
.
{ "id": "123456", "created": "2025-01-01 00:00:00", "updated": "2025-01-01 00:00:00", "plugin_id": "123456", "developer_id": "1234", "slug": "my-freemius-plugin", "premium_slug": "my-freemius-plugin-pro", "version": "1.0.0", "sdk_version": "1.2.2", "requires_platform_version": "1.0.0", "requires_programming_language_version": "5.6", "tested_up_to_version": "1.0.0", "downloaded": "1234", "has_free": true, "has_premium": true, "release_mode": "released", "limit": 50, "uniques": "1234", "is_incremental": true, "url": "string" }
https://api.freemius.com/v1/products/{product_id}/tags/latest.zip
https://docs.freemius.com/_mock/api/products/{product_id}/tags/latest.zip
curl -i -X GET \
'https://api.freemius.com/v1/products/1234/tags/latest.zip?is_premium=true&type=released' \
-H 'Authorization: Bearer <YOUR_AccessToken_HERE>'