curl --request GET \
--url https://laso.finance/signup-statusimport requests
url = "https://laso.finance/signup-status"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://laso.finance/signup-status', 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://laso.finance/signup-status",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://laso.finance/signup-status"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://laso.finance/signup-status")
.asString();require 'uri'
require 'net/http'
url = URI("https://laso.finance/signup-status")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"status": "claimed",
"user_id": "usr_1a2b3c...",
"api_key": "lasoak_...",
"api_key_note": "<string>",
"auth": {},
"callable_base_url": "<string>",
"next_steps": [
"<string>"
]
}Wait for your human to finish the signup
Long-polls until the human opens the claim link and finishes creating the account. Holds the connection open for about 60 seconds and returns 204 No Content if they have not finished yet.
Retry on 204 and nothing else. The call already blocks for you, so add no sleep between attempts. Every other status is final and retrying will not change the answer: 401 means the token is wrong, 410 means the link expired. Both carry "terminal": true in the body. A loop written as “retry until 200” spins at network speed against those, because they answer instantly rather than holding the connection.
On completion it returns your api_key — delivered exactly once. Store it before doing anything else; a later poll returns the account without it. By that point the human is on their dashboard, their agent wallet is provisioned, and you are already recorded as their connected agent, so announceAgentConnection is not needed on this path.
curl --request GET \
--url https://laso.finance/signup-statusimport requests
url = "https://laso.finance/signup-status"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://laso.finance/signup-status', 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://laso.finance/signup-status",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://laso.finance/signup-status"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://laso.finance/signup-status")
.asString();require 'uri'
require 'net/http'
url = URI("https://laso.finance/signup-status")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"status": "claimed",
"user_id": "usr_1a2b3c...",
"api_key": "lasoak_...",
"api_key_note": "<string>",
"auth": {},
"callable_base_url": "<string>",
"next_steps": [
"<string>"
]
}Query Parameters
The claim_token from POST /signup.
The claim_code from the same POST /signup response.
Response
The human completed the signup
"claimed"
The Laso user id of the new account.
"usr_1a2b3c..."
Your lasoak_ key. Delivered EXACTLY ONCE — null on any later poll.
"lasoak_..."
Present only when api_key is null, explaining that it was already delivered.
An id_token / refresh_token bundle you can use immediately.
Was this page helpful?