Request
The field is named
code, not device_code. The device-authorize
response calls it device_code; the field you send it back in is code. A
request with an empty code is rejected as a malformed request.Response
The token response is returned bare. Unlike the/v1 endpoints, it is not
wrapped in a data envelope — read the fields off the top level of the body.
The access token’s claims carry
iss (the management API host), sub (your
user id), aud (the client_id), account_id, scope, iat, and exp.
A successful exchange consumes the device session — the device code is
single-use.
Polling responses
Poll on theinterval returned by /oauth/device/authorize. The exchange sits
in one of four states.
Branch on the status code. A 400 does not distinguish “not decided yet” from
“this code is finished”, so a correct client polls on the interval and gives up
after a bounded number of attempts rather than waiting for a terminal 400.
A denial deletes the device session, so a poll after a 403 reports the code as
unusable rather than denied.
Status codes
There is no rate limit on this endpoint.