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}/addons.json
https://docs.freemius.com/_mock/api/products/{product_id}/addons.json
curl -i -X GET \
'https://api.freemius.com/v1/products/1234/addons.json?count=10&enriched=false&fields=id%2Cname%2Cslug&offset=10&show_pending=false' \
-H 'Authorization: Bearer <YOUR_AccessToken_HERE>'
{ "addons": [ { … } ] }
https://api.freemius.com/v1/products/{product_id}/emails/addresses.json
https://docs.freemius.com/_mock/api/products/{product_id}/emails/addresses.json
curl -i -X GET \
'https://api.freemius.com/v1/products/1234/emails/addresses.json?fields=id%2Cname%2Cslug' \
-H 'Authorization: Bearer <YOUR_AccessToken_HERE>'
The list of all the email addresses associated with a product.
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 technical support representative email address.
The label to the technical support representative email address.
The happiness representative email address.
The label to the happiness representative email address.
{ "id": "123456", "created": "2025-01-01 00:00:00", "updated": "2025-01-01 00:00:00", "plugin_id": "123456", "store_id": "1234", "general": "foo@example.com", "general_name": "Company Support", "dont_reply": "donotreply@example.com", "dont_reply_name": "Do Not Reply", "personal": "personalmanager@example.com", "personal_name": "John Doe", "personal_technical": "techsupport@example.com", "personal_technical_name": "Tech Support", "personal_setup": "support@example.com", "personal_setup_name": "Support", "support": "support@example.com", "support_name": "Support" }
https://api.freemius.com/v1/products/{product_id}/emails/addresses.json
https://docs.freemius.com/_mock/api/products/{product_id}/emails/addresses.json
curl -i -X DELETE \
https://api.freemius.com/v1/products/1234/emails/addresses.json \
-H 'Authorization: Bearer <YOUR_AccessToken_HERE>'
No content
Retrieve a product's feature. In case of WordPress products, this is used automatically for the in-dashboard pricing page.
https://api.freemius.com/v1/products/{product_id}/features/{feature_id}.json
https://docs.freemius.com/_mock/api/products/{product_id}/features/{feature_id}.json
curl -i -X GET \
'https://api.freemius.com/v1/products/1234/features/1234.json?fields=id%2Cname%2Cslug' \
-H 'Authorization: Bearer <YOUR_AccessToken_HERE>'
The product's feature.
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 description of the feature, up to 256 characters. This will be displayed as the description in the tooltip on the pricing page.
{ "id": "123456", "created": "2025-01-01 00:00:00", "updated": "2025-01-01 00:00:00", "plugin_id": "1234", "title": "Pageviews per month", "description": "The number of times a page is loaded.", "is_featured": "true" }
The description of the feature, up to 256 characters. This will be displayed as the description in the tooltip on the pricing page.
https://api.freemius.com/v1/products/{product_id}/features/{feature_id}.json
https://docs.freemius.com/_mock/api/products/{product_id}/features/{feature_id}.json
curl -i -X PUT \
https://api.freemius.com/v1/products/1234/features/1234.json \
-H 'Authorization: Bearer <YOUR_AccessToken_HERE>' \
-H 'Content-Type: application/json' \
-d '{}'
The updated feature.
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 description of the feature, up to 256 characters. This will be displayed as the description in the tooltip on the pricing page.
{ "id": "123456", "created": "2025-01-01 00:00:00", "updated": "2025-01-01 00:00:00", "plugin_id": "1234", "title": "Pageviews per month", "description": "The number of times a page is loaded.", "is_featured": "true" }
https://api.freemius.com/v1/products/{product_id}/features/{feature_id}.json
https://docs.freemius.com/_mock/api/products/{product_id}/features/{feature_id}.json
curl -i -X DELETE \
https://api.freemius.com/v1/products/1234/features/1234.json \
-H 'Authorization: Bearer <YOUR_AccessToken_HERE>'
No content
https://api.freemius.com/v1/products/{product_id}/features.json
https://docs.freemius.com/_mock/api/products/{product_id}/features.json
curl -i -X GET \
'https://api.freemius.com/v1/products/1234/features.json?count=10&fields=id%2Cname%2Cslug&offset=10' \
-H 'Authorization: Bearer <YOUR_AccessToken_HERE>'
{ "features": [ { … } ] }
https://api.freemius.com/v1/products/{product_id}.json
https://docs.freemius.com/_mock/api/products/{product_id}.json
curl -i -X GET \
'https://api.freemius.com/v1/products/1234.json?fields=id%2Cname%2Cslug' \
-H 'Authorization: Bearer <YOUR_AccessToken_HERE>'
OK
The secret key associated with the entity for authorization.
The public key associated with the entity for authorization.
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.
If the product is an add-on then this is the ID of the parent product.
The slug
of the product. If your plugin is listed on WordPress.org
repository, use the exact slug.
The environment the entity belongs to. 0 means it belongs to the production environment, 1 means it belongs to the sandbox environment.
Product's icon (profile picture).
The type of renewals discount, percentage or dollar.
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.
A flag that controls whether the SDK should be required or not during deployment of a version. It defaults to true
.
Determines if the pricing should be visible in the in-SDK pricing page. Defaults to true. Turn this off during the development of a new product.
Set to true if the free version of the module is hosted on WordPress.org. Defaults to true.
The number of "free" version of the product that were deployed from Freemius.
The number of "premium" version of the product that were deployed from Freemius.
Total number of failed payments recorded for the product.
{ "secret_key": "sk_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6", "public_key": "pk_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6", "id": "123456", "created": "2025-01-01 00:00:00", "updated": "2025-01-01 00:00:00", "parent_plugin_id": "123456", "developer_id": "123456", "store_id": "123456", "slug": "my-freemius-plugin", "title": "My Freemius Plugin", "environment": 0, "icon": "https://img.freemius.com/plugin-icon-blue.png", "default_plan_id": "string", "plans": "123456,123457,123458", "features": "123456,123457,123458", "money_back_period": 0, "refund_policy": "flexible", "annual_renewals_discount": 0, "renewals_discount_type": "percentage", "is_released": true, "is_sdk_required": true, "is_pricing_visible": true, "is_wp_org_compliant": true, "installs_count": 0, "active_installs_count": 0, "free_releases_count": 0, "premium_releases_count": 0, "total_purchases": 0, "total_subscriptions": 0, "total_renewals": 0, "total_failed_purchases": "1234", "earnings": "1234.56", "type": "plugin", "is_static": true }
The icon of the entity, must be a valid JPG, PNG or GIF image, with dimension not exceeding 300px by 300px. Max allowed size is 200KB
https://api.freemius.com/v1/products/{product_id}.json
https://docs.freemius.com/_mock/api/products/{product_id}.json
curl -i -X PUT \
https://api.freemius.com/v1/products/1234.json \
-H 'Authorization: Bearer <YOUR_AccessToken_HERE>' \
-H 'Content-Type: multipart/form-data' \
-F icon=string \
-F 'data={"name":"My Product"}'
OK
The secret key associated with the entity for authorization.
The public key associated with the entity for authorization.
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.
If the product is an add-on then this is the ID of the parent product.
The slug
of the product. If your plugin is listed on WordPress.org
repository, use the exact slug.
The environment the entity belongs to. 0 means it belongs to the production environment, 1 means it belongs to the sandbox environment.
Product's icon (profile picture).
The type of renewals discount, percentage or dollar.
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.
A flag that controls whether the SDK should be required or not during deployment of a version. It defaults to true
.
Determines if the pricing should be visible in the in-SDK pricing page. Defaults to true. Turn this off during the development of a new product.
Set to true if the free version of the module is hosted on WordPress.org. Defaults to true.
The number of "free" version of the product that were deployed from Freemius.
The number of "premium" version of the product that were deployed from Freemius.
Total number of failed payments recorded for the product.
{ "secret_key": "sk_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6", "public_key": "pk_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6", "id": "123456", "created": "2025-01-01 00:00:00", "updated": "2025-01-01 00:00:00", "parent_plugin_id": "123456", "developer_id": "123456", "store_id": "123456", "slug": "my-freemius-plugin", "title": "My Freemius Plugin", "environment": 0, "icon": "https://img.freemius.com/plugin-icon-blue.png", "default_plan_id": "string", "plans": "123456,123457,123458", "features": "123456,123457,123458", "money_back_period": 0, "refund_policy": "flexible", "annual_renewals_discount": 0, "renewals_discount_type": "percentage", "is_released": true, "is_sdk_required": true, "is_pricing_visible": true, "is_wp_org_compliant": true, "installs_count": 0, "active_installs_count": 0, "free_releases_count": 0, "premium_releases_count": 0, "total_purchases": 0, "total_subscriptions": 0, "total_renewals": 0, "total_failed_purchases": "1234", "earnings": "1234.56", "type": "plugin", "is_static": true }
https://api.freemius.com/v1/products/{product_id}/info.json
https://docs.freemius.com/_mock/api/products/{product_id}/info.json
curl -i -X GET \
'https://api.freemius.com/v1/products/1234/info.json?fields=id%2Cname%2Cslug' \
-H 'Authorization: Bearer <YOUR_AccessToken_HERE>'
Successful operation
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 description of the product.
The short description of the product.
The selling point one of the product.
The selling point two of the product.
The selling point three of the product.
{ "id": "123456", "created": "2025-01-01 00:00:00", "updated": "2025-01-01 00:00:00", "plugin_id": "123456", "url": "https://www.example.com", "description": "Calculate profits for small to medium businesses. This product is a must-have for any business owner who intends to view the profits of their business. ", "short_description": "Calculate profits for small to medium businesses.", "banner_url": "https://www.example.com", "card_banner_url": "https://www.example.com", "selling_point_0": "Ability to use stunning feature x.", "selling_point_1": "Ability to use stunning feature y.", "selling_point_2": "Ability to use stunning feature z.", "screenshots": { "screenshot_0": "https://exmaple.com/", "screenshot_1": "https://exmaple.com/", "screenshot_2": "https://exmaple.com/", "screenshot_3": "https://exmaple.com/" } }
You can use this flag in conjunction with the Moderation Setting of your product.
In case you want to limit the activation of your product to new instances only (say after migrating to Freemius) you can check the relevant settings from the Developer Dashboard and from your product make an API request like below:
true
.false
.This will also work with any “Activation limitation” you have put in your Moderation settings.
https://api.freemius.com/v1/products/{product_id}/is_active.json
https://docs.freemius.com/_mock/api/products/{product_id}/is_active.json
curl -i -X GET \
'https://api.freemius.com/v1/products/1234/is_active.json?is_update=false' \
-H 'Authorization: Bearer <YOUR_AccessToken_HERE>'
{ "is_active": true, "timestamp": 1742454772 }
Retrieve the plugin's full features & pricing data for a pricing table. This is used by our official pricing page app inside the WordPress SDK.
If set to true
, the result will be enriched with some of the context plugin's information.
(optional) (Development Only) The ID of the parent bundle product. When getting the pricing of a product, if the product is part of a bundle, you can set the value here (along with the public key of the bundle). This will be used to determine the trial status of the product in sandbox mode. Our WP SDK uses it internally.
https://api.freemius.com/v1/products/{product_id}/pricing.json
https://docs.freemius.com/_mock/api/products/{product_id}/pricing.json
curl -i -X GET \
'https://api.freemius.com/v1/products/1234/pricing.json?bundle_product_id=string&bundle_product_public_key=string¤cy=usd&is_enriched=false&show_pending=false&type=all' \
-H 'Authorization: Bearer <YOUR_AccessToken_HERE>'
The features and pricing data.
A product is a software that is being sold on Freemius. It can be a WordPress plugin, theme, SaaS, or any other software that is being sold on Freemius.
The label used for the selling unit of the product, e.g., 'Credit', 'Activation', etc. The resulting object will have both singular and plural.
Single site pricing for all plans indexed by plan ID
The URL to the Freemius Checkout. You need to append the product id and plan id as necessary. Please refer to the Checkout documentation for more information.
The URL to the Freemius WP Endpoint. This is internally used by the Freemius SDK.
Whenther the product supports trial for the current install/site. This is relevant for WP products only.
{ "plugin": { "secret_key": "sk_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6", "public_key": "pk_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6", "id": "123456", "created": "2025-01-01 00:00:00", "updated": "2025-01-01 00:00:00", "parent_plugin_id": "123456", "developer_id": "123456", "store_id": "123456", "slug": "my-freemius-plugin", "title": "My Freemius Plugin", "environment": 0, "icon": "https://img.freemius.com/plugin-icon-blue.png", "default_plan_id": "string", "plans": "123456,123457,123458", "features": "123456,123457,123458", "money_back_period": 0, "refund_policy": "flexible", "annual_renewals_discount": 0, "renewals_discount_type": "percentage", "is_released": true, "is_sdk_required": true, "is_pricing_visible": true, "is_wp_org_compliant": true, "installs_count": 0, "active_installs_count": 0, "free_releases_count": 0, "premium_releases_count": 0, "total_purchases": 0, "total_subscriptions": 0, "total_renewals": 0, "total_failed_purchases": "1234", "earnings": "1234.56", "type": "plugin", "is_static": true }, "plans": [ { … } ], "selling_unit_label": { "singular": "Credit", "plural": "Credits" }, "reviews": [ { … } ], "active_installs": 10000, "downloads": 5000, "all_plans_single_site_pricing": { "16633": { … } }, "checkout_url": "https://checkout.freemius.com", "fs_wp_endpoint_url": "https://wp.freemius.com", "trial_mode": true, "trial_utilized": false }