curl --request POST \
--url https://api.example.com/v2/metrics \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"name": "Acme",
"description": "Usage tracked for Acme.",
"measurement_units": "m"
}
'import requests
url = "https://api.example.com/v2/metrics"
payload = {
"name": "Acme",
"description": "Usage tracked for Acme.",
"measurement_units": "m"
}
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.', measurement_units: 'm'})
};
fetch('https://api.example.com/v2/metrics', 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/metrics",
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.',
'measurement_units' => 'm'
]),
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/metrics"
payload := strings.NewReader("{\n \"name\": \"Acme\",\n \"description\": \"Usage tracked for Acme.\",\n \"measurement_units\": \"m\"\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/metrics")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Acme\",\n \"description\": \"Usage tracked for Acme.\",\n \"measurement_units\": \"m\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v2/metrics")
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 \"measurement_units\": \"m\"\n}"
response = http.request(request)
puts response.read_body{
"id": "metric_0194f4e3a2b77c6aa91c4f6b4db2a980",
"name": "Acme",
"description": "Usage tracked for Acme.",
"measurement_units": "m",
"created_at": 1767225600,
"updated_at": 1767225600,
"archived_at": 1767225600
}"<string>""Invalid API key""<string>""<string>""<string>""<string>""<string>""<string>""rate limit exceeded""<string>"Create a metric.
curl --request POST \
--url https://api.example.com/v2/metrics \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"name": "Acme",
"description": "Usage tracked for Acme.",
"measurement_units": "m"
}
'import requests
url = "https://api.example.com/v2/metrics"
payload = {
"name": "Acme",
"description": "Usage tracked for Acme.",
"measurement_units": "m"
}
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.', measurement_units: 'm'})
};
fetch('https://api.example.com/v2/metrics', 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/metrics",
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.',
'measurement_units' => 'm'
]),
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/metrics"
payload := strings.NewReader("{\n \"name\": \"Acme\",\n \"description\": \"Usage tracked for Acme.\",\n \"measurement_units\": \"m\"\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/metrics")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Acme\",\n \"description\": \"Usage tracked for Acme.\",\n \"measurement_units\": \"m\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v2/metrics")
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 \"measurement_units\": \"m\"\n}"
response = http.request(request)
puts response.read_body{
"id": "metric_0194f4e3a2b77c6aa91c4f6b4db2a980",
"name": "Acme",
"description": "Usage tracked for Acme.",
"measurement_units": "m",
"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-metric 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 unit of measure for the metric, such as m, ft, seconds, or tokens.
256"m"
Response
Created.
LedgerUp metric identifier.
^metric_[0-9a-f]{32}$"metric_0194f4e3a2b77c6aa91c4f6b4db2a980"
Human-readable name. Maximum 256 Unicode scalar values.
256"Acme"
Optional description. Maximum 2048 Unicode scalar values.
2048"Usage tracked for Acme."
Optional unit of measure for the metric, such as m, ft, seconds, or tokens.
256"m"
Unix timestamp in seconds.
1767225600
Unix timestamp in seconds.
1767225600
Unix timestamp in seconds.
1767225600