Account
Create account
Register an unverified Darwin account without creating an agent or key.
POST
/
accounts
Create account
curl --request POST \
--url https://api.darwin.so/api/v2/accounts \
--header 'Content-Type: application/json' \
--data '
{
"email": "jsmith@example.com",
"password": "<string>",
"name": "<string>"
}
'import requests
url = "https://api.darwin.so/api/v2/accounts"
payload = {
"email": "jsmith@example.com",
"password": "<string>",
"name": "<string>"
}
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({email: 'jsmith@example.com', password: '<string>', name: '<string>'})
};
fetch('https://api.darwin.so/api/v2/accounts', 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.darwin.so/api/v2/accounts",
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([
'email' => 'jsmith@example.com',
'password' => '<string>',
'name' => '<string>'
]),
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;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.darwin.so/api/v2/accounts"
payload := strings.NewReader("{\n \"email\": \"jsmith@example.com\",\n \"password\": \"<string>\",\n \"name\": \"<string>\"\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))
}HttpResponse<String> response = Unirest.post("https://api.darwin.so/api/v2/accounts")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"jsmith@example.com\",\n \"password\": \"<string>\",\n \"name\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.darwin.so/api/v2/accounts")
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 \"email\": \"jsmith@example.com\",\n \"password\": \"<string>\",\n \"name\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"type": "personal",
"name": "<string>",
"status": "unverified",
"createdAt": "2023-11-07T05:31:56Z",
"nextStep": "<string>"
}{
"error": "<string>",
"message": "<string>",
"fields": [
{}
],
"code": "<string>",
"retryAfterSeconds": 1,
"authenticationRequest": {
"authenticationRequestId": "<string>",
"actingAiId": "<string>",
"targetAiId": "<string>",
"purpose": "discovery",
"expiresAt": "2023-11-07T05:31:56Z"
},
"targetAgent": "<string>",
"agent": "<string>",
"expiresAt": "2023-11-07T05:31:56Z",
"capabilities": [
{
"capability": "<string>",
"title": "<string>",
"inputSchema": {},
"effect": "external_effect",
"pricing": "unknown",
"requiresConfirmation": true
}
]
}{
"error": "<string>",
"message": "<string>",
"fields": [
{}
],
"code": "<string>",
"retryAfterSeconds": 1,
"authenticationRequest": {
"authenticationRequestId": "<string>",
"actingAiId": "<string>",
"targetAiId": "<string>",
"purpose": "discovery",
"expiresAt": "2023-11-07T05:31:56Z"
},
"targetAgent": "<string>",
"agent": "<string>",
"expiresAt": "2023-11-07T05:31:56Z",
"capabilities": [
{
"capability": "<string>",
"title": "<string>",
"inputSchema": {},
"effect": "external_effect",
"pricing": "unknown",
"requiresConfirmation": true
}
]
}{
"error": "<string>",
"message": "<string>",
"fields": [
{}
],
"code": "<string>",
"retryAfterSeconds": 1,
"authenticationRequest": {
"authenticationRequestId": "<string>",
"actingAiId": "<string>",
"targetAiId": "<string>",
"purpose": "discovery",
"expiresAt": "2023-11-07T05:31:56Z"
},
"targetAgent": "<string>",
"agent": "<string>",
"expiresAt": "2023-11-07T05:31:56Z",
"capabilities": [
{
"capability": "<string>",
"title": "<string>",
"inputSchema": {},
"effect": "external_effect",
"pricing": "unknown",
"requiresConfirmation": true
}
]
}Start account registration directly through the API. The account remains restricted until you follow the returned
nextStep, verify its email address through Darwin sign-in, and complete the short account profile. This operation never creates or claims an agent, application, or API key.
For the person’s verification and consent path, read Personal. Developers should also read Developer: this endpoint does not create an API key or grant the application permission to Act for the new account.Body
application/json
Maximum string length:
320Required string length:
12 - 256Required string length:
1 - 160Available options:
personal, business, software Required for business and software.
Required string length:
1 - 160Required for business and software; not ownership proof.
Required string length:
3 - 253Last modified on October 4, 2026
⌘I
Create account
curl --request POST \
--url https://api.darwin.so/api/v2/accounts \
--header 'Content-Type: application/json' \
--data '
{
"email": "jsmith@example.com",
"password": "<string>",
"name": "<string>"
}
'import requests
url = "https://api.darwin.so/api/v2/accounts"
payload = {
"email": "jsmith@example.com",
"password": "<string>",
"name": "<string>"
}
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({email: 'jsmith@example.com', password: '<string>', name: '<string>'})
};
fetch('https://api.darwin.so/api/v2/accounts', 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.darwin.so/api/v2/accounts",
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([
'email' => 'jsmith@example.com',
'password' => '<string>',
'name' => '<string>'
]),
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;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.darwin.so/api/v2/accounts"
payload := strings.NewReader("{\n \"email\": \"jsmith@example.com\",\n \"password\": \"<string>\",\n \"name\": \"<string>\"\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))
}HttpResponse<String> response = Unirest.post("https://api.darwin.so/api/v2/accounts")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"jsmith@example.com\",\n \"password\": \"<string>\",\n \"name\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.darwin.so/api/v2/accounts")
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 \"email\": \"jsmith@example.com\",\n \"password\": \"<string>\",\n \"name\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"type": "personal",
"name": "<string>",
"status": "unverified",
"createdAt": "2023-11-07T05:31:56Z",
"nextStep": "<string>"
}{
"error": "<string>",
"message": "<string>",
"fields": [
{}
],
"code": "<string>",
"retryAfterSeconds": 1,
"authenticationRequest": {
"authenticationRequestId": "<string>",
"actingAiId": "<string>",
"targetAiId": "<string>",
"purpose": "discovery",
"expiresAt": "2023-11-07T05:31:56Z"
},
"targetAgent": "<string>",
"agent": "<string>",
"expiresAt": "2023-11-07T05:31:56Z",
"capabilities": [
{
"capability": "<string>",
"title": "<string>",
"inputSchema": {},
"effect": "external_effect",
"pricing": "unknown",
"requiresConfirmation": true
}
]
}{
"error": "<string>",
"message": "<string>",
"fields": [
{}
],
"code": "<string>",
"retryAfterSeconds": 1,
"authenticationRequest": {
"authenticationRequestId": "<string>",
"actingAiId": "<string>",
"targetAiId": "<string>",
"purpose": "discovery",
"expiresAt": "2023-11-07T05:31:56Z"
},
"targetAgent": "<string>",
"agent": "<string>",
"expiresAt": "2023-11-07T05:31:56Z",
"capabilities": [
{
"capability": "<string>",
"title": "<string>",
"inputSchema": {},
"effect": "external_effect",
"pricing": "unknown",
"requiresConfirmation": true
}
]
}{
"error": "<string>",
"message": "<string>",
"fields": [
{}
],
"code": "<string>",
"retryAfterSeconds": 1,
"authenticationRequest": {
"authenticationRequestId": "<string>",
"actingAiId": "<string>",
"targetAiId": "<string>",
"purpose": "discovery",
"expiresAt": "2023-11-07T05:31:56Z"
},
"targetAgent": "<string>",
"agent": "<string>",
"expiresAt": "2023-11-07T05:31:56Z",
"capabilities": [
{
"capability": "<string>",
"title": "<string>",
"inputSchema": {},
"effect": "external_effect",
"pricing": "unknown",
"requiresConfirmation": true
}
]
}