The MyAccount WebAuthn API provides operations to enroll, list, and delete WebAuthn enrollments.
Note: When the Passkeys Rebrand self-service Early Access feature is enabled, the FIDO2 (WebAuthn) authenticator is called Passkeys (FIDO2 WebAuthn), and there are new settings and updates to the authenticator page layout. See Configure the FIDO2 (WebAuthn) authenticator and
settings. To enable the Passkeys Rebrand feature, see Enable self-service features.
The registration for a WebAuthn authenticator (also known as the "attestation ceremony") involves a challenge request and response. When you enroll a WebAuthn authenticator, use the following endpoints in this order:
A valid API version in the Accept header is required to access the API. Current version: 1.0.0
Accept: application/json; okta-version=1.0.0
Lists all of the specified user's WebAuthn enrollments
Success
Unauthorized
Not Acceptable (missing header)
[- {
- "id": "fwfn3c3rryqStmyp20g4",
- "status": "ACTIVE",
- "type": "security_key",
- "key": "webauthn",
- "name": "YubiKey 5 FIPS",
- "credentialId": "5Ht9dBHqs8q2PbfWEuxqoDsnkO16KR_58GUju5MdSa__W_X7d5mQbkFSp273fxPX",
- "created": "2025-04-22T17:24:27.000Z",
- "lastUpdated": "2025-04-22T17:24:27.000Z",
- "_links": {
- "self": {
- "hints": {
- "allow": [
- "GET",
- "DELETE"
]
}
}
}
}
]Creates a WebAuthn enrollment. Before using this endpoint, ensure that you've used the Start a WebAuthn enrollment endpoint first.
| attestation required | string JSON-serialized data that contains the authenticator data and attestation statement |
| clientData required | string JSON-serialized data that's passed to the WebAuthn authenticator by the client to generate the WebAuthn credentials |
| clientExtensions | string JSON-serialized data that contains authenticator extensions |
| transports | string JSON-serialized data that contains the transport values that the authenticator is believed to support |
Success
Bad Request
Unauthorized
Not Found
Not Acceptable (missing header)
{- "clientData": "eyJjaGFsbGVuZ...",
- "attestation": "o2NmbXRoZmlk...",
- "clientExtensions": "{\"credProps\":{\"rk\":true}}",
- "transports": "[\"internal\"]"
}{- "id": "fwfn3c3rryqStmyp20g4",
- "status": "ACTIVE",
- "type": "security_key",
- "key": "webauthn",
- "name": "YubiKey 5 FIPS",
- "credentialId": "5Ht9dBHqs8q2PbfWEuxqoDsnkO16KR_58GUju5MdSa__W_X7d5mQbkFSp273fxPX",
- "created": "2025-04-22T17:24:27.000Z",
- "lastUpdated": "2025-04-22T17:24:27.000Z",
- "_links": {
- "self": {
- "hints": {
- "allow": [
- "GET",
- "DELETE"
]
}
}
}
}Starts the enrollment process for a WebAuthn authenticator. Complete the enrollment process by using the Create a WebAuthn enrollment endpoint.
Do not supply a request body for this operation. To start the enrollment process, send a POST request to the /idp/myaccount/webauthn/registration endpoint. The response contains the challenge and options for the WebAuthn credential creation.
Success
Bad Request
Unauthorized
Forbidden
Not Acceptable (missing header)
{- "options": {
- "rp": {
- "name": "example"
}, - "user": {
- "displayName": "display name",
- "name": "displayname@okta.com",
- "id": "00ule5sHbd9kmYHtw0g4"
}, - "pubKeyCredParams": [
- {
- "type": "public-key",
- "alg": -7
}, - {
- "type": "public-key",
- "alg": -257
}
], - "challenge": "vuSSUc8Nkd-8b2InKe3Y0SjEB4Nm6rdf",
- "attestation": "direct",
- "authenticatorSelection": {
- "userVerification": "discouraged",
- "requireResidentKey": false,
- "residentKey": "preferred"
}, - "excludeCredentials": [
- {
- "type": "public-key",
- "id": "5Ht9dBHqs8q2PbfWEuxqoDsnkO16KR_58GUju5MdSa__W_X7d5mQbkFSp273fxPX"
}
]
}, - "expiresAt": "2025-04-30T18:04:33.000Z",
- "_links": {
}
}Retrieves a WebAuthn enrollment
Success
Unauthorized
Not Found
Not Acceptable (missing header)
{- "id": "fwfn3c3rryqStmyp20g4",
- "status": "ACTIVE",
- "type": "security_key",
- "key": "webauthn",
- "name": "YubiKey 5 FIPS",
- "credentialId": "5Ht9dBHqs8q2PbfWEuxqoDsnkO16KR_58GUju5MdSa__W_X7d5mQbkFSp273fxPX",
- "created": "2025-04-22T17:24:27.000Z",
- "lastUpdated": "2025-04-22T17:24:27.000Z",
- "_links": {
- "self": {
- "hints": {
- "allow": [
- "GET",
- "DELETE"
]
}
}
}
}Deletes a specified WebAuthn enrollment
No Content
Unauthorized
Not Found
Not Acceptable (missing header)
{- "errorCode": "E0000015",
- "errorSummary": "You do not have permission to access the feature you are requesting",
- "errorLink": "E0000015",
- "errorId": "oaeStOuPPxDRUm3PJhf-tL7bQ",
- "errorCauses": [ ]
}