Token Endpoint
Issues access_token and refresh_token. Supports two grant types:
authorization_code: exchanges the authorization code for tokens. Requirescode_verifier(PKCE).refresh_token: exchanges a refresh token for a new token pair. Refresh tokens rotate on each use — store the new token immediately.
Rate limits: 60 req/min per IP; 30 req/min per client_id.
Confidential clients authenticate via HTTP Basic (Authorization: Basic BASE64(client_id:client_secret)) or body params. Public clients omit credentials.
Request Body
application/x-www-form-urlencoded
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://api.whatalo.com/oauth/token" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d 'grant_type=authorization_code'{
"access_token": "DlcGJFC7UmSx2fYKj7Bg3jhT9QgpyIzNcx7OGAoFu8U",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "LKr5XU5xyiD0XscBPSO9tm0DsSK2AKsWL2fOe9an6v8",
"scope": "read:products read:orders"
}{
"error": "invalid_grant",
"error_description": "Authorization code has expired or was already used"
}{
"error": "invalid_client",
"error_description": "Client authentication failed"
}{
"error": "rate_limit_exceeded",
"error_description": "Too many token requests. Retry after 30 seconds."
}