OAuth hosted login: start a passkey sign-in
/oauth/login/passkey/optionsStarts a passkey sign-in on the hosted sign-in page for the Environment of client_id: returns { passkey_token, options }, the WebAuthn request options (as raw JSON for the browser's navigator.credentials.get()) for the hosted page's relying party (Canopy's, or the custom auth domain the page is on) with allowCredentials empty and userVerification: required, and the single-use token that carries the challenge for five minutes. Responds with 400 and { error } for an unknown client or an Environment with passkey sign-in off. Throttled to 30 requests per 10 minutes.
Request body
application/json
client_idstring Required Responses
application/json
passkey_token *stringSingle-use token carrying this sign-in's challenge, valid five minutes. Send it back with the assertion.
options *any object`PublicKeyCredentialRequestOptionsJSON` to pass to `navigator.credentials.get()`. `allowCredentials` is empty, so the browser offers the passkeys it holds for the relying party, and `userVerification` is `required`.
application/json
error *stringWhat went wrong, for the page to show; `expired` when the session ran out
application/json
error *ApiErrorBodyDto
Rate limit
Returned object
curl -X POST "https://auth.canopy-io.com/oauth/login/passkey/options" \ -H "Content-Type: application/json" \ -d '{ "client_id": "string" }'
{ "passkey_token": "string", "options": {} }
Tell us how we can improve this guide.