RFC-0042, explained · Platform team
Tokens now rotate. Here's what changes for you.
Access tokens expire after 15 minutes and refresh tokens are single-use. Every refresh hands you a new pair. Old-style /v1/token stops working on November 1.
If you only read one line: move to /v2/token, store the new refresh token after every exchange, and treat a 401 invalid_grant as "start over."
How a session works now
What you need to do
Web team
Switch the token endpoint to /v2/token. After each refresh, overwrite the stored refresh token; the old one is dead the moment the new one arrives.
Mobile team
Same change, and it has to be in the October release train so app stores propagate before the deadline. Assume some users update late: handle 410 gracefully.
Partners
Upgrade to SDK 4.2.0 or later. Rotation is handled for you. Anything older stops authenticating on November 1.
The clock on this
The rules, without the RFC voice
| Situation | What happens | What to do |
|---|---|---|
| Access token is older than 15 minutes | Requests fail | Refresh. Don't cache past expiry. |
| You refresh | You get a new access token and a new refresh token | Store the new refresh token immediately |
| You reuse a refresh token you already spent | Treated as a compromise; every token in the session is revoked | You'll get 401 invalid_grant. Clear state and sign in again. |
| Your clock is a little off | Tokens are accepted up to 60 seconds past expiry | Don't design around this |
Deadline: November 1, 2026. After that, /v1/token returns 410 and nothing on it works. Questions go to #platform or on this page.