curl --request POST \
--url https://api.example.com/v2/accounts \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"name": "Acme",
"description": "Usage tracked for Acme.",
"external_id": "crm_acme_001",
"ledgerup_customer_id": "0194f4e3-a2b7-7c6a-a91c-4f6b4db2a980"
}
'import requests
url = "https://api.example.com/v2/accounts"
payload = {
"name": "Acme",
"description": "Usage tracked for Acme.",
"external_id": "crm_acme_001",
"ledgerup_customer_id": "0194f4e3-a2b7-7c6a-a91c-4f6b4db2a980"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Acme',
description: 'Usage tracked for Acme.',
external_id: 'crm_acme_001',
ledgerup_customer_id: '0194f4e3-a2b7-7c6a-a91c-4f6b4db2a980'
})
};
fetch('https://api.example.com/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.example.com/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([
'name' => 'Acme',
'description' => 'Usage tracked for Acme.',
'external_id' => 'crm_acme_001',
'ledgerup_customer_id' => '0194f4e3-a2b7-7c6a-a91c-4f6b4db2a980'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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/v2/accounts"
payload := strings.NewReader("{\n \"name\": \"Acme\",\n \"description\": \"Usage tracked for Acme.\",\n \"external_id\": \"crm_acme_001\",\n \"ledgerup_customer_id\": \"0194f4e3-a2b7-7c6a-a91c-4f6b4db2a980\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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/v2/accounts")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Acme\",\n \"description\": \"Usage tracked for Acme.\",\n \"external_id\": \"crm_acme_001\",\n \"ledgerup_customer_id\": \"0194f4e3-a2b7-7c6a-a91c-4f6b4db2a980\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v2/accounts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Acme\",\n \"description\": \"Usage tracked for Acme.\",\n \"external_id\": \"crm_acme_001\",\n \"ledgerup_customer_id\": \"0194f4e3-a2b7-7c6a-a91c-4f6b4db2a980\"\n}"
response = http.request(request)
puts response.read_body{
"id": "account_0194f4e3a2b77c6aa91c4f6b4db2a980",
"external_id": "crm_acme_001",
"ledgerup_customer_id": "0194f4e3-a2b7-7c6a-a91c-4f6b4db2a980",
"name": "Acme",
"description": "Usage tracked for Acme.",
"created_at": 1767225600,
"updated_at": 1767225600,
"archived_at": 1767225600
}"<string>""Invalid API key""<string>""<string>""<string>""<string>""<string>""<string>""rate limit exceeded""<string>"Create an account.
curl --request POST \
--url https://api.example.com/v2/accounts \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"name": "Acme",
"description": "Usage tracked for Acme.",
"external_id": "crm_acme_001",
"ledgerup_customer_id": "0194f4e3-a2b7-7c6a-a91c-4f6b4db2a980"
}
'import requests
url = "https://api.example.com/v2/accounts"
payload = {
"name": "Acme",
"description": "Usage tracked for Acme.",
"external_id": "crm_acme_001",
"ledgerup_customer_id": "0194f4e3-a2b7-7c6a-a91c-4f6b4db2a980"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Acme',
description: 'Usage tracked for Acme.',
external_id: 'crm_acme_001',
ledgerup_customer_id: '0194f4e3-a2b7-7c6a-a91c-4f6b4db2a980'
})
};
fetch('https://api.example.com/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.example.com/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([
'name' => 'Acme',
'description' => 'Usage tracked for Acme.',
'external_id' => 'crm_acme_001',
'ledgerup_customer_id' => '0194f4e3-a2b7-7c6a-a91c-4f6b4db2a980'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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/v2/accounts"
payload := strings.NewReader("{\n \"name\": \"Acme\",\n \"description\": \"Usage tracked for Acme.\",\n \"external_id\": \"crm_acme_001\",\n \"ledgerup_customer_id\": \"0194f4e3-a2b7-7c6a-a91c-4f6b4db2a980\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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/v2/accounts")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Acme\",\n \"description\": \"Usage tracked for Acme.\",\n \"external_id\": \"crm_acme_001\",\n \"ledgerup_customer_id\": \"0194f4e3-a2b7-7c6a-a91c-4f6b4db2a980\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v2/accounts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Acme\",\n \"description\": \"Usage tracked for Acme.\",\n \"external_id\": \"crm_acme_001\",\n \"ledgerup_customer_id\": \"0194f4e3-a2b7-7c6a-a91c-4f6b4db2a980\"\n}"
response = http.request(request)
puts response.read_body{
"id": "account_0194f4e3a2b77c6aa91c4f6b4db2a980",
"external_id": "crm_acme_001",
"ledgerup_customer_id": "0194f4e3-a2b7-7c6a-a91c-4f6b4db2a980",
"name": "Acme",
"description": "Usage tracked for Acme.",
"created_at": 1767225600,
"updated_at": 1767225600,
"archived_at": 1767225600
}"<string>""Invalid API key""<string>""<string>""<string>""<string>""<string>""<string>""rate limit exceeded""<string>"Authorizations
LedgerUp API Key.
Headers
Optional. Duplicate keys within the same company namespace and route return 409. Non-empty idempotency key for deduplicating write requests on the same route.
"6f31c20e-725c-4be8-96f4-835042f67602"
Body
Create-account request. Unknown JSON fields are rejected.
Human-readable name. Maximum 256 Unicode scalar values.
256"Acme"
Optional description. Maximum 2048 Unicode scalar values.
2048"Usage tracked for Acme."
Optional caller-supplied external identifier. Maximum 256 Unicode scalar values.
256"crm_acme_001"
Optional LedgerUp billing customer UUID.
"0194f4e3-a2b7-7c6a-a91c-4f6b4db2a980"
Response
Created.
LedgerUp account identifier.
^account_[0-9a-f]{32}$"account_0194f4e3a2b77c6aa91c4f6b4db2a980"
Optional caller-supplied external identifier. Maximum 256 Unicode scalar values.
256"crm_acme_001"
Optional LedgerUp billing customer UUID.
"0194f4e3-a2b7-7c6a-a91c-4f6b4db2a980"
Human-readable name. Maximum 256 Unicode scalar values.
256"Acme"
Optional description. Maximum 2048 Unicode scalar values.
2048"Usage tracked for Acme."
Unix timestamp in seconds.
1767225600
Unix timestamp in seconds.
1767225600
Unix timestamp in seconds.
1767225600