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

Create a review

Request

Create a product review.

Path
product_idinteger(int64)>= 1required

The ID of the product.

Example: 1234
Bodyrequired
picturestring(binary)

Reviewer's profile picture. A maximum of 200KB in size and 300px width and 300px height is allowed.

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 POST \
  https://api.freemius.com/v1/products/1234/reviews.json \
  -H 'Authorization: Bearer <YOUR_AccessToken_HERE>' \
  -H 'Content-Type: multipart/form-data' \
  -F picture=string \
  -F 'data={"name":"My Product"}'

Responses

The retrieved review.

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

The external ID of the review (in case migrating from another system).

user_idstring or null(int64)>= 1

The ID of the user the entity belongs to. If NULL then still not associated to any user.

Example: "123456"
rateinteger[ 0 .. 100 ]

The score of the review.

Example: 80
titlestring

The title of the review.

Example: "Great plugin! It works perfectly."
textstring

The content of the review.

Example: "I love this plugin! It has all the features I need and more. The support team is also very responsive and helpful. Highly recommend!"
namestring

The full name of the reviewer.

Example: "John Doe"
job_titlestring

The job title of the reviewer.

Example: "Software Engineer"
companystring

The company name of the reviewer.

Example: "Example Software Inc."
company_urlstring

The URL of the entity.

Example: "https://www.example.com"
picturestring(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

profile_urlstring

The URL of the reviewer's profile.

Example: "https://example.com/profile"
license_idstring(int64)>= 1

The ID of the license associated with the entity.

Example: "123456"
is_verifiedboolean

Whether this is a genuine review generated by a real user.

Default true
is_featuredboolean

Whether the review should be included in marketing material (e.g. pricing page).

Default false
Response
application/json
{ "id": "123456", "created": "2025-01-01 00:00:00", "updated": "2025-01-01 00:00:00", "plugin_id": "123456", "external_id": "string", "user_id": "123456", "rate": 80, "title": "Great plugin! It works perfectly.", "text": "I love this plugin! It has all the features I need and more. The support team is also very responsive and helpful. Highly recommend!", "name": "John Doe", "job_title": "Software Engineer", "company": "Example Software Inc.", "company_url": "https://www.example.com", "picture": "string", "profile_url": "https://example.com/profile", "license_id": "123456", "is_verified": true, "is_featured": false }

Retrieve reviews summary

Request

Retrieve the summary of the reviews collection. Every item is an object with a rate and count properties, where rate is the rating value (0-100) and count is the number of reviews with that rating. Reviews are grouped by their rating.

Path
product_idinteger(int64)>= 1required

The ID of the product.

Example: 1234
Query
typestring

(Optional) Whether to retrieve only verified reviews or both verified and unverified reviews.

Default "verified"
Enum"all""verified"
curl -i -X GET \
  'https://api.freemius.com/v1/products/1234/reviews/summary.json?type=all' \
  -H 'Authorization: Bearer <YOUR_AccessToken_HERE>'

Responses

The summary of the review collection.

Bodyapplication/json
reviewsArray of objects
Response
application/json
{ "reviews": [ {} ] }

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