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.
If you're using Freemius for a WordPress product, please check out our official SDK.
We support Bearer authentication. You can get the API Key from the Freemius Developer Dashboard for a product.
More information can be found under the Security section of every endpoint.
https://api.freemius.com/v1/
https://docs.freemius.com/_mock/api/
Gets the user collection associated with a product.
There are a few filters that can be applied to the request.
You can specify the parameter email
to filter the users by email. Optionally you can also put a valid email in the search
parameter.
The search
parameter also accepts the following values:
You can use the combination of count
and offset
parameters to paginate the results.
https://api.freemius.com/v1/products/{product_id}/users.json
https://docs.freemius.com/_mock/api/products/{product_id}/users.json
curl -i -X GET \
'https://api.freemius.com/v1/products/1234/users.json?count=10&fields=id%2Cname%2Cslug&offset=10' \
-H 'Authorization: Bearer <YOUR_AccessToken_HERE>'
{ "users": [ { … } ] }
Create a new user associated with the product.
The user will be linked to the product if they already exist in Freemius.
User can only be created for products with elevated permissions or during data migration.
Freemius allows to migrate your users from other platforms. To do so, you need to set the is_migration
parameter to true
. This will prevent any emails from being sent to the users and will not log any events. Once migrated the user can use their existing licenses to activate your product.
(optional) URL address that the user will be auto forwarded to after email confirmation is clicked.
(optional) Defaults to TRUE. If false
, email verification message will NOT be sent after registration.
Whether or not the user has given their consent for marketing materials. A null
value indicates that the user has not made a decision yet.
The source of the migration data. To get support migrating from other platform please see our documentation.
https://api.freemius.com/v1/products/{product_id}/users.json
https://docs.freemius.com/_mock/api/products/{product_id}/users.json
curl -i -X POST \
'https://api.freemius.com/v1/products/1234/users.json?fields=id%2Cname%2Cslug' \
-H 'Authorization: Bearer <YOUR_AccessToken_HERE>' \
-H 'Content-Type: application/json' \
-d '{}'
OK
Whether or not the user has given their consent for marketing materials. A null
value indicates that the user has not made a decision yet.
The type of authentication. If app2fa
is set, the person has signed for 2FA authentication.
The secret key associated with the entity for authorization.
The public key associated with the entity for authorization.
The date and time the entity was created, under UTC timezone.
The date and time the entity was updated, under UTC timezone. If null
then the entity was never updated since its creation.
Date and time of the last login.
{ "note": "string", "is_marketing_allowed": true, "is_beta": true, "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", "gross": 0.1, "last_login_at": "2025-07-30 05:56:29", "email_status": "delivered" }
https://api.freemius.com/v1/products/{product_id}/users/{user_id}/installs.json
https://docs.freemius.com/_mock/api/products/{product_id}/users/{user_id}/installs.json
curl -i -X GET \
'https://api.freemius.com/v1/products/1234/users/1234/installs.json?count=10&fields=id%2Cname%2Cslug&install_ids=1234%2C2478%2C2345&license_id=0&offset=10&plan_id=0' \
-H 'Authorization: Bearer <YOUR_AccessToken_HERE>'
{ "installs": [ { … } ] }
Comma separated list of fields to return in the response. If not specified, all fields are returned.
The number of records to skip before starting to return records. Default is 0.
Retrieve specific multiple license with a comma-separated string of their license keys.
https://api.freemius.com/v1/products/{product_id}/users/{user_id}/licenses.json
https://docs.freemius.com/_mock/api/products/{product_id}/users/{user_id}/licenses.json
curl -i -X GET \
'https://api.freemius.com/v1/products/1234/users/1234/licenses.json?count=10&fields=id%2Cname%2Cslug&ids=string&is_enriched=false&license_key=string&license_keys=string&offset=10&type=all' \
-H 'Authorization: Bearer <YOUR_AccessToken_HERE>'
{ "licenses": [ { … } ] }
Comma separated list of fields to return in the response. If not specified, all fields are returned.
The number of records to skip before starting to return records. Default is 0.
Filter the payments by the status.
https://api.freemius.com/v1/products/{product_id}/users/{user_id}/payments.json
https://docs.freemius.com/_mock/api/products/{product_id}/users/{user_id}/payments.json
curl -i -X GET \
'https://api.freemius.com/v1/products/1234/users/1234/payments.json?billing_cycle=1&count=10&extended=false&fields=id%2Cname%2Cslug&filter=all&include_addons=false&include_bundles=false&offset=10' \
-H 'Authorization: Bearer <YOUR_AccessToken_HERE>'
{ "payments": [ { … } ], "discounts": [ { … } ] }
Enrich the subscriptions with the plan name, install URL & title, and user email.
Comma separated list of fields to return in the response. If not specified, all fields are returned.
The number of records to skip before starting to return records. Default is 0.
Sort the subscriptions by the ID or the next payment date.
https://api.freemius.com/v1/products/{product_id}/users/{user_id}/subscriptions.json
https://docs.freemius.com/_mock/api/products/{product_id}/users/{user_id}/subscriptions.json
curl -i -X GET \
'https://api.freemius.com/v1/products/1234/users/1234/subscriptions.json?billing_cycle=1&count=10&extended=false&fields=id%2Cname%2Cslug&filter=all&gateway=stripe&offset=10&plan_id=string&search=string&sort=id' \
-H 'Authorization: Bearer <YOUR_AccessToken_HERE>'
{ "subscriptions": [ { … } ], "discounts": [ { … } ] }