Create a request for the Hanko Authenticator
curl --request POST \
--url https://api.hanko.io/v1/uaf/requests \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"username": "<string>",
"userId": "<string>",
"displayName": "<string>",
"clientData": {
"remoteAddress": "<string>",
"userAgent": "<string>"
},
"transaction": "<string>",
"deviceIds": [
"<string>"
],
"authenticatorSelectionCriteria": {
"requireResidentKey": true
},
"isSecondFactorOnly": true
}
'import requests
url = "https://api.hanko.io/v1/uaf/requests"
payload = {
"username": "<string>",
"userId": "<string>",
"displayName": "<string>",
"clientData": {
"remoteAddress": "<string>",
"userAgent": "<string>"
},
"transaction": "<string>",
"deviceIds": ["<string>"],
"authenticatorSelectionCriteria": { "requireResidentKey": True },
"isSecondFactorOnly": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
username: '<string>',
userId: '<string>',
displayName: '<string>',
clientData: {remoteAddress: '<string>', userAgent: '<string>'},
transaction: '<string>',
deviceIds: ['<string>'],
authenticatorSelectionCriteria: {requireResidentKey: true},
isSecondFactorOnly: true
})
};
fetch('https://api.hanko.io/v1/uaf/requests', 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.hanko.io/v1/uaf/requests",
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([
'username' => '<string>',
'userId' => '<string>',
'displayName' => '<string>',
'clientData' => [
'remoteAddress' => '<string>',
'userAgent' => '<string>'
],
'transaction' => '<string>',
'deviceIds' => [
'<string>'
],
'authenticatorSelectionCriteria' => [
'requireResidentKey' => true
],
'isSecondFactorOnly' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.hanko.io/v1/uaf/requests"
payload := strings.NewReader("{\n \"username\": \"<string>\",\n \"userId\": \"<string>\",\n \"displayName\": \"<string>\",\n \"clientData\": {\n \"remoteAddress\": \"<string>\",\n \"userAgent\": \"<string>\"\n },\n \"transaction\": \"<string>\",\n \"deviceIds\": [\n \"<string>\"\n ],\n \"authenticatorSelectionCriteria\": {\n \"requireResidentKey\": true\n },\n \"isSecondFactorOnly\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
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://api.hanko.io/v1/uaf/requests")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"username\": \"<string>\",\n \"userId\": \"<string>\",\n \"displayName\": \"<string>\",\n \"clientData\": {\n \"remoteAddress\": \"<string>\",\n \"userAgent\": \"<string>\"\n },\n \"transaction\": \"<string>\",\n \"deviceIds\": [\n \"<string>\"\n ],\n \"authenticatorSelectionCriteria\": {\n \"requireResidentKey\": true\n },\n \"isSecondFactorOnly\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hanko.io/v1/uaf/requests")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"username\": \"<string>\",\n \"userId\": \"<string>\",\n \"displayName\": \"<string>\",\n \"clientData\": {\n \"remoteAddress\": \"<string>\",\n \"userAgent\": \"<string>\"\n },\n \"transaction\": \"<string>\",\n \"deviceIds\": [\n \"<string>\"\n ],\n \"authenticatorSelectionCriteria\": {\n \"requireResidentKey\": true\n },\n \"isSecondFactorOnly\": true\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"username": "<string>",
"userId": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"validUntil": "2023-11-07T05:31:56Z",
"relyingParty": {
"id": "<string>",
"name": "<string>",
"appId": "<string>",
"icon": "<string>"
},
"links": [
{
"rel": "<string>",
"method": "<string>",
"href": "<string>"
}
],
"request": "<string>",
"deviceID": "<string>",
"clientData": {
"remoteAddress": "<string>",
"userAgent": "<string>"
},
"location": {
"country": "<string>",
"region": "<string>",
"city": "<string>"
},
"transaction": "<string>",
"device": {
"deviceId": "<string>",
"keyName": "<string>"
},
"isSecondFactorOnly": true,
"error": {
"code": 123,
"reason": "<string>"
}
}{
"code": 400,
"message": "Bad Request"
}{
"code": 401,
"message": "Unauthorized"
}{
"code": 500,
"message": "Internal Server Error"
}Hanko Authenticator
Create a request for the Hanko Authenticator
Initialize a registration, authentication, or de-registration operation for the Hanko Authenticator.
POST
/
v1
/
uaf
/
requests
Create a request for the Hanko Authenticator
curl --request POST \
--url https://api.hanko.io/v1/uaf/requests \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"username": "<string>",
"userId": "<string>",
"displayName": "<string>",
"clientData": {
"remoteAddress": "<string>",
"userAgent": "<string>"
},
"transaction": "<string>",
"deviceIds": [
"<string>"
],
"authenticatorSelectionCriteria": {
"requireResidentKey": true
},
"isSecondFactorOnly": true
}
'import requests
url = "https://api.hanko.io/v1/uaf/requests"
payload = {
"username": "<string>",
"userId": "<string>",
"displayName": "<string>",
"clientData": {
"remoteAddress": "<string>",
"userAgent": "<string>"
},
"transaction": "<string>",
"deviceIds": ["<string>"],
"authenticatorSelectionCriteria": { "requireResidentKey": True },
"isSecondFactorOnly": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
username: '<string>',
userId: '<string>',
displayName: '<string>',
clientData: {remoteAddress: '<string>', userAgent: '<string>'},
transaction: '<string>',
deviceIds: ['<string>'],
authenticatorSelectionCriteria: {requireResidentKey: true},
isSecondFactorOnly: true
})
};
fetch('https://api.hanko.io/v1/uaf/requests', 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.hanko.io/v1/uaf/requests",
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([
'username' => '<string>',
'userId' => '<string>',
'displayName' => '<string>',
'clientData' => [
'remoteAddress' => '<string>',
'userAgent' => '<string>'
],
'transaction' => '<string>',
'deviceIds' => [
'<string>'
],
'authenticatorSelectionCriteria' => [
'requireResidentKey' => true
],
'isSecondFactorOnly' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.hanko.io/v1/uaf/requests"
payload := strings.NewReader("{\n \"username\": \"<string>\",\n \"userId\": \"<string>\",\n \"displayName\": \"<string>\",\n \"clientData\": {\n \"remoteAddress\": \"<string>\",\n \"userAgent\": \"<string>\"\n },\n \"transaction\": \"<string>\",\n \"deviceIds\": [\n \"<string>\"\n ],\n \"authenticatorSelectionCriteria\": {\n \"requireResidentKey\": true\n },\n \"isSecondFactorOnly\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
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://api.hanko.io/v1/uaf/requests")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"username\": \"<string>\",\n \"userId\": \"<string>\",\n \"displayName\": \"<string>\",\n \"clientData\": {\n \"remoteAddress\": \"<string>\",\n \"userAgent\": \"<string>\"\n },\n \"transaction\": \"<string>\",\n \"deviceIds\": [\n \"<string>\"\n ],\n \"authenticatorSelectionCriteria\": {\n \"requireResidentKey\": true\n },\n \"isSecondFactorOnly\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hanko.io/v1/uaf/requests")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"username\": \"<string>\",\n \"userId\": \"<string>\",\n \"displayName\": \"<string>\",\n \"clientData\": {\n \"remoteAddress\": \"<string>\",\n \"userAgent\": \"<string>\"\n },\n \"transaction\": \"<string>\",\n \"deviceIds\": [\n \"<string>\"\n ],\n \"authenticatorSelectionCriteria\": {\n \"requireResidentKey\": true\n },\n \"isSecondFactorOnly\": true\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"username": "<string>",
"userId": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"validUntil": "2023-11-07T05:31:56Z",
"relyingParty": {
"id": "<string>",
"name": "<string>",
"appId": "<string>",
"icon": "<string>"
},
"links": [
{
"rel": "<string>",
"method": "<string>",
"href": "<string>"
}
],
"request": "<string>",
"deviceID": "<string>",
"clientData": {
"remoteAddress": "<string>",
"userAgent": "<string>"
},
"location": {
"country": "<string>",
"region": "<string>",
"city": "<string>"
},
"transaction": "<string>",
"device": {
"deviceId": "<string>",
"keyName": "<string>"
},
"isSecondFactorOnly": true,
"error": {
"code": 123,
"reason": "<string>"
}
}{
"code": 400,
"message": "Bad Request"
}{
"code": 401,
"message": "Unauthorized"
}{
"code": 500,
"message": "Internal Server Error"
}Remember the returned
id — you’ll need it to check the status of, validate, or cancel this operation.Authorizations
This API uses Authorization: secret <api_key>
rather than the standard Bearer scheme.
Body
application/json
The description
Available options:
AUTH, DEREG, REG Show child attributes
Show child attributes
Show child attributes
Show child attributes
Available options:
direct, indirect, none Response
The full Hanko request for an initialized authentication operation including links
Available options:
AUTH, DEREG, REG Available options:
PENDING, OK, FAILED, INVALIDATED Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Was this page helpful?
⌘I