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/
https://api.freemius.com/v1/products/{product_id}/installs/{install_id}/uninstall.json
https://docs.freemius.com/_mock/api/products/{product_id}/installs/{install_id}/uninstall.json
curl -i -X GET \
'https://api.freemius.com/v1/products/1234/installs/1234/uninstall.json?fields=id%2Cname%2Cslug' \
-H 'Authorization: Bearer <YOUR_AccessToken_HERE>'
The uninstall details.
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 ID of the installation or site the entity is associated with.
Uninstall reason. Possible values:
1
- No longer needed2
- Found a better alternative3
- Only needed for short period4
- Broke the website5
- Suddenly stopped working6
- Cannot continue paying7
- Other8
- Didn't work after installation9
- User doesn't like to share data10
- Didn't understand how it works11
- Missing specific feature12
- Didn't work13
- Expected something else14
- Expected to work differently15
- Temporary deactivationAdditional information gathered from the user for the uninstallation. This is populated when the product user chooses “Other” in contrast to pre-set options.
{ "id": "123456", "created": "2025-01-01 00:00:00", "updated": "2025-01-01 00:00:00", "plugin_id": "123456", "install_id": "123456", "site_id": "1234", "reason_id": 1, "reason_info": "string", "reason": "string" }
The product's version of the current install. The endpoint will return newer versions when set. This is a required param unless older_than
is provided.
If provided, only versions that are older than this will be returned.
The product type. If the type provide is all
, the latest released
or pending
version will be returned, whichever has the higher version.
The number of records to skip before starting to return records. Default is 0.
https://api.freemius.com/v1/products/{product_id}/installs/{install_id}/updates.json
https://docs.freemius.com/_mock/api/products/{product_id}/installs/{install_id}/updates.json
curl -i -X GET \
'https://api.freemius.com/v1/products/1234/installs/1234/updates.json?count=10&fields=id%2Cname%2Cslug&offset=10&older_than=1.0.0&type=released&version=1.0.0' \
-H 'Authorization: Bearer <YOUR_AccessToken_HERE>'
{ "tags": [ { … } ] }
https://api.freemius.com/v1/products/{product_id}/installs/{install_id}/updates/latest.json
https://docs.freemius.com/_mock/api/products/{product_id}/installs/{install_id}/updates/latest.json
curl -i -X GET \
'https://api.freemius.com/v1/products/1234/installs/1234/updates/latest.json?is_premium=true&newer_than=true&readme=true&type=released' \
-H 'Authorization: Bearer <YOUR_AccessToken_HERE>'
Updates collection.
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
.
A flag that controls the visibility of add-ons in the in-dashboard add-ons marketplace. Defaults to true. Only applicable if the product is an add-on.
{ "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, "is_released": true, "url": "https://example.com/" }