---
title: "POST /v1/keys.refresh"
method: POST
path: "/v1/keys.refresh"
tags: ["keys"]
---

# POST /v1/keys.refresh

`POST /v1/keys.refresh`

Exchanges a refresh token (sent as the Bearer credential) for a freshly rotated access + refresh pair. Self-service for the token holder — no secret key required. The previous refresh token is honored for one rotation as a grace window; replaying an older one revokes the customer's tokens.

## Headers

- `x-api-version` string, required

## Request body

- object — No body. The refresh token is supplied as the Bearer credential; the response is a freshly rotated access + refresh pair.

## Response `200`

OK

- object
  - `access_token` string, required — Access token (1h, or non-expiring if indefinite), prefixed `am_jwt_`.
  - `refresh_token` string — Rotating refresh token (24h). Omitted for indefinite tokens.
  - `expires_at` number, nullable, required — Access-token expiry, ms since epoch. null for indefinite tokens.
  - `refresh_expires_at` number — Refresh-token expiry, ms since epoch. Omitted for indefinite tokens.

---

[API](https://skmtc.net/useautumn/apis/autumn-api.md) · [All operations](https://skmtc.net/useautumn/apis/autumn-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/useautumn/autumn-api/revisions/29536933c0dc/schema)
