invalid_grant
Returned by the token endpoint when the presented grant cannot be
exchanged:
- The authorization code expired (10-minute TTL), was already used
(single-use), or was issued to a different
client_id/redirect_uri. - The PKCE
code_verifierdoesn’t match thecode_challengesent to/authorize. - The refresh token is expired, revoked, or belongs to a revoked family.
/authorize — do not retry the
exchange with the same grant. See OAuth §3–4.