Skip to content

Commit 001bff9

Browse files
committed
fix: broken links
1 parent 7979699 commit 001bff9

File tree

3 files changed

+21
-19
lines changed

3 files changed

+21
-19
lines changed

src/content/docs/machine-to-machine-applications/organization-scoped-m2m-apps/m2m-applications-for-organizations.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,12 @@ These claims can be used by your backend services to authorize access to specifi
6767
| Tenant data isolation | Manual | Enforced |
6868
| Use case | Admin scripts, internal automation | Per-tenant agents, scoped APIs |
6969
| Token restrictions | None | Scoped to one org |
70-
| Token claims | Basic | Includes `org_code` |
70+
| Token claims | Basic | Includes `org_code` |
7171

7272
## Best practices
7373

7474
- Use separate M2M apps for different scopes or services.
7575
- Limit the [scopes](https://docs.kinde.com/developer-tools/your-apis/custom-api-scopes/) assigned to each M2M app to the minimum required for its function.
76-
- [Rotate client secrets](https://docs.kinde.com/build/applications/rotate-client-secret/) periodically using the UI.
76+
- [Rotate client secrets](/build/applications/rotate-client-secret/) periodically using the UI.
7777
- Audit token usage by tracking `client_id` and `org_code` in logs.
7878
- Avoid including any personally identifiable information (PII) in token claims.

src/content/docs/machine-to-machine-applications/organization-scoped-m2m-apps/using-m2m-apps-for-AI-applications.mdx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ relatedArticles:
1212
If you're building AI-powered tools or agents that act on behalf of your customers, machine-to-machine (M2M) applications in Kinde offer a simple, secure way to authenticate them.
1313

1414
M2M apps are ideal for:
15+
1516
- Long-running background jobs
1617
- Headless tools or scheduled workers
1718
- AI assistants, agents, or orchestration layers
@@ -23,6 +24,7 @@ By scoping M2M apps to specific organizations, you ensure each token can only ac
2324
You’ve built a support assistant that uses a customer’s internal knowledge base to generate responses. Each org gets their own agent instance.
2425

2526
With Kinde, you can:
27+
2628
- Create one M2M app per organization
2729
- Assign custom metadata (e.g. model version, language preference)
2830
- Include feature flags in the token (e.g. `enable_agent_v2`)
@@ -33,6 +35,7 @@ Your backend APIs validate the incoming token and respond accordingly — no nee
3335
## Example: Shared agent with dynamic tokens
3436

3537
If you deploy a shared service that rotates between customer workspaces, you can:
38+
3639
- Store the appropriate client credentials per org
3740
- Request tokens using the client credentials flow
3841
- Receive a token scoped to a single org, with configuration claims
@@ -41,8 +44,8 @@ This keeps your infrastructure lightweight while maintaining strict org isolatio
4144

4245
## Best practices
4346

44-
- Use [Properties](/build/applications/m2m-properties/) to define custom configuration like `model_version` or `max_tokens`
45-
- Use [Token customization](/build/applications/m2m-customize-token/) to inject only the claims your AI service needs
47+
- Use [Properties](/machine-to-machine-applications/m2m-application-setup/add-metadata-to-an-m2m-application-with-properties/) to define custom configuration like `model_version` or `max_tokens`
48+
- Use [Token customization](/machine-to-machine-applications/m2m-token-customization/customize-m2m-tokens/) to inject only the claims your AI service needs
4649
- Enforce `org_code` and `scopes` server-side to prevent token misuse
4750
- Rotate credentials regularly and assign minimal scopes per app
4851
- Include feature flags to roll out new AI capabilities safely
@@ -79,4 +82,3 @@ The `t` and `v` are short codes for the type and value of the feature flag.
7982
- `v` = `value` (true | false, "beta", 1, etc.)
8083

8184
Only the feature flags you explicitly toggle on will be included.
82-

src/content/docs/machine-to-machine-applications/troubleshooting-m2m/troubleshoot-m2m-token-errors.mdx

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,93 +20,93 @@ These errors occur when calling the token endpoint (`/oauth2/token`).
2020
### `invalid_client`
2121

2222
**Cause:**
23+
2324
- The `client_id` or `client_secret` is incorrect
2425
- The app has been deleted or had its secret rotated
2526

2627
**Fix:**
28+
2729
- Double check your credentials in the Kinde dashboard
2830
- If you recently rotated the secret, make sure you're using the new one
2931

30-
31-
3232
### `unauthorized_client`
3333

3434
**Cause:**
35+
3536
- The app hasn’t been authorized to access the requested API (audience)
3637

3738
**Fix:**
39+
3840
- Go to the **APIs** tab on your M2M app in Kinde
3941
- Make sure the app is authorized to access the audience you're requesting
4042

41-
42-
4343
### `invalid_scope`
4444

4545
**Cause:**
46+
4647
- You requested a scope the app isn’t allowed to use
4748
- The scope wasn’t defined on the API or wasn't assigned to the app
4849

4950
**Fix:**
51+
5052
- Go to the **API** in the Kinde dashboard and verify that the scope exists
5153
- Go to the **Scopes** tab on your M2M app and assign the correct ones
5254

53-
54-
5555
### `invalid_request`
5656

5757
**Cause:**
58+
5859
- Missing or malformed parameters in the request
5960
- Common issues: missing `audience`, unsupported `grant_type`
6061

6162
**Fix:**
63+
6264
- Make sure your request includes:
6365
- `grant_type=client_credentials`
6466
- `client_id`, `client_secret`, and `audience`
6567
- Check your content type: must be `application/x-www-form-urlencoded`
6668

67-
68-
6969
## Token usage errors
7070

7171
These occur when using the token to call Kinde or your own API.
7272

7373
### `401 Unauthorized`
7474

7575
**Cause:**
76+
7677
- Missing or expired token
7778
- Malformed `Authorization` header
7879

7980
**Fix:**
81+
8082
- Make sure you're including the token in the request:
8183
```http
8284
Authorization: Bearer <token>
8385
```
8486
- Check that the token hasn’t expired (`exp` claim)
8587

86-
87-
8888
### `403 Forbidden`
8989

9090
**Cause:**
91+
9192
- The token is valid, but doesn’t have access to the resource
9293
- For org-scoped tokens: the `org_code` doesn’t match the route or resource
9394
- Required scopes are missing
9495

9596
**Fix:**
97+
9698
- Check the token’s `org_code` and compare to the resource being accessed
9799
- Check the token’s `scopes` and ensure the required permission is present
98100

99-
100-
101101
### Token doesn't include `org_code`
102102

103103
**Cause:**
104+
104105
- You’re using a global M2M app instead of an org-scoped one
105106

106107
**Fix:**
107-
- If you're expecting a token with `org_code`, create an [org-scoped M2M app](/build/applications/m2m-access-scoped-to-organizations/)
108-
109108

109+
- If you're expecting a token with `org_code`, create an [org-scoped M2M app](/machine-to-machine-applications/organization-scoped-m2m-apps/m2m-applications-for-organizations/)
110110

111111
## How to debug
112112

0 commit comments

Comments
 (0)