---
title: "Exchange or refresh an OAuth token"
method: POST
path: "/oauth/token"
tags: ["OAuth"]
---

# Exchange or refresh an OAuth token

`POST /oauth/token`

## Request

- Base URL: `https://spoonjoy.app`
- URL: `https://spoonjoy.app/oauth/token`
- Auth: none required

## Response `200`

Token response

- OAuthTokenResponse
  - `access_token` string, required
  - `refresh_token` string, required
  - `token_type` 'Bearer', required
  - `expires_in` 900 | 7776000: Seconds until the access token expires: 900 (15 minutes) for generic OAuth clients and 7776000 (90 days) for MCP-bound connections. Refresh before it runs out; each refresh_token is accepted for 180 days after it was issued.
  - `scope` string, required

## Other responses

- `400`: OAuth error
- `429`: Rate limited. This is the generic Spoonjoy rate-limit shape, not a standard OAuth error.

---

[API](https://skmtc.dev/spoonjoy/apis/spoonjoy-api.md) · [All operations](https://skmtc.dev/spoonjoy/apis/spoonjoy-api/llms.txt) · [OpenAPI document](https://skmtc.dev/spoonjoy/apis/spoonjoy-api/revisions/b96eb5d4697d?raw)
