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/

Local development API

http://api.freemius-local.com:8080/v1/

Mock server

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

Products

All operations which can be done on a product.

Operations

Developers

All operations which can be done from on a developer.

Operations

Retrieve bank account

Request

Retrieve the developer's bank account.

Path
developer_idinteger(int64)>= 1required

The ID of the developer.

Example: 1234
bank_account_idinteger(int64)>= 1required

The ID of the bank account.

Example: 1234
curl -i -X GET \
  https://api.freemius.com/v1/developers/1234/bank_account/1234.json \
  -b fsa_access_token=YOUR_API_KEY_HERE

Responses

OK

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

ID of the person.

person_typestring

The type of the person. A developer is a person who sells software through the Freemius platform, a user is a person who buys software through the Freemius platform.

Enum"developer""user"
account_last4string

Last 4 digits of the account number.

namestring

Name of the account holder.

phonestring

Phone number of the account holder.

address_streetstring

Address line one of the account holder.

address_aptstring or null

Address line two of the account holder.

address_citystring

City of the account holder.

address_statestring or null

State of the account holder.

address_zipstring

ZIP or postal code of the account holder.

address_country_codestring

The ISO 3166-1 alpha 2 two-letter country code associated with the entity.

Example: "us"
bank_namestring

Name of the bank.

bank_city_statestring

City and state of the bank.

bank_country_codestring

The ISO 3166-1 alpha 2 two-letter country code associated with the entity.

Example: "us"
swiftstring

Swift code of the bank.

ifscstring or null

IFSC number of Indian banks only.

sort_codestring or null^\d{6}$

6 digits Sort code of UK banks only.

aba_rtnstring or null^\d{9}$

9 digits Routing number for US banks only.

wise_account_emailstring or null

Email account for Wise banks only.

Response
application/json
{ "id": "123456", "created": "2025-01-01 00:00:00", "updated": "2025-01-01 00:00:00", "person_id": 0, "person_type": "developer", "account_last4": "string", "name": "string", "phone": "string", "address_street": "string", "address_apt": "string", "address_city": "string", "address_state": "string", "address_zip": "string", "address_country_code": "us", "bank_name": "string", "bank_city_state": "string", "bank_country_code": "us", "swift": "string", "ifsc": "string", "sort_code": "string", "aba_rtn": "string", "wise_account_email": "string" }

Log in

Request

Call this endpoint with your developer email and password and optionally 2FA auth code to login and set the authorization cookie.

This is a public endpoint and does not require any authentication.

Please note that this endpoint is not meant for public use and should only be used by the Freemius Developer Dashboard. The login can expect a reCAPTCHA token and it will only work if the reCAPTCHA widget is initialized from the Developer Dashboard itself. To get API tokens for a product or a store, please do it from the Developer Dashboard app itself.

Path
developer_idinteger(int64)>= 1required

The ID of the developer.

Example: 1234
Bodyapplication/json
emailstring

Valid email address.

Example: "jane@freemius.com"
passwordstring

Valid password.

recaptcha_tokenstring

reCAPTCHA token. One must use the Developer Dashboard to get the reCAPTCHA token if the login asks for it.

remember_meboolean

Will set the cookie expiration day to 7 days from the successful login if set to true. Otherwise, the cookie will expire in 12 hours.

codestring

2FA 6 digits code in case developer's auth mode is using TOTP based 2FA apps.

backup_codestring

2FA backup code (24 chars) to disable and bypass 2FA authentication.

curl -i -X POST \
  https://api.freemius.com/v1/developers/1234/login.json \
  -H 'Content-Type: application/json' \
  -d '{}'

Responses

Successful login.

Bodyapplication/json
personobject(Developer)

A developer is someone who has registered to sell products on the Freemius platform.

expiresinteger

The expiration time of the cookie in seconds.

is_newboolean

Signal the developer is not new (this is a login, so it must exists), for consistency with the other auth endpoints.

Response
application/json
{ "person": { "email": "jane@example.com", "first": "Jane", "last": "Doe", "picture": "https://example.com/profile-pic.jpg", "ip": "127.0.0.1", "is_verified": "true", "auth": "app2fa", "secret_key": "sk_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6", "public_key": "pk_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6", "id": "123456", "created": "2025-01-01 00:00:00", "updated": "2025-01-01 00:00:00", "paypal_email": "payout@example.com", "security_email": "security@example.com", "is_trusted": true, "earnings": "1000.00", "last_cycle_earnings": "100.00", "commission": "{\"above\":0.1}" }, "expires": 0, "is_new": true }

Add team member

Request

Add new team member to the product.

Only a developer with priviledge can add a new team member to a product.

Path
product_idinteger(int64)>= 1required

The ID of the product.

Example: 1234
install_idinteger(int64)>= 1required

The ID of the install.

Example: 1234
Bodyapplication/jsonrequired
rolestringrequired

The user role assigned to the team member.

Enum"admin""developer""support""accountant"
member_idstring(int64)>= 1

The id of the new member (Developer ID).

Example: "1234"
emailstring

The email of the new member.

Example: "foo@example.com"
curl -i -X POST \
  'https://api.freemius.com/v1/developer/{developer_id}/products/1234/installs/1234/members.json' \
  -H 'Authorization: Bearer <YOUR_AccessToken_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "role": "admin"
  }'

Responses

Team member added successfully.

Bodyapplication/json
idnumber

The id of the team member.

Example: 1234
emailstring

The email of the team member.

Example: "foo@example.com"
firststring

The first name of the team member.

Example: "John"
laststring

The last name of the team member.

Example: "Doe"
picturestring

The picture of the team member.

rolestring

The user role assigned to the team member.

Enum"admin""developer""support""accountant"
plugin_idstring(int64)>= 1

The ID of the product the entity belongs to.

Example: "123456"
Response
application/json
{ "id": 1234, "email": "foo@example.com", "first": "John", "last": "Doe", "picture": "string", "role": "admin", "plugin_id": "123456" }

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

Events

Operations related to events of a store or product.

Operations

Reviews

Operations related to reviews of a product.

Operations

Deployments

Operations related to version deployments and retrieval.

Operations