Device authorization (V2)
Starts the RFC 8628 device flow for input-constrained devices — TVs, consoles, set-top boxes, CLIs.
Show the returned user_code to the user and send them to verification_uri, then poll POST /oauth2/token with the device_code and grant_type=urn:ietf:params:oauth:grant-type:device_code.
The user_code is 8 characters, displayed as XXXX-YYYY. Entry is forgiving: it is case-insensitive, hyphens and spaces are optional, and the letters I, L and O are accepted in place of 1, 1 and 0. You do not need to validate the user’s typing yourself.
Requires a client_id registered for OAuth V2. An AUTH V1 app cannot use this endpoint and is rejected with invalid_client.
Omitting scope grants media:read only.
Body format
Both application/x-www-form-urlencoded (the RFC 6749 section 3.2 default) and application/json are accepted. Every parameter must be a plain string. Sending an array or object for any parameter returns 400 invalid_request naming the offending parameter.
Every /oauth2/* response is sent with Cache-Control: no-store and Pragma: no-cache. Do not cache these responses, including the errors.
Body
Response
Device authorization started.
RFC 8628 section 3.2 device authorization response.
Secret handle the device polls with. Never show this to the user.
The 8-character code the user types, formatted XXXX-YYYY. Display it exactly as returned.
"BDWP-HQPK"
Where the user goes to enter the code.
"https://simkl.com/pin"
The same page with the code pre-filled. Ideal for a QR code, since the user then types nothing.
"https://simkl.com/pin?user_code=BDWP-HQPK"
Seconds until the device code expires. 900, i.e. 15 minutes.
900
Minimum seconds between polls. 5.
5