stack/docs-mintlify/api/client/oauth/token.mdx
Madison 13fccd32b6
Some checks failed
all-good: Did all the other checks pass? / all-good (push) Has been cancelled
Ensure Prisma migrations are in sync with the schema / check_prisma_migrations (22.x) (push) Has been cancelled
DB migration compat / Check if migrations changed (push) Has been cancelled
Docker Server Build and Push / Docker Build and Push Server (push) Has been cancelled
Docker Server Build and Run / docker (push) Has been cancelled
Runs E2E API Tests (Local Emulator) / E2E Tests (Local Emulator, Node ${{ matrix.node-version }}) (22.x) (push) Has been cancelled
Runs E2E API Tests / E2E Tests (Node ${{ matrix.node-version }}, Freestyle ${{ matrix.freestyle-mode }}) (mock, 22.x) (push) Has been cancelled
Runs E2E API Tests / E2E Tests (Node ${{ matrix.node-version }}, Freestyle ${{ matrix.freestyle-mode }}) (prod, 22.x) (push) Has been cancelled
Runs E2E API Tests with custom port prefix / build (22.x) (push) Has been cancelled
Lint & build / lint_and_build (latest) (push) Has been cancelled
Dev Environment Test With Custom Base Port / restart-dev-and-test-with-custom-base-port (push) Has been cancelled
Dev Environment Test / restart-dev-and-test (push) Has been cancelled
Run setup tests with custom base port / setup-tests-with-custom-base-port (push) Has been cancelled
Run setup tests / setup-tests (push) Has been cancelled
TOC Generator / TOC Generator (push) Has been cancelled
DB migration compat / Back-compat — Current branch migrations with ${{ needs.check-migrations-changed.outputs.base_branch }} branch code (push) Has been cancelled
DB migration compat / Forward-compat — Current branch code with ${{ needs.check-migrations-changed.outputs.base_branch }} branch migrations (push) Has been cancelled
DB migration compat / No migration changes (skipped) (push) Has been cancelled
Add docs-mintlify to root
2026-04-01 14:58:41 -05:00

77 lines
2.1 KiB
Plaintext

---
title: "OAuth Token Exchange"
description: "Exchange an authorization code or refresh token for an access token."
api: "POST /api/v1/auth/oauth/token"
---
## Request
<ParamField header="x-stack-publishable-client-key" type="string" required>
The publishable client key for authentication.
</ParamField>
<ParamField header="x-stack-project-id" type="string" required>
The project ID.
</ParamField>
<ParamField body="grant_type" type="string" required>
The type of grant being exchanged (e.g., `authorization_code` or `refresh_token`).
</ParamField>
<ParamField body="code" type="string">
The authorization code to exchange. Required when `grant_type` is `authorization_code`.
</ParamField>
<ParamField body="redirect_uri" type="string">
The redirect URI that was used during the authorization request.
</ParamField>
<ParamField body="refresh_token" type="string">
The refresh token to exchange. Required when `grant_type` is `refresh_token`.
</ParamField>
<ParamField body="code_verifier" type="string">
The PKCE code verifier, if PKCE was used during authorization.
</ParamField>
## Response
<ResponseField name="access_token" type="string">
The access token for the authenticated user.
</ResponseField>
<ResponseField name="refresh_token" type="string">
The refresh token for obtaining new access tokens.
</ResponseField>
<ResponseField name="token_type" type="string">
The type of token (e.g., `bearer`).
</ResponseField>
<ResponseField name="expires_in" type="number">
The number of seconds until the access token expires.
</ResponseField>
<CodeGroup>
```bash cURL
curl -X POST 'https://api.stack-auth.com/api/v1/auth/oauth/token' \
-H 'Content-Type: application/json' \
-H 'x-stack-publishable-client-key: YOUR_PUBLISHABLE_CLIENT_KEY' \
-H 'x-stack-project-id: YOUR_PROJECT_ID' \
-d '{
"grant_type": "authorization_code",
"code": "AUTH_CODE_HERE",
"redirect_uri": "https://example.com/callback"
}'
```
```json 200 Response
{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"refresh_token": "abc123def456...",
"token_type": "bearer",
"expires_in": 3600
}
```
</CodeGroup>