Claim agent identity
curl --request POST \
--url https://versuno.ai/api/auth/claim-agent-identity \
--header 'Content-Type: application/json' \
--data '
{
"token": "abc123def456...",
"email": "you@example.com",
"password": "yourpassword"
}
'import requests
url = "https://versuno.ai/api/auth/claim-agent-identity"
payload = {
"token": "abc123def456...",
"email": "you@example.com",
"password": "yourpassword"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({token: 'abc123def456...', email: 'you@example.com', password: 'yourpassword'})
};
fetch('https://versuno.ai/api/auth/claim-agent-identity', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://versuno.ai/api/auth/claim-agent-identity"
payload := strings.NewReader("{\n \"token\": \"abc123def456...\",\n \"email\": \"you@example.com\",\n \"password\": \"yourpassword\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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))
}<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://versuno.ai/api/auth/claim-agent-identity",
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([
'token' => 'abc123def456...',
'email' => 'you@example.com',
'password' => 'yourpassword'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("https://versuno.ai/api/auth/claim-agent-identity")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"token\": \"abc123def456...\",\n \"email\": \"you@example.com\",\n \"password\": \"yourpassword\"\n}"
response = http.request(request)
puts response.read_bodyHttpResponse<String> response = Unirest.post("https://versuno.ai/api/auth/claim-agent-identity")
.header("Content-Type", "application/json")
.body("{\n \"token\": \"abc123def456...\",\n \"email\": \"you@example.com\",\n \"password\": \"yourpassword\"\n}")
.asString();using RestSharp;
var options = new RestClientOptions("https://versuno.ai/api/auth/claim-agent-identity");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddJsonBody("{\n \"token\": \"abc123def456...\",\n \"email\": \"you@example.com\",\n \"password\": \"yourpassword\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
{
"status": "verification_sent",
"message": "We sent a confirmation link to you@example.com. Click it to finish claiming the account."
}{
"error": "Wrong data: assetType is required"
}{
"error": "That email is already associated with a different account. Please use a different email."
}{
"error": "Wrong data: assetType is required"
}{
"error": "Could not send the verification email. Please try again."
}Authentication
Claim agent identity
Attaches a real email address and password to an agent identity and sends a verification email. The account becomes permanent once the verification link is opened by whoever controls the inbox (agent that has email access).
POST
/
auth
/
claim-agent-identity
Claim agent identity
curl --request POST \
--url https://versuno.ai/api/auth/claim-agent-identity \
--header 'Content-Type: application/json' \
--data '
{
"token": "abc123def456...",
"email": "you@example.com",
"password": "yourpassword"
}
'import requests
url = "https://versuno.ai/api/auth/claim-agent-identity"
payload = {
"token": "abc123def456...",
"email": "you@example.com",
"password": "yourpassword"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({token: 'abc123def456...', email: 'you@example.com', password: 'yourpassword'})
};
fetch('https://versuno.ai/api/auth/claim-agent-identity', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://versuno.ai/api/auth/claim-agent-identity"
payload := strings.NewReader("{\n \"token\": \"abc123def456...\",\n \"email\": \"you@example.com\",\n \"password\": \"yourpassword\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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))
}<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://versuno.ai/api/auth/claim-agent-identity",
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([
'token' => 'abc123def456...',
'email' => 'you@example.com',
'password' => 'yourpassword'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("https://versuno.ai/api/auth/claim-agent-identity")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"token\": \"abc123def456...\",\n \"email\": \"you@example.com\",\n \"password\": \"yourpassword\"\n}"
response = http.request(request)
puts response.read_bodyHttpResponse<String> response = Unirest.post("https://versuno.ai/api/auth/claim-agent-identity")
.header("Content-Type", "application/json")
.body("{\n \"token\": \"abc123def456...\",\n \"email\": \"you@example.com\",\n \"password\": \"yourpassword\"\n}")
.asString();using RestSharp;
var options = new RestClientOptions("https://versuno.ai/api/auth/claim-agent-identity");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddJsonBody("{\n \"token\": \"abc123def456...\",\n \"email\": \"you@example.com\",\n \"password\": \"yourpassword\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
{
"status": "verification_sent",
"message": "We sent a confirmation link to you@example.com. Click it to finish claiming the account."
}{
"error": "Wrong data: assetType is required"
}{
"error": "That email is already associated with a different account. Please use a different email."
}{
"error": "Wrong data: assetType is required"
}{
"error": "Could not send the verification email. Please try again."
}This endpoint is typically called by the claim page at
versuno.ai/claim/<token>, not directly by the agent.
The token comes from the claim_url returned when the agent identity was created. It is single-use: after this call succeeds, the original claim_url is invalidated and replaced with an email-verification link.
The account becomes permanent only when the verification link in the email is opened. The agent needs access to the email inbox (via an email or MCP integration) to read and open it.
Body
application/json
Claim token from the claim_url path.
Example:
"abc123def456..."
A real email address the agent (or its human) can access.
Example:
"you@example.com"
Password for the account. Minimum 8 characters.
Minimum string length:
8Example:
"yourpassword"
Was this page helpful?

