Kinde Management API Quickstart Guide
SDKs and APIs
This guide walks you through setting up Postman to authenticate with the Kinde Management API using OAuth 2.0 client credentials, and shows you how to make your first API calls to list and create users.
create:users and read:usersWe recommend that you set up a Postman environment and test this in a non-production space first.
On your Postman client, select the No environment dropdown from the top right and select the plus icon to create a new environment.
Enter a name for the environment (e.g., Local).
Copy the app keys from your M2M application and enter them as environment variables:
KINDE_DOMAIN - https://<your_subdomain>.kinde.comM2M_CLIENT_ID - the client ID from your M2M applicationM2M_CLIENT_SECRET - the client secret from your M2M applicationMark the client secret variable as Sensitive so it will not accidentally leak to your team.
Go to Collections. Create a new collection (e.g., Kinde).
In the three dots menu next to the new Kinde folder, select Add request.
Go to the Authorization section and set the Type to OAuth 2.0 and make sure the Header Prefix is set to Bearer.
In the Configure New Token section, set the Grant Type to Client Credentials.
Enter the Access Token URL using the domain variable you created above: {{KINDE_DOMAIN}}/oauth2/token.
Note that even if you use a custom domain, the access token URL should still use your https://<your_subdomain>.kinde.com domain.
Enter the Client ID and Client Secret using the environment variables you created earlier.
Scroll down and select Advanced. In the Token request section, add a new audience key and enter {{KINDE_DOMAIN}}/api in the Value field. Ensure it is being sent in the Request Body.
Scroll down to the Authorization section and select Get New Access Token. You should see a confirmation message.
Select Proceed.
Select Use Token. You now have an access token for making requests to the Kinde Management API. Optionally, set a name for the token for easier identification.
Get users list from API:
Create a new request.
In the URL field, use the /api/v1/users endpoint: https://<your_subdomain>.kinde.com/api/v1/users
Go to the Authorization section and select OAuth 2.0 as the Auth Type.
Select the Token from the previously saved token.
Select Send.
You should see a list of your account users in the response body.
Create a new user with API:
Create a new request, set the type to POST and the URL to https://<your_subdomain>.kinde.com/api/v1/user.
Go to Body, select raw and enter the following JSON:
{ "profile": {}, "identities": [ {"type": "email", "is_verified": true, "details": {"email": "jamesbond@mi6.com"}}, { "type": "phone", "is_verified": false, "details": {"phone": "+61426148233", "phone_country_id": "au"} }, {"type": "username", "details": {"username": "jamesbond007"}} ]}This will create a new user in your Kinde business.
Set the Authorization as before.
Select Send.
You should see a success response with the new user in the response body section.
{ "id": "kp_1234", "created": true, "identities": [ { "type": "email", "result": { "created": true } }, { "type": "phone", "result": { "created": true } }, { "type": "username", "result": { "created": true } } ]}Go to your Kinde dashboard > Users and you should see the new user in the list.
Error message:
invalid_client, Description: Client authentication failed (e.g., unknown client, no client authentication included, or unsupported authentication method).
Solution:
Verify that you have copied the correct domain, client ID, and client secret, with no typos.
Error message:
403 Forbidden: Missing or incorrect Management API audience.
Solution:
Verify that you have added the correct audience value https://<your-subdomain>.kinde.com/api to the audience parameter in Step 2 of this doc.
Error message:
403 Forbidden: SCOPE_MISSING
Solution:
Add the missing scopes to your M2M application, get a new access token and try again.
Now that Postman is configured to call the Kinde Management API, explore it to automate your account actions. Check out the Kinde Management API for all available endpoints.