Register and authenticate using WebAuthn APIs
Credentials
Request
Start a registration of WebAuthn credentials for a specified user. This requires an authorized authentication session created by a server side call to /auth-session/start-with-authorization. If successful, the response will contain a credential_creation_options field that should be passed in the WebAuthn navigator.credentials.create() API call. Note that some fields (user.id and challenge) in the credential_creation_options object are base64 encoded and must first be decoded and converted to an array buffer. It is recommended to use the webauthn-json library that handles this.
Device binding token, returned by the first client-side request from a device in the session (in the set-device-binding-token response header)
Session identifier that corresponds to an authorized session (created from the backend with an access token)
Account name for this Relying Party. This is used both for display purposes, as well as during recovery flows where the user is asked for the account name. Must match the username in the auth session.
- Sandbox environmenthttps://api.sbx.transmitsecurity.io/cis/v1/webauthn/register/start
- Production environment (US)https://api.transmitsecurity.io/cis/v1/webauthn/register/start
- Production environment (EU)https://api.eu.transmitsecurity.io/cis/v1/webauthn/register/start
- Production environment (CA)https://api.ca.transmitsecurity.io/cis/v1/webauthn/register/start
- Production environment (AU)https://api.au.transmitsecurity.io/cis/v1/webauthn/register/start
- cURL
- Node.js
- Go
- JavaScript
- Java
- Python
curl -i -X POST \
https://api.sbx.transmitsecurity.io/cis/v1/webauthn/register/start \
-H 'Content-Type: application/json' \
-H 'User-Agent: string' \
-H 'x-ts-device-binding-token: string' \
-d '{
"auth_session_id": "string",
"user": {
"username": "string",
"display_name": "string"
}
}'{ "webauthn_session_id": "string", "credential_creation_options": { "attestation": "none", "authenticatorSelection": { … }, "extensions": { … }, "excludeCredentials": [ … ], "pubKeyCredParams": [ … ], "timeout": 0, "challenge": "string", "user": { … }, "rp": { … } } }
Request
Complete the WebAuthn credential registration, and obtain the authorization code to exchange for user tokens. It's required to provide the webauthn_session_id that was recieved in the registration start response. Note that some fields (clientDataJSON and attestationObject) must be converted from array buffer to base64 strings. If webauthn-json create() was used this is already taken care of.
Device binding token, returned by the first client-side request from a device in the session (in the set-device-binding-token response header)
The client JSON data passed to the authenticator to generate the attestation
Key type. Should always be public-key
- Sandbox environmenthttps://api.sbx.transmitsecurity.io/cis/v1/webauthn/register/complete
- Production environment (US)https://api.transmitsecurity.io/cis/v1/webauthn/register/complete
- Production environment (EU)https://api.eu.transmitsecurity.io/cis/v1/webauthn/register/complete
- Production environment (CA)https://api.ca.transmitsecurity.io/cis/v1/webauthn/register/complete
- Production environment (AU)https://api.au.transmitsecurity.io/cis/v1/webauthn/register/complete
- cURL
- Node.js
- Go
- JavaScript
- Java
- Python
curl -i -X POST \
https://api.sbx.transmitsecurity.io/cis/v1/webauthn/register/complete \
-H 'Content-Type: application/json' \
-H 'User-Agent: string' \
-H 'x-ts-device-binding-token: string' \
-d '{
"auth_session_id": "string",
"webauthn_session_id": "string",
"public_key_credential": {
"id": "string",
"rawId": "string",
"response": {
"clientDataJSON": "string",
"attestationObject": "string"
},
"type": "public-key",
"authenticatorAttachment": "platform"
},
"double_signed_challenge": "string"
}'{ "credential": { "credential_id": "string", "public_key": "string" }, "auth_code": "string" }
Request
Start a new webauthn authentication. This requires an authentication session, but it can be created from the client side without authorization by calling /auth-session/start-restricted. If successful, the response will contain a credential_request_options field that should be passed in the WebAuthn navigator.credentials.get() API call. Note that some fields (challenge and each id in the allowCredentials list) in the credential_request_options object are base64 encoded and must first be decoded and converted to array buffer, it is recommended to use the webauthn-json library that handles this.
- Sandbox environmenthttps://api.sbx.transmitsecurity.io/cis/v1/webauthn/authenticate/start
- Production environment (US)https://api.transmitsecurity.io/cis/v1/webauthn/authenticate/start
- Production environment (EU)https://api.eu.transmitsecurity.io/cis/v1/webauthn/authenticate/start
- Production environment (CA)https://api.ca.transmitsecurity.io/cis/v1/webauthn/authenticate/start
- Production environment (AU)https://api.au.transmitsecurity.io/cis/v1/webauthn/authenticate/start
- cURL
- Node.js
- Go
- JavaScript
- Java
- Python
curl -i -X POST \
https://api.sbx.transmitsecurity.io/cis/v1/webauthn/authenticate/start \
-H 'Content-Type: application/json' \
-H 'x-ts-device-binding-token: string' \
-d '{
"auth_session_id": "string",
"username": "string"
}'Active WebAuthn session info
Key type. Should always be public-key
Represents the natural WebAuthn challenge. Will Only be present in approval flows
Relying Party ID. Must be a valid domain pre-configured in the Admin Portal for the application
{ "webauthn_session_id": "string", "credential_request_options": { "allowCredentials": [ … ], "rawChallenge": "string", "challenge": "string", "timeout": 0, "rpId": "string", "attestation": "none", "userVerification": "preferred", "extensions": {} } }
Request
Complete the WebAuthn credential assertion, and obtain the authorization code to exchange for user tokens. It's required to provide the webauthn_session_id that was received in the authentication start response. Note that some fields in the public_key_credential.response object must be converted from array buffer to base64 strings (clientDataJSON, authenticatorData, signature and userHandle). If webauthn-json get() was used this is already taken care of.
Device binding token, returned by the first client-side request from a device in the session (in the set-device-binding-token response header)
Key type. Should always be public-key
- Sandbox environmenthttps://api.sbx.transmitsecurity.io/cis/v1/webauthn/authenticate/complete
- Production environment (US)https://api.transmitsecurity.io/cis/v1/webauthn/authenticate/complete
- Production environment (EU)https://api.eu.transmitsecurity.io/cis/v1/webauthn/authenticate/complete
- Production environment (CA)https://api.ca.transmitsecurity.io/cis/v1/webauthn/authenticate/complete
- Production environment (AU)https://api.au.transmitsecurity.io/cis/v1/webauthn/authenticate/complete
- cURL
- Node.js
- Go
- JavaScript
- Java
- Python
curl -i -X POST \
https://api.sbx.transmitsecurity.io/cis/v1/webauthn/authenticate/complete \
-H 'Content-Type: application/json' \
-H 'User-Agent: string' \
-H 'x-ts-device-binding-token: string' \
-d '{
"auth_session_id": "string",
"webauthn_session_id": "string",
"public_key_credential": {
"id": "string",
"rawId": "string",
"response": {
"authenticatorData": "string",
"clientDataJSON": "string",
"signature": "string",
"userHandle": "string"
},
"type": "public-key",
"authenticatorAttachment": "platform"
},
"double_signed_challenge": "string"
}'{ "auth_code": "string", "credential": { "credential_id": "string", "public_key": "string", "registered_at": "string", "last_used": "string" } }
Request
Start a new webauthn passkey authentication. This requires an authentication session, but it can be created from the client side without authorization by calling /auth-session/start-restricted. If successful, the response will contain a credential_request_options field that should be passed in the WebAuthn navigator.credentials.get() API call. Note that some fields (challenge and each id in the allowCredentials list) in the credential_request_options object are base64 encoded and must first be decoded and converted to array buffer, it is recommended to use the webauthn-json library that handles this.
- Sandbox environmenthttps://api.sbx.transmitsecurity.io/cis/v1/webauthn/authenticate/passkey/start
- Production environment (US)https://api.transmitsecurity.io/cis/v1/webauthn/authenticate/passkey/start
- Production environment (EU)https://api.eu.transmitsecurity.io/cis/v1/webauthn/authenticate/passkey/start
- Production environment (CA)https://api.ca.transmitsecurity.io/cis/v1/webauthn/authenticate/passkey/start
- Production environment (AU)https://api.au.transmitsecurity.io/cis/v1/webauthn/authenticate/passkey/start
- cURL
- Node.js
- Go
- JavaScript
- Java
- Python
curl -i -X POST \
https://api.sbx.transmitsecurity.io/cis/v1/webauthn/authenticate/passkey/start \
-H 'Content-Type: application/json' \
-H 'x-ts-device-binding-token: string' \
-d '{
"auth_session_id": "string"
}'Active WebAuthn session info
Key type. Should always be public-key
Represents the natural WebAuthn challenge. Will Only be present in approval flows
Relying Party ID. Must be a valid domain pre-configured in the Admin Portal for the application
{ "webauthn_session_id": "string", "credential_request_options": { "allowCredentials": [ … ], "rawChallenge": "string", "challenge": "string", "timeout": 0, "rpId": "string", "attestation": "none", "userVerification": "preferred", "extensions": {} } }
Request
Complete the WebAuthn credential assertion, and obtain the authorization code to exchange for user tokens. It's required to provide the webauthn_session_id that was received in the authentication start response. Note that some fields in the public_key_credential.response object must be converted from array buffer to base64 strings (clientDataJSON, authenticatorData, signature and userHandle). If webauthn-json get() was used this is already taken care of.
Device binding token, returned by the first client-side request from a device in the session (in the set-device-binding-token response header)
Key type. Should always be public-key
- Sandbox environmenthttps://api.sbx.transmitsecurity.io/cis/v1/webauthn/authenticate/passkey/complete
- Production environment (US)https://api.transmitsecurity.io/cis/v1/webauthn/authenticate/passkey/complete
- Production environment (EU)https://api.eu.transmitsecurity.io/cis/v1/webauthn/authenticate/passkey/complete
- Production environment (CA)https://api.ca.transmitsecurity.io/cis/v1/webauthn/authenticate/passkey/complete
- Production environment (AU)https://api.au.transmitsecurity.io/cis/v1/webauthn/authenticate/passkey/complete
- cURL
- Node.js
- Go
- JavaScript
- Java
- Python
curl -i -X POST \
https://api.sbx.transmitsecurity.io/cis/v1/webauthn/authenticate/passkey/complete \
-H 'Content-Type: application/json' \
-H 'User-Agent: string' \
-H 'x-ts-device-binding-token: string' \
-d '{
"auth_session_id": "string",
"webauthn_session_id": "string",
"public_key_credential": {
"id": "string",
"rawId": "string",
"response": {
"authenticatorData": "string",
"clientDataJSON": "string",
"signature": "string",
"userHandle": "string"
},
"type": "public-key",
"authenticatorAttachment": "platform"
}
}'{ "auth_code": "string", "credential": { "credential_id": "string", "public_key": "string", "registered_at": "string", "last_used": "string" } }