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

We support Bearer authentication. You can get the API Key from the Freemius Developer Dashboard for a product.

  1. Open the Settings page of the relevant product.
  2. Click on the API Token tab.
  3. Copy the API Bearer Authorization Token from the UI.

More information can be found under the Security section of every endpoint.

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 addons

Request

Retrieve the addons 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
show_pendingboolean

Whether to show released addons only or the hidden as well.

Default false
enrichedboolean

If set to true, returns marketing info.

Default false
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>'

Responses

The list of all the addons.

Bodyapplication/json
addonsArray of objects(Product)
Response
application/json
{ "addons": [ {} ] }

List all email addresses

Request

Retrieve the email addresses collection associated with a product. In case the product is using the store's email address configuration, the endpoint will return a 404 error.

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

Responses

The list of all the email addresses associated with a product.

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"
store_idobject

The ID of the store.

Example: "1234"
generalstring or null

The general system email address.

Example: "foo@example.com"
general_namestring or null

The label to the general system email address.

Example: "Company Support"
dont_replystring or null

The do-not-reply email address.

Example: "donotreply@example.com"
dont_reply_namestring or null

The label to the do-not-reply email address.

Example: "Do Not Reply"
personalstring or null

The personal assistance email address.

Example: "personalmanager@example.com"
personal_namestring or null

The label to the personal assistance email address.

Example: "John Doe"
personal_technicalstring or null

The technical support representative email address.

Example: "techsupport@example.com"
personal_technical_namestring or null

The label to the technical support representative email address.

Example: "Tech Support"
personal_setupstring or null

The happiness representative email address.

Example: "support@example.com"
personal_setup_namestring or null

The label to the happiness representative email address.

Example: "Support"
supportstring or null

The general support email address.

Example: "support@example.com"
support_namestring or null

The label to the general support email address.

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

Delete all email addresses

Request

Delete all email addresses associated with a product. Sets the product to use the default store-level email addresses.

Path
product_idinteger(int64)>= 1required

The ID of the product.

Example: 1234
curl -i -X DELETE \
  https://api.freemius.com/v1/products/1234/emails/addresses.json \
  -H 'Authorization: Bearer <YOUR_AccessToken_HERE>'

Responses

Email addresses deleted. Product set to use the default store-level email addresses.

Response
No content

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 }

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 deployed versions

Request

Get the product version collection. This is for WordPress or static products only.

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

Responses

The product version collection.

Bodyapplication/json
tagsArray of objects(ProductTag)
Response
application/json
{ "tags": [ {} ] }

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