Reference
Registration
Self-serve entry point: create your Business and its first owner.
POST
/
v1
/
registration
Self-serve business registration
curl --request POST \
--url https://api.example.com/v1/registration \
--header 'Content-Type: application/json' \
--data '
{
"account": {
"email": "jsmith@example.com",
"password": "<string>",
"first_name": "<string>",
"last_name": "<string>"
},
"organization": {
"legal_name": "Acme Capital LLC",
"country": "US",
"display_name": "Acme"
},
"accepted_terms": true
}
'import requests
url = "https://api.example.com/v1/registration"
payload = {
"account": {
"email": "jsmith@example.com",
"password": "<string>",
"first_name": "<string>",
"last_name": "<string>"
},
"organization": {
"legal_name": "Acme Capital LLC",
"country": "US",
"display_name": "Acme"
},
"accepted_terms": True
}
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({
account: {
email: 'jsmith@example.com',
password: '<string>',
first_name: '<string>',
last_name: '<string>'
},
organization: {legal_name: 'Acme Capital LLC', country: 'US', display_name: 'Acme'},
accepted_terms: true
})
};
fetch('https://api.example.com/v1/registration', 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.example.com/v1/registration",
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([
'account' => [
'email' => 'jsmith@example.com',
'password' => '<string>',
'first_name' => '<string>',
'last_name' => '<string>'
],
'organization' => [
'legal_name' => 'Acme Capital LLC',
'country' => 'US',
'display_name' => 'Acme'
],
'accepted_terms' => true
]),
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.example.com/v1/registration"
payload := strings.NewReader("{\n \"account\": {\n \"email\": \"jsmith@example.com\",\n \"password\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\"\n },\n \"organization\": {\n \"legal_name\": \"Acme Capital LLC\",\n \"country\": \"US\",\n \"display_name\": \"Acme\"\n },\n \"accepted_terms\": true\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.example.com/v1/registration")
.header("Content-Type", "application/json")
.body("{\n \"account\": {\n \"email\": \"jsmith@example.com\",\n \"password\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\"\n },\n \"organization\": {\n \"legal_name\": \"Acme Capital LLC\",\n \"country\": \"US\",\n \"display_name\": \"Acme\"\n },\n \"accepted_terms\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/registration")
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 \"account\": {\n \"email\": \"jsmith@example.com\",\n \"password\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\"\n },\n \"organization\": {\n \"legal_name\": \"Acme Capital LLC\",\n \"country\": \"US\",\n \"display_name\": \"Acme\"\n },\n \"accepted_terms\": true\n}"
response = http.request(request)
puts response.read_body{
"business_id": "<string>",
"membership_id": "<string>"
}Registration is the one public endpoint that needs no credential. It creates your
Business and its first owner, and returns their two identifiers. It is rate-limited per
client IP.
Registration does not return an API key; issuance is gated on email verification.
After registering, verify the email address you signed up with, then sign in to the
Cleff dashboard to create your first key. See Authentication for the
key format and how it scopes every other call in this reference.
Body
application/json
⌘I
Self-serve business registration
curl --request POST \
--url https://api.example.com/v1/registration \
--header 'Content-Type: application/json' \
--data '
{
"account": {
"email": "jsmith@example.com",
"password": "<string>",
"first_name": "<string>",
"last_name": "<string>"
},
"organization": {
"legal_name": "Acme Capital LLC",
"country": "US",
"display_name": "Acme"
},
"accepted_terms": true
}
'import requests
url = "https://api.example.com/v1/registration"
payload = {
"account": {
"email": "jsmith@example.com",
"password": "<string>",
"first_name": "<string>",
"last_name": "<string>"
},
"organization": {
"legal_name": "Acme Capital LLC",
"country": "US",
"display_name": "Acme"
},
"accepted_terms": True
}
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({
account: {
email: 'jsmith@example.com',
password: '<string>',
first_name: '<string>',
last_name: '<string>'
},
organization: {legal_name: 'Acme Capital LLC', country: 'US', display_name: 'Acme'},
accepted_terms: true
})
};
fetch('https://api.example.com/v1/registration', 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.example.com/v1/registration",
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([
'account' => [
'email' => 'jsmith@example.com',
'password' => '<string>',
'first_name' => '<string>',
'last_name' => '<string>'
],
'organization' => [
'legal_name' => 'Acme Capital LLC',
'country' => 'US',
'display_name' => 'Acme'
],
'accepted_terms' => true
]),
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.example.com/v1/registration"
payload := strings.NewReader("{\n \"account\": {\n \"email\": \"jsmith@example.com\",\n \"password\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\"\n },\n \"organization\": {\n \"legal_name\": \"Acme Capital LLC\",\n \"country\": \"US\",\n \"display_name\": \"Acme\"\n },\n \"accepted_terms\": true\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.example.com/v1/registration")
.header("Content-Type", "application/json")
.body("{\n \"account\": {\n \"email\": \"jsmith@example.com\",\n \"password\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\"\n },\n \"organization\": {\n \"legal_name\": \"Acme Capital LLC\",\n \"country\": \"US\",\n \"display_name\": \"Acme\"\n },\n \"accepted_terms\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/registration")
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 \"account\": {\n \"email\": \"jsmith@example.com\",\n \"password\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\"\n },\n \"organization\": {\n \"legal_name\": \"Acme Capital LLC\",\n \"country\": \"US\",\n \"display_name\": \"Acme\"\n },\n \"accepted_terms\": true\n}"
response = http.request(request)
puts response.read_body{
"business_id": "<string>",
"membership_id": "<string>"
}