application/x-www-form-urlencodedgrant_type selects which field set is required):authorization_code: exchange a code from /oauth/authorize for acode, redirect_uri, client_id, and thecode_verifier (43–128 chars). A code is single-use andrefresh_token: exchange a refresh token for a new pair. Requiresrefresh_token. Rotates on every use: presenting an already-usedCache-Control: no-store).curl --location 'https://upload.tf/api/v1/api/oauth/token' \
--header 'x-api-key: <api-key>' \
--data-urlencode 'grant_type=' \
--data-urlencode 'code=' \
--data-urlencode 'redirect_uri=' \
--data-urlencode 'client_id=' \
--data-urlencode 'code_verifier=' \
--data-urlencode 'refresh_token='{
"access_token": "utf_at_…",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "utf_rt_…",
"scope": "sites:read sites:write"
}