Create a passkey session URL for WebAuthn ceremonies
curl --request POST \
--url https://developer-api.squads.so/api/v1/passkeys \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-squads-network: <x-squads-network>' \
--data '
{
"metaInfo": {
"appName": "<string>",
"redirectUrl": "<string>"
},
"baseUrl": "<string>"
}
'import requests
url = "https://developer-api.squads.so/api/v1/passkeys"
payload = {
"metaInfo": {
"appName": "<string>",
"redirectUrl": "<string>"
},
"baseUrl": "<string>"
}
headers = {
"x-squads-network": "<x-squads-network>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-squads-network': '<x-squads-network>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({metaInfo: {appName: '<string>', redirectUrl: '<string>'}, baseUrl: '<string>'})
};
fetch('https://developer-api.squads.so/api/v1/passkeys', 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://developer-api.squads.so/api/v1/passkeys",
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([
'metaInfo' => [
'appName' => '<string>',
'redirectUrl' => '<string>'
],
'baseUrl' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"x-squads-network: <x-squads-network>"
],
]);
$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://developer-api.squads.so/api/v1/passkeys"
payload := strings.NewReader("{\n \"metaInfo\": {\n \"appName\": \"<string>\",\n \"redirectUrl\": \"<string>\"\n },\n \"baseUrl\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-squads-network", "<x-squads-network>")
req.Header.Add("Authorization", "Bearer <token>")
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))
}HttpResponse<String> response = Unirest.post("https://developer-api.squads.so/api/v1/passkeys")
.header("x-squads-network", "<x-squads-network>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"metaInfo\": {\n \"appName\": \"<string>\",\n \"redirectUrl\": \"<string>\"\n },\n \"baseUrl\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://developer-api.squads.so/api/v1/passkeys")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-squads-network"] = '<x-squads-network>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"metaInfo\": {\n \"appName\": \"<string>\",\n \"redirectUrl\": \"<string>\"\n },\n \"baseUrl\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"url": "<string>"
}{
"status": 123,
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>",
"expected": "<string>",
"actual": "<string>"
}
],
"metadata": {
"status": 123,
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"resource_id": "<string>",
"useful_links": [
"<string>"
]
},
"custom": {},
"simulation_logs": [
"<string>"
]
}{
"status": 123,
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>",
"expected": "<string>",
"actual": "<string>"
}
],
"metadata": {
"status": 123,
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"resource_id": "<string>",
"useful_links": [
"<string>"
]
},
"custom": {},
"simulation_logs": [
"<string>"
]
}{
"status": 123,
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>",
"expected": "<string>",
"actual": "<string>"
}
],
"metadata": {
"status": 123,
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"resource_id": "<string>",
"useful_links": [
"<string>"
]
},
"custom": {},
"simulation_logs": [
"<string>"
]
}Passkeys
Create or Authenticate
Create a new passkey or authenticate with an existing passkey
POST
/
api
/
v1
/
passkeys
Create a passkey session URL for WebAuthn ceremonies
curl --request POST \
--url https://developer-api.squads.so/api/v1/passkeys \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-squads-network: <x-squads-network>' \
--data '
{
"metaInfo": {
"appName": "<string>",
"redirectUrl": "<string>"
},
"baseUrl": "<string>"
}
'import requests
url = "https://developer-api.squads.so/api/v1/passkeys"
payload = {
"metaInfo": {
"appName": "<string>",
"redirectUrl": "<string>"
},
"baseUrl": "<string>"
}
headers = {
"x-squads-network": "<x-squads-network>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-squads-network': '<x-squads-network>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({metaInfo: {appName: '<string>', redirectUrl: '<string>'}, baseUrl: '<string>'})
};
fetch('https://developer-api.squads.so/api/v1/passkeys', 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://developer-api.squads.so/api/v1/passkeys",
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([
'metaInfo' => [
'appName' => '<string>',
'redirectUrl' => '<string>'
],
'baseUrl' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"x-squads-network: <x-squads-network>"
],
]);
$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://developer-api.squads.so/api/v1/passkeys"
payload := strings.NewReader("{\n \"metaInfo\": {\n \"appName\": \"<string>\",\n \"redirectUrl\": \"<string>\"\n },\n \"baseUrl\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-squads-network", "<x-squads-network>")
req.Header.Add("Authorization", "Bearer <token>")
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))
}HttpResponse<String> response = Unirest.post("https://developer-api.squads.so/api/v1/passkeys")
.header("x-squads-network", "<x-squads-network>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"metaInfo\": {\n \"appName\": \"<string>\",\n \"redirectUrl\": \"<string>\"\n },\n \"baseUrl\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://developer-api.squads.so/api/v1/passkeys")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-squads-network"] = '<x-squads-network>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"metaInfo\": {\n \"appName\": \"<string>\",\n \"redirectUrl\": \"<string>\"\n },\n \"baseUrl\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"url": "<string>"
}{
"status": 123,
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>",
"expected": "<string>",
"actual": "<string>"
}
],
"metadata": {
"status": 123,
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"resource_id": "<string>",
"useful_links": [
"<string>"
]
},
"custom": {},
"simulation_logs": [
"<string>"
]
}{
"status": 123,
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>",
"expected": "<string>",
"actual": "<string>"
}
],
"metadata": {
"status": 123,
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"resource_id": "<string>",
"useful_links": [
"<string>"
]
},
"custom": {},
"simulation_logs": [
"<string>"
]
}{
"status": 123,
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>",
"expected": "<string>",
"actual": "<string>"
}
],
"metadata": {
"status": 123,
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"resource_id": "<string>",
"useful_links": [
"<string>"
]
},
"custom": {},
"simulation_logs": [
"<string>"
]
}Creates a passkey session URL for WebAuthn ceremonies using the hosted UI. This is the recommended approach for most applications.
For detailed implementation examples and integration steps, see the Passkey Integration Guide.
Key Notes
- Challenge Expiration: URL challenges expire after 60 seconds
- Hosted UI: Default
baseUrluses production-ready hosted interface - Custom Domain: Use custom
baseUrlfor your own domain (see Custom Domain)
Authorizations
UUID-based API key provided by Squads
Headers
Specifies the network for the API request
Available options:
mainnet, devnet Body
application/json
'create' for new passkey registration, 'auth' for authentication with an existing passkey, 'get' for retrieving existing passkey account
Available options:
create, auth, get Show child attributes
Show child attributes
Required for 'auth' action.
Show child attributes
Show child attributes
Optional custom base URL for the passkey UI (defaults to https://passkey.grid.squads.xyz)
Response
Passkey session URL created successfully
Hosted UI URL for the passkey ceremony
Was this page helpful?
⌘I