Freemius API (1.0)

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.

  • Manage products.
  • Manage license verifications.
  • Create custom integration with your SaaS.

If you're using Freemius for a WordPress product, please check out our official SDK.

Bearer Token Auth

Freemius API supports Bearer Token authentication for product-specific operations.

To retrieve your API token:

  1. Go to the Freemius Developer Dashboard.
  2. Open the Settings page of the relevant product.
  3. Click on the API Token tab.
  4. Copy the API Bearer Authorization Token from the UI.

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.

Other Scopes and Authentication

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:

  • Product Scope: /products/{product_id}/payments.json.
  • Developer Scope: /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:

  • User Scope: /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:

  • Update Plan: POST /developers/{developer_id}/products/{product_id}/plans/{plan_id}.json
  • Create Plan: POST /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.

Download OpenAPI description
Languages
Servers
Production API

https://api.freemius.com/v1/

Mock server

https://docs.freemius.com/_mock/api/

Products

All operations which can be done on a product.

Operations

Get product info

Request

Get product info. Please use the Developer Dashboard to update the information of a product.

Path
product_idinteger(int64)>= 1required

The ID of the product.

Example: 1234
Query
fieldsstring

Comma separated list of fields to return in the response. If not specified, all fields are returned.

Example: fields=id,name,slug
curl -i -X GET \
  'https://api.freemius.com/v1/products/1234/info.json?fields=id%2Cname%2Cslug' \
  -H 'Authorization: Bearer <YOUR_AccessToken_HERE>'

Responses

Successful operation

Bodyapplication/json
idstring(int64)>= 1

The unique identifier of the entity.

Example: "123456"
createdstring(date-time)

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

Example: "2025-01-01 00:00:00"
updatedstring or null(date-time)

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

Example: "2025-01-01 00:00:00"
plugin_idstring(int64)>= 1

The ID of the product the entity belongs to.

Example: "123456"
urlstring

The URL of the entity.

Example: "https://www.example.com"
descriptionstring

The description of the product.

Example: "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_descriptionstring

The short description of the product.

Example: "Calculate profits for small to medium businesses."
banner_urlstring

The URL of the entity.

Example: "https://www.example.com"
card_banner_urlstring

The URL of the entity.

Example: "https://www.example.com"
selling_point_0string

The selling point one of the product.

Example: "Ability to use stunning feature x."
selling_point_1string

The selling point two of the product.

Example: "Ability to use stunning feature y."
selling_point_2string

The selling point three of the product.

Example: "Ability to use stunning feature z."
screenshotsobject

The URLs of the product screenshot.

Example: {"screenshot_0":"https://exmaple.com/","screenshot_1":"https://exmaple.com/","screenshot_2":"https://exmaple.com/","screenshot_3":"https://exmaple.com/"}
Response
application/json
{ "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/" } }

Check product status

Request

Check if the product is active.

Path
product_idinteger(int64)>= 1required

The ID of the product.

Example: 1234
Query
is_updateboolean

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:

  • If your product is already active in some device before joining Freemius - Set value to true.
  • Otherwise set value to false.

This will also work with any “Activation limitation” you have put in your Moderation settings.

Default false
curl -i -X GET \
  'https://api.freemius.com/v1/products/1234/is_active.json?is_update=false' \
  -H 'Authorization: Bearer <YOUR_AccessToken_HERE>'

Responses

Product status.

Bodyapplication/json
is_activeboolean

The product status.

timestampinteger(int64)

The timestamp when the product status was done.

Example: 1742454772
Response
application/json
{ "is_active": true, "timestamp": 1742454772 }

Retrieve the pricing table data

Request

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.

Path
product_idinteger(int64)>= 1required

The ID of the product.

Example: 1234
Query
currencystring= 3 characters

The currency to use for the pricing.

Enum"usd""eur""gbp"
show_pendingboolean
Default false
typeany

Whether to show all plans or only the visible ones.

Default "all"
Enum"all""visible"
is_enrichedboolean

If set to true, the result will be enriched with some of the context plugin's information.

Default false
bundle_product_idstring

(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.

bundle_product_public_keystring

(optional) (Development Only) Used alongside the bundle_product_id parameter.

curl -i -X GET \
  'https://api.freemius.com/v1/products/1234/pricing.json?bundle_product_id=string&bundle_product_public_key=string&currency=usd&is_enriched=false&show_pending=false&type=all' \
  -H 'Authorization: Bearer <YOUR_AccessToken_HERE>'

Responses

The features and pricing data.

Bodyapplication/json
pluginobject(Product)

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.

plansArray of objects
reviewsArray of objects(ProductReview)

Verified and featured reviews of the product.

active_installsinteger

The estimated number of active installs of the product.

Example: 10000
downloadsinteger

The estimated number of downloads of the product.

Example: 5000
all_plans_single_site_pricingobject

Single site pricing for all plans indexed by plan ID

Example: {"16633":{"monthly_price":{"usd":9.99,"gbp":7.99,"eur":8.99},"annual_price":{"usd":99.99,"gbp":79.99,"eur":89.99},"lifetime_price":{"usd":299.99,"gbp":249.99,"eur":279.99}}}
checkout_urlstring

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.

Example: "https://checkout.freemius.com"
fs_wp_endpoint_urlstring

The URL to the Freemius WP Endpoint. This is internally used by the Freemius SDK.

Example: "https://wp.freemius.com"
trial_modeboolean

Whenther the product supports trial for the current install/site. This is relevant for WP products only.

Example: true
trial_utilizedboolean

Whether the trial has been utilized for the current install/site. This is relevant for WP products only.

Example: false
Response
application/json
{ "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": [ {} ], "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 }

Subscriptions

All operations associated to a subscription.

Operations

Users

All operations which can be done on a user belonging to a store or a product.

Operations

Licenses

All operations which can be done on a license belonging to a store or a product.

Operations

Coupons

All operations which can be done on a coupon belonging to a store or a product.

Operations

Carts

All operations which can be done on a cart belonging to a store or a product.

Operations

Payments

All operations associated to a payment.

Operations

Installations

Operations related to the installation of a product.

Operations

Trials

Operations related to a trial license of a product.

Operations

Addons

Operations related to an addon of a product.

Operations

Plans

Operations related to plans, pricings and features of a product.

Operations

Deployments

Operations related to version deployments and retrieval.

Operations