Start passkey MFA verification
curl --request POST \
--url https://api.privy.io/v1/users/{user_id}/mfa/passkey/verification/init \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--header 'privy-app-id: <privy-app-id>' \
--header 'privy-user-token: <privy-user-token>' \
--data '
{
"relying_party": "<string>"
}
'HttpResponse<String> response = Unirest.post("https://api.privy.io/v1/users/{user_id}/mfa/passkey/verification/init")
.header("privy-app-id", "<privy-app-id>")
.header("privy-user-token", "<privy-user-token>")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"relying_party\": \"<string>\"\n}")
.asString();const options = {
method: 'POST',
headers: {
'privy-app-id': '<privy-app-id>',
'privy-user-token': '<privy-user-token>',
Authorization: 'Basic <encoded-value>',
'Content-Type': 'application/json'
},
body: JSON.stringify({relying_party: '<string>'})
};
fetch('https://api.privy.io/v1/users/{user_id}/mfa/passkey/verification/init', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.privy.io/v1/users/{user_id}/mfa/passkey/verification/init",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'relying_party' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json",
"privy-app-id: <privy-app-id>",
"privy-user-token: <privy-user-token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.privy.io/v1/users/{user_id}/mfa/passkey/verification/init"
payload := strings.NewReader("{\n \"relying_party\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("privy-app-id", "<privy-app-id>")
req.Header.Add("privy-user-token", "<privy-user-token>")
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"options": {
"challenge": "<string>",
"timeout": 123,
"rp_id": "<string>",
"allow_credentials": [
{
"id": "<string>",
"type": "<string>",
"transports": [
"<string>"
]
}
],
"user_verification": "<string>",
"extensions": {
"app_id": "<string>",
"cred_props": true,
"hmac_create_secret": true
}
}
}Passkey
Start passkey MFA verification
Returns WebAuthn authentication options for the enrolled MFA passkeys.
POST
/
v1
/
users
/
{user_id}
/
mfa
/
passkey
/
verification
/
init
Start passkey MFA verification
curl --request POST \
--url https://api.privy.io/v1/users/{user_id}/mfa/passkey/verification/init \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--header 'privy-app-id: <privy-app-id>' \
--header 'privy-user-token: <privy-user-token>' \
--data '
{
"relying_party": "<string>"
}
'HttpResponse<String> response = Unirest.post("https://api.privy.io/v1/users/{user_id}/mfa/passkey/verification/init")
.header("privy-app-id", "<privy-app-id>")
.header("privy-user-token", "<privy-user-token>")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"relying_party\": \"<string>\"\n}")
.asString();const options = {
method: 'POST',
headers: {
'privy-app-id': '<privy-app-id>',
'privy-user-token': '<privy-user-token>',
Authorization: 'Basic <encoded-value>',
'Content-Type': 'application/json'
},
body: JSON.stringify({relying_party: '<string>'})
};
fetch('https://api.privy.io/v1/users/{user_id}/mfa/passkey/verification/init', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.privy.io/v1/users/{user_id}/mfa/passkey/verification/init",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'relying_party' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json",
"privy-app-id: <privy-app-id>",
"privy-user-token: <privy-user-token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.privy.io/v1/users/{user_id}/mfa/passkey/verification/init"
payload := strings.NewReader("{\n \"relying_party\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("privy-app-id", "<privy-app-id>")
req.Header.Add("privy-user-token", "<privy-user-token>")
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"options": {
"challenge": "<string>",
"timeout": 123,
"rp_id": "<string>",
"allow_credentials": [
{
"id": "<string>",
"type": "<string>",
"transports": [
"<string>"
]
}
],
"user_verification": "<string>",
"extensions": {
"app_id": "<string>",
"cred_props": true,
"hmac_create_secret": true
}
}
}Authorizations
Basic Auth header with your app ID as the username and your app secret as the password.
Headers
ID of your Privy app.
Access token or custom authentication JWT for the user the request acts on.
Minimum string length:
1Path Parameters
Body
application/json
Starts a passkey MFA ceremony for the specified relying party origin.
Origin where the authenticator runs, such as https://app.example.com.
Response
200 - application/json
WebAuthn authentication options.
WebAuthn authentication options for the started passkey MFA verification.
WebAuthn authentication options as defined by the Web Authentication specification.
Show child attributes
Show child attributes
Was this page helpful?

