---
title: "Exchange or refresh an isolated Desktop, CLI, or MCP credential"
method: POST
path: "/v1/oauth/token"
tags: ["Auth"]
---

# Exchange or refresh an isolated Desktop, CLI, or MCP credential

`POST /v1/oauth/token`

## Request body

- union
  - AuthorizationCodeTokenRequest
    - `grant_type` 'authorization_code', required
    - `code` string, required
    - `client_id` string, required
    - `redirect_uri` string, uri, required
    - `code_verifier` string, required
  - DeviceCodeTokenRequest
    - `grant_type` 'urn:ietf:params:oauth:grant-type:device_code', required
    - `device_code` string, required
    - `client_id` string, required
  - RefreshTokenRequest
    - `grant_type` 'refresh_token', required
    - `refresh_token` string, required
    - `client_id` string, required

## Response `200`

OAuth token set

- OAuthTokenResponse
  - `access_token` string, required
  - `refresh_token` string, required
  - `token_type` 'Bearer', required
  - `expires_in` integer, required
  - `scope` string[], required

## Other responses

- `default` — Standard Cerul error envelope

## Changes

- **2026-07-27** `c15615d54993` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/cerul-ai/apis/cerul-api/changes/v1/oauth/token/post.md)

---

[API](https://skmtc.dev/cerul-ai/apis/cerul-api.md) · [All operations](https://skmtc.dev/cerul-ai/apis/cerul-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/cerul-ai/cerul-api/revisions/c15615d54993/schema)
