List every dated API version and how to pin one (public, no auth).
curl --request GET \
--url https://api.newinvoice.dev/v1/versionsimport requests
url = "https://api.newinvoice.dev/v1/versions"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.newinvoice.dev/v1/versions', 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.newinvoice.dev/v1/versions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.newinvoice.dev/v1/versions"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.newinvoice.dev/v1/versions")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.newinvoice.dev/v1/versions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"object": "list",
"data": [
{
"version": "2026-07-10",
"summary": "Initial dated release.",
"changes": [
"Initial public API surface."
]
},
{
"version": "2026-07-15",
"summary": "Adds machine-navigable error and list metadata.",
"changes": [
"problem+json error bodies now include `doc_url` (absolute link to the error reference).",
"List envelopes now include `url` (the path the list was requested from)."
]
}
],
"current": "2026-07-15",
"how_to_pin": "Pin a version by sending the `Invoice-Version: <date>` request header, or by attaching a pinned version to an API key. Omit both to track the current version. An unknown version in the header is rejected with 400 request.invalid_version."
}versions
List every dated API version and how to pin one (public, no auth).
Discovery endpoint for dated versioning. Returns every supported version with a human- and agent-readable changelog, the current version, and how to pin one via the Invoice-Version header. Requires no API key.
GET
/
v1
/
versions
List every dated API version and how to pin one (public, no auth).
curl --request GET \
--url https://api.newinvoice.dev/v1/versionsimport requests
url = "https://api.newinvoice.dev/v1/versions"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.newinvoice.dev/v1/versions', 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.newinvoice.dev/v1/versions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.newinvoice.dev/v1/versions"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.newinvoice.dev/v1/versions")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.newinvoice.dev/v1/versions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"object": "list",
"data": [
{
"version": "2026-07-10",
"summary": "Initial dated release.",
"changes": [
"Initial public API surface."
]
},
{
"version": "2026-07-15",
"summary": "Adds machine-navigable error and list metadata.",
"changes": [
"problem+json error bodies now include `doc_url` (absolute link to the error reference).",
"List envelopes now include `url` (the path the list was requested from)."
]
}
],
"current": "2026-07-15",
"how_to_pin": "Pin a version by sending the `Invoice-Version: <date>` request header, or by attaching a pinned version to an API key. Omit both to track the current version. An unknown version in the header is rejected with 400 request.invalid_version."
}Headers
Pin a dated API release (Stripe-style). Omit to use the current version. An unknown value returns 400 request.invalid_version. Echoed back on every response.
Example:
"2026-07-10"
Connect: act on behalf of one of your connected accounts (its acct_…/org_… id). Omit to act as your own organization. Not honored on /v1/api_keys.
Example:
"org_2P9connectedacct"