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

List all features

Request

Retrieve the product features collection.

Path
product_idinteger(int64)>= 1required

The ID of the product.

Example: 1234
Query
countinteger[ 1 .. 50 ]

The number of records to return.

Default 25
Example: count=10
offsetinteger>= 0

The number of records to skip before starting to return records. Default is 0.

Default 0
Example: offset=10
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/features.json?count=10&fields=id%2Cname%2Cslug&offset=10' \
  -H 'Authorization: Bearer <YOUR_AccessToken_HERE>'

Responses

The product features collection.

Bodyapplication/json
featuresArray of objects
Response
application/json
{ "features": [ {} ] }

Retrieve a product

Request

Query and retrieve a specific product by ID.

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.json?fields=id%2Cname%2Cslug' \
  -H 'Authorization: Bearer <YOUR_AccessToken_HERE>'

Responses

OK

Bodyapplication/json
secret_keystring

The secret key associated with the entity for authorization.

Example: "sk_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6"
public_keystring

The public key associated with the entity for authorization.

Example: "pk_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6"
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"
parent_plugin_idstring or null(int64)>= 1

If the product is an add-on then this is the ID of the parent product.

Example: "123456"
developer_idstring(int64)>= 1

The ID of the developer that owns the product.

Example: "123456"
store_idstring(int64)>= 1

The ID of the store that the product is being sold on.

Example: "123456"
slugstring

The slug of the product. If your plugin is listed on WordPress.org repository, use the exact slug.

Example: "my-freemius-plugin"
titlestring

The title of the product.

Example: "My Freemius Plugin"
environmentnumber

The environment the entity belongs to. 0 means it belongs to the production environment, 1 means it belongs to the sandbox environment.

Enum10
Example: 0
iconstring or null

Product's icon (profile picture).

Example: "https://img.freemius.com/plugin-icon-blue.png"
default_plan_idstring(int64)

Default plan ID of the product.

plansstring

Comma separated, ordered plans collection.

Example: "123456,123457,123458"
featuresstring

Comma separated, ordered features collection.

Example: "123456,123457,123458"
money_back_periodinteger

Money-back guarantee in days.

refund_policystring
Enum"flexible""moderate""strict"
annual_renewals_discountinteger or null

Renewals discount that will be applied to the chosen plan.

renewals_discount_typestring

The type of renewals discount, percentage or dollar.

Enum"percentage""dollar"
is_releasedboolean

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.

is_sdk_requiredboolean

A flag that controls whether the SDK should be required or not during deployment of a version. It defaults to true.

is_pricing_visibleboolean

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.

is_wp_org_compliantboolean

Set to true if the free version of the module is hosted on WordPress.org. Defaults to true.

installs_countinteger

Total number of opted in sites which were logged with the SDK.

active_installs_countinteger

Total number of active sites where the SDK is active.

free_releases_countinteger

The number of "free" version of the product that were deployed from Freemius.

premium_releases_countinteger

The number of "premium" version of the product that were deployed from Freemius.

total_purchasesinteger

Total number of payments recorded for the product.

total_subscriptionsinteger

Total number of subscriptions recorded for the product.

total_renewalsinteger

Total number of renewals recorded for the product.

total_failed_purchasesinteger

Total number of failed payments recorded for the product.

Example: "1234"
earningsnumber(float)

Total gross revenues.

Example: "1234.56"
typestring
Enum"plugin""theme""widget""template"
is_staticboolean

Determines whether the product is categorized as a static product (for example, a widget or a template).

Response
application/json
{ "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 }

Update a product

Request

Update a specific product by ID.

Path
product_idinteger(int64)>= 1required

The ID of the product.

Example: 1234
Body
iconstring(binary)

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

datastring(json)

The JSON data of the endpoint, matching the same schema as the json request body. Must be a valid JSON object.

Example: "{\"name\":\"My Product\"}"
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"}'

Responses

OK

Bodyapplication/json
secret_keystring

The secret key associated with the entity for authorization.

Example: "sk_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6"
public_keystring

The public key associated with the entity for authorization.

Example: "pk_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6"
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"
parent_plugin_idstring or null(int64)>= 1

If the product is an add-on then this is the ID of the parent product.

Example: "123456"
developer_idstring(int64)>= 1

The ID of the developer that owns the product.

Example: "123456"
store_idstring(int64)>= 1

The ID of the store that the product is being sold on.

Example: "123456"
slugstring

The slug of the product. If your plugin is listed on WordPress.org repository, use the exact slug.

Example: "my-freemius-plugin"
titlestring

The title of the product.

Example: "My Freemius Plugin"
environmentnumber

The environment the entity belongs to. 0 means it belongs to the production environment, 1 means it belongs to the sandbox environment.

Enum10
Example: 0
iconstring or null

Product's icon (profile picture).

Example: "https://img.freemius.com/plugin-icon-blue.png"
default_plan_idstring(int64)

Default plan ID of the product.

plansstring

Comma separated, ordered plans collection.

Example: "123456,123457,123458"
featuresstring

Comma separated, ordered features collection.

Example: "123456,123457,123458"
money_back_periodinteger

Money-back guarantee in days.

refund_policystring
Enum"flexible""moderate""strict"
annual_renewals_discountinteger or null

Renewals discount that will be applied to the chosen plan.

renewals_discount_typestring

The type of renewals discount, percentage or dollar.

Enum"percentage""dollar"
is_releasedboolean

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.

is_sdk_requiredboolean

A flag that controls whether the SDK should be required or not during deployment of a version. It defaults to true.

is_pricing_visibleboolean

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.

is_wp_org_compliantboolean

Set to true if the free version of the module is hosted on WordPress.org. Defaults to true.

installs_countinteger

Total number of opted in sites which were logged with the SDK.

active_installs_countinteger

Total number of active sites where the SDK is active.

free_releases_countinteger

The number of "free" version of the product that were deployed from Freemius.

premium_releases_countinteger

The number of "premium" version of the product that were deployed from Freemius.

total_purchasesinteger

Total number of payments recorded for the product.

total_subscriptionsinteger

Total number of subscriptions recorded for the product.

total_renewalsinteger

Total number of renewals recorded for the product.

total_failed_purchasesinteger

Total number of failed payments recorded for the product.

Example: "1234"
earningsnumber(float)

Total gross revenues.

Example: "1234.56"
typestring
Enum"plugin""theme""widget""template"
is_staticboolean

Determines whether the product is categorized as a static product (for example, a widget or a template).

Response
application/json
{ "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 }

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