curl --request POST \
--url https://api.standardmetrics.io/v1/metrics/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
[
{
"value": "1000",
"comments": [
{
"content": "Includes the proceeds from our Series B."
}
],
"company_id": "RjX8",
"category": "cash_in_bank",
"date": "2023-07-31",
"metric_cadence": "point_in_time",
"currency": "USD",
"is_budget_metric": true,
"budget_id": "yzJm"
}
]
'import requests
url = "https://api.standardmetrics.io/v1/metrics/"
payload = [
{
"value": "1000",
"comments": [{ "content": "Includes the proceeds from our Series B." }],
"company_id": "RjX8",
"category": "cash_in_bank",
"date": "2023-07-31",
"metric_cadence": "point_in_time",
"currency": "USD",
"is_budget_metric": True,
"budget_id": "yzJm"
}
]
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify([
{
value: '1000',
comments: [{content: 'Includes the proceeds from our Series B.'}],
company_id: 'RjX8',
category: 'cash_in_bank',
date: '2023-07-31',
metric_cadence: 'point_in_time',
currency: 'USD',
is_budget_metric: true,
budget_id: 'yzJm'
}
])
};
fetch('https://api.standardmetrics.io/v1/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.standardmetrics.io/v1/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([
[
'value' => '1000',
'comments' => [
[
'content' => 'Includes the proceeds from our Series B.'
]
],
'company_id' => 'RjX8',
'category' => 'cash_in_bank',
'date' => '2023-07-31',
'metric_cadence' => 'point_in_time',
'currency' => 'USD',
'is_budget_metric' => true,
'budget_id' => 'yzJm'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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.standardmetrics.io/v1/metrics/"
payload := strings.NewReader("[\n {\n \"value\": \"1000\",\n \"comments\": [\n {\n \"content\": \"Includes the proceeds from our Series B.\"\n }\n ],\n \"company_id\": \"RjX8\",\n \"category\": \"cash_in_bank\",\n \"date\": \"2023-07-31\",\n \"metric_cadence\": \"point_in_time\",\n \"currency\": \"USD\",\n \"is_budget_metric\": true,\n \"budget_id\": \"yzJm\"\n }\n]")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.standardmetrics.io/v1/metrics/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("[\n {\n \"value\": \"1000\",\n \"comments\": [\n {\n \"content\": \"Includes the proceeds from our Series B.\"\n }\n ],\n \"company_id\": \"RjX8\",\n \"category\": \"cash_in_bank\",\n \"date\": \"2023-07-31\",\n \"metric_cadence\": \"point_in_time\",\n \"currency\": \"USD\",\n \"is_budget_metric\": true,\n \"budget_id\": \"yzJm\"\n }\n]")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.standardmetrics.io/v1/metrics/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "[\n {\n \"value\": \"1000\",\n \"comments\": [\n {\n \"content\": \"Includes the proceeds from our Series B.\"\n }\n ],\n \"company_id\": \"RjX8\",\n \"category\": \"cash_in_bank\",\n \"date\": \"2023-07-31\",\n \"metric_cadence\": \"point_in_time\",\n \"currency\": \"USD\",\n \"is_budget_metric\": true,\n \"budget_id\": \"yzJm\"\n }\n]"
response = http.request(request)
puts response.read_body[
{
"value": "1000",
"comments": [
{
"content": "Includes the proceeds from our Series B."
}
],
"company_id": "RjX8",
"category": "cash_in_bank",
"date": "2023-07-31",
"metric_cadence": "point_in_time",
"currency": "USD",
"is_budget_metric": true,
"budget_id": "yzJm"
}
]Create metrics
Create/upload new metrics data for a company. Supports both standard and custom metrics, including budget data.
Notes:
- Each request can only be for one company.
- Supports both standard and custom metrics.
- Can write to budgets by specifying
budget_idandis_budget_metric. - Each request can only target a single budget: all metrics in a request must have the same
budget_idandis_budget_metricvalues. Budget and non-budget metrics cannot be mixed in one request. - Required fields:
valuecompany_idcategorymetric_cadencedate
- Optional fields:
currency(only for money-type metrics)is_budget_metric(defaults to False)comments(a single-item list of objects with plain-textcontent; creates or replaces the comment, omitted preserves it, empty content clears its text)
on_conflict=skippreserves both the existing metric and its comment.- Query parameters:
on_conflict(overwrite|skip, default:overwrite)
Permissions:
- User must be authenticated via OAuth.
- User must have access to the company.
- User must have ADMIN or EDITOR role.
curl --request POST \
--url https://api.standardmetrics.io/v1/metrics/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
[
{
"value": "1000",
"comments": [
{
"content": "Includes the proceeds from our Series B."
}
],
"company_id": "RjX8",
"category": "cash_in_bank",
"date": "2023-07-31",
"metric_cadence": "point_in_time",
"currency": "USD",
"is_budget_metric": true,
"budget_id": "yzJm"
}
]
'import requests
url = "https://api.standardmetrics.io/v1/metrics/"
payload = [
{
"value": "1000",
"comments": [{ "content": "Includes the proceeds from our Series B." }],
"company_id": "RjX8",
"category": "cash_in_bank",
"date": "2023-07-31",
"metric_cadence": "point_in_time",
"currency": "USD",
"is_budget_metric": True,
"budget_id": "yzJm"
}
]
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify([
{
value: '1000',
comments: [{content: 'Includes the proceeds from our Series B.'}],
company_id: 'RjX8',
category: 'cash_in_bank',
date: '2023-07-31',
metric_cadence: 'point_in_time',
currency: 'USD',
is_budget_metric: true,
budget_id: 'yzJm'
}
])
};
fetch('https://api.standardmetrics.io/v1/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.standardmetrics.io/v1/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([
[
'value' => '1000',
'comments' => [
[
'content' => 'Includes the proceeds from our Series B.'
]
],
'company_id' => 'RjX8',
'category' => 'cash_in_bank',
'date' => '2023-07-31',
'metric_cadence' => 'point_in_time',
'currency' => 'USD',
'is_budget_metric' => true,
'budget_id' => 'yzJm'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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.standardmetrics.io/v1/metrics/"
payload := strings.NewReader("[\n {\n \"value\": \"1000\",\n \"comments\": [\n {\n \"content\": \"Includes the proceeds from our Series B.\"\n }\n ],\n \"company_id\": \"RjX8\",\n \"category\": \"cash_in_bank\",\n \"date\": \"2023-07-31\",\n \"metric_cadence\": \"point_in_time\",\n \"currency\": \"USD\",\n \"is_budget_metric\": true,\n \"budget_id\": \"yzJm\"\n }\n]")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.standardmetrics.io/v1/metrics/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("[\n {\n \"value\": \"1000\",\n \"comments\": [\n {\n \"content\": \"Includes the proceeds from our Series B.\"\n }\n ],\n \"company_id\": \"RjX8\",\n \"category\": \"cash_in_bank\",\n \"date\": \"2023-07-31\",\n \"metric_cadence\": \"point_in_time\",\n \"currency\": \"USD\",\n \"is_budget_metric\": true,\n \"budget_id\": \"yzJm\"\n }\n]")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.standardmetrics.io/v1/metrics/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "[\n {\n \"value\": \"1000\",\n \"comments\": [\n {\n \"content\": \"Includes the proceeds from our Series B.\"\n }\n ],\n \"company_id\": \"RjX8\",\n \"category\": \"cash_in_bank\",\n \"date\": \"2023-07-31\",\n \"metric_cadence\": \"point_in_time\",\n \"currency\": \"USD\",\n \"is_budget_metric\": true,\n \"budget_id\": \"yzJm\"\n }\n]"
response = http.request(request)
puts response.read_body[
{
"value": "1000",
"comments": [
{
"content": "Includes the proceeds from our Series B."
}
],
"company_id": "RjX8",
"category": "cash_in_bank",
"date": "2023-07-31",
"metric_cadence": "point_in_time",
"currency": "USD",
"is_budget_metric": true,
"budget_id": "yzJm"
}
]Authorizations
Your valid bearer token. All Auth tokens persist for all requests. Make sure to replace Client Credential Basic tokens with Bearer tokens after retrieving your bearer token. Go to the API Reference/Setup, User Guides/Initial Setup, or API Reference/Get API Access Token page to get your token.
Query Parameters
Conflict resolution strategy when a metric already exists for the same company, category, and date. 'overwrite' (default) updates the existing row. 'skip' leaves the existing row unchanged.
overwrite, skip Body
Metric value
"1000"
A single comment to create or replace for this metric. Omit to preserve the existing comment, or send one item with empty content to clear its text. Null and empty lists are not allowed. With on_conflict=skip, existing metrics and their comments are unchanged.
1 elementShow child attributes
Show child attributes
[ { "content": "Includes the proceeds from our Series B." } ]
Company ID
"RjX8"
Metric category (can also be the name of a custom metric using its display name (e.g., "Total Number of Customers"))
accounts_payable, accounts_receivable, active_users, ai_inference_cost, ai_type, arr, assets, burn_per_fte, cash_flow_from_financing_activities, cash_flow_from_investing_activities, cash_flow_from_operating_activities, cash_in_bank, churned_arr, contraction_arr, cost_of_goods_sold, current_assets, current_liabilities, custom, ebitda, equity, expansion_arr, fair_value, fully_diluted_shares, general_and_administrative_expenses, gross_irr, gross_margin, gross_profit, headcount, inactive_users, investment_amount, latest_price_per_share, liabilities, long_term_liabilities, lost_customers, lost_users, moic, net_assets, net_burn, net_income, net_new_arr, net_operating_profit, net_other_income, net_profit, new_customers, new_logo_arr, new_users, non_current_assets, number_of_customers, operating_margin, other_non_current_assets, outstanding_debt, ownership, post_money_valuation, pre_money_valuation, property_plants_and_equipment, reactivation_arr, realized_value, research_and_development_expenses, revenue, revenue_growth, revenue_per_fte, runway, sales_and_marketing_expenses, short_term_investments, stock_based_compensation, total_ai_cost, total_change_in_cash, total_operating_expenses, total_shares_owned "cash_in_bank"
Date
"2023-07-31"
Metric cadence
point_in_time, day, week, month, quarter, half_year, year "point_in_time"
Currency. Only required for money-type metrics.
AED, AUD, BDT, BRL, CAD, CHF, CNY, COP, CZK, DKK, EUR, GBP, GHS, HKD, IDR, ILS, INR, ISK, JOD, JPY, KES, KRW, MXN, NGN, NOK, NZD, PEN, PHP, PKR, PLN, SAR, SEK, SGD, THB, TRY, TWD, TZS, USD, VND, ZAR "USD"
Is budget metric. Defaults to False if not provided.
true
Budget ID
"yzJm"
Response
Metric value
"1000"
A single comment to create or replace for this metric. Omit to preserve the existing comment, or send one item with empty content to clear its text. Null and empty lists are not allowed. With on_conflict=skip, existing metrics and their comments are unchanged.
1 elementShow child attributes
Show child attributes
[ { "content": "Includes the proceeds from our Series B." } ]
Company ID
"RjX8"
Metric category (can also be the name of a custom metric using its display name (e.g., "Total Number of Customers"))
accounts_payable, accounts_receivable, active_users, ai_inference_cost, ai_type, arr, assets, burn_per_fte, cash_flow_from_financing_activities, cash_flow_from_investing_activities, cash_flow_from_operating_activities, cash_in_bank, churned_arr, contraction_arr, cost_of_goods_sold, current_assets, current_liabilities, custom, ebitda, equity, expansion_arr, fair_value, fully_diluted_shares, general_and_administrative_expenses, gross_irr, gross_margin, gross_profit, headcount, inactive_users, investment_amount, latest_price_per_share, liabilities, long_term_liabilities, lost_customers, lost_users, moic, net_assets, net_burn, net_income, net_new_arr, net_operating_profit, net_other_income, net_profit, new_customers, new_logo_arr, new_users, non_current_assets, number_of_customers, operating_margin, other_non_current_assets, outstanding_debt, ownership, post_money_valuation, pre_money_valuation, property_plants_and_equipment, reactivation_arr, realized_value, research_and_development_expenses, revenue, revenue_growth, revenue_per_fte, runway, sales_and_marketing_expenses, short_term_investments, stock_based_compensation, total_ai_cost, total_change_in_cash, total_operating_expenses, total_shares_owned "cash_in_bank"
Date
"2023-07-31"
Metric cadence
point_in_time, day, week, month, quarter, half_year, year "point_in_time"
Currency. Only required for money-type metrics.
AED, AUD, BDT, BRL, CAD, CHF, CNY, COP, CZK, DKK, EUR, GBP, GHS, HKD, IDR, ILS, INR, ISK, JOD, JPY, KES, KRW, MXN, NGN, NOK, NZD, PEN, PHP, PKR, PLN, SAR, SEK, SGD, THB, TRY, TWD, TZS, USD, VND, ZAR "USD"
Is budget metric. Defaults to False if not provided.
true
Budget ID
"yzJm"