List distributions
List distributions with pagination
curl --request GET \
--url https://api.nova.net/v1/distributions \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.nova.net/v1/distributions"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.nova.net/v1/distributions', 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.nova.net/v1/distributions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.nova.net/v1/distributions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.nova.net/v1/distributions")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.nova.net/v1/distributions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"object": "list",
"data": [
{
"object": "distribution",
"livemode": true,
"id": "dst_tQaOR74NP2DZ9mg3votpOnCqAuGs",
"name": "November 9th Distribution from XYZ Sale",
"vehicle": "veh_pNvehE6O1KjY2W6Omq9MD3QAEs5w",
"external_reference": "distribution-123",
"distribution_date": "2026-09-09T16:00:00.000Z",
"distribution_timezone": "America/Los_Angeles",
"short_id": "<string>",
"status": "draft",
"published_at": "2024-04-20T01:00:00.000Z",
"approved_at": "2024-04-20T01:00:00.000Z",
"executed_at": "2024-04-20T01:00:00.000Z",
"cancelled_at": "2024-04-20T01:00:00.000Z",
"created_at": "2024-04-20T01:00:00.000Z",
"updated_at": "2024-04-20T01:00:00.000Z",
"sender_url": "https://nova.angellist.com/path_to_sender_distribution",
"recipient_url": "https://nova.angellist.com/path_to_recipient_distribution",
"payments": {
"object": "list",
"data": [
{
"object": "distribution_payment",
"livemode": true,
"id": "dpmt_sSTfFdsytyOearj36zDNcmXn1pJ4",
"amount": 1000,
"currency": "USD",
"distribution_date_override": "2026-09-16T16:00:00.000Z",
"status": "staged",
"recipient_confirmed_at": "2024-04-20T01:00:00.000Z",
"verified_at": "2024-04-20T01:00:00.000Z",
"entity": "ent_H0hdMOc5E5QMTEcGVZKegvLNCB6p",
"payment_instructions": "pmi_021wlGURMlk80cYuKBjENXqwC3OV",
"notifications": {
"object": "list",
"data": [
{
"object": "distribution_notification",
"livemode": true,
"id": "dntf_bXlZNOmqHkAM8gS4h12vtwlI9sJx",
"contact": "cnt_tSfCZrNE8O3c4QATSkzuCljMZ2DI"
}
],
"next_page_url": "/v1/distribution_payments/dpmt_sSTfFdsytyOearj36zDNcmXn1pJ4/notifications?page=page_5dr8SFDbv7rZ2aj4&limit=10",
"previous_page_url": "/v1/distribution_payments/dpmt_sSTfFdsytyOearj36zDNcmXn1pJ4/notifications?page_before=page_8VtqLBv3xJpY7mk2&limit=10",
"has_more": true,
"url": "/v1/distribution_payments/dpmt_sSTfFdsytyOearj36zDNcmXn1pJ4/notifications"
}
}
],
"next_page_url": "/v1/distributions/dst_tQaOR74NP2DZ9mg3votpOnCqAuGs/payments?page=page_5dr8SFDbv7rZ2aj4&limit=10",
"previous_page_url": "/v1/distributions/dst_tQaOR74NP2DZ9mg3votpOnCqAuGs/payments?page_before=page_8VtqLBv3xJpY7mk2&limit=10",
"has_more": true,
"url": "/v1/distributions/dst_tQaOR74NP2DZ9mg3votpOnCqAuGs/payments"
}
}
],
"next_page_url": "/v1/distributions?page=page_5dr8SFDbv7rZ2aj4&limit=10",
"previous_page_url": "/v1/distributions?page_before=page_8VtqLBv3xJpY7mk2&limit=10",
"has_more": true,
"url": "/v1/distributions"
}{
"object": "error",
"type": "invalid_request_error",
"code": "parameter_invalid",
"message": "The 'limit' parameter must be between 1 and 100.",
"status": 400,
"invalid-params": [
{
"code": "parameter_invalid",
"name": "body.[0].limit",
"value": 200,
"reason": "out of range"
}
]
}{
"object": "error",
"type": "invalid_request_error",
"code": "parameter_invalid",
"message": "The 'limit' parameter must be between 1 and 100.",
"status": 400,
"invalid-params": [
{
"code": "parameter_invalid",
"name": "body.[0].limit",
"value": 200,
"reason": "out of range"
}
]
}{
"object": "error",
"type": "invalid_request_error",
"code": "parameter_invalid",
"message": "The 'limit' parameter must be between 1 and 100.",
"status": 400,
"invalid-params": [
{
"code": "parameter_invalid",
"name": "body.[0].limit",
"value": 200,
"reason": "out of range"
}
]
}{
"object": "error",
"type": "invalid_request_error",
"code": "parameter_invalid",
"message": "The 'limit' parameter must be between 1 and 100.",
"status": 400,
"invalid-params": [
{
"code": "parameter_invalid",
"name": "body.[0].limit",
"value": 200,
"reason": "out of range"
}
]
}{
"object": "error",
"type": "invalid_request_error",
"code": "parameter_invalid",
"message": "The 'limit' parameter must be between 1 and 100.",
"status": 400,
"invalid-params": [
{
"code": "parameter_invalid",
"name": "body.[0].limit",
"value": 200,
"reason": "out of range"
}
]
}{
"object": "error",
"type": "invalid_request_error",
"code": "parameter_invalid",
"message": "The 'limit' parameter must be between 1 and 100.",
"status": 400,
"invalid-params": [
{
"code": "parameter_invalid",
"name": "body.[0].limit",
"value": 200,
"reason": "out of range"
}
]
}Authorizations
OAuth2 client_credentials grant for server-to-server access. Onboard via your Nova admin to receive a client_id and client_secret, then POST /oauth/token to exchange them for a short-lived access token. Send the token as Authorization: Bearer <access_token> on every authenticated request. Tokens expire after 3600 seconds — refresh by re-exchanging credentials.
Headers
ID of the organization the request acts on. Optional when the access token is bound to a specific organization, or when the integration has access to exactly one organization.
^org_[A-Za-z0-9]+$"org_EkzhrUc3U6C0UbxNBlK7WLz51ofT"
Query Parameters
Opaque cursor from a previous response next_page_url; returns the results after it
^page_[A-Za-z0-9]+$"page_QEpNuAot4c8XEGxH4UqLnO6Ao2Tf"
Opaque cursor from a previous response previous_page_url; returns the results before it
^page_[A-Za-z0-9]+$"page_QEpNuAot4c8XEGxH4UqLnO6Ao2Tf"
The maximum number of items to return.
1 <= x <= 100Response
List of distributions
Object type identifier.
list "list"
The page of items.
Show child attributes
Show child attributes
URL for the next page of the list, or null when there are no more pages.
"/v1/distributions?page=page_5dr8SFDbv7rZ2aj4&limit=10"
URL for the previous page of the list, or null when there are none.
"/v1/distributions?page_before=page_8VtqLBv3xJpY7mk2&limit=10"
Whether there are more items available after this page. Deprecated: next_page_url is non-null exactly when more pages exist.
The URL for this list endpoint. Deprecated: follow next_page_url / previous_page_url to paginate.
"/v1/distributions"
curl --request GET \
--url https://api.nova.net/v1/distributions \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.nova.net/v1/distributions"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.nova.net/v1/distributions', 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.nova.net/v1/distributions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.nova.net/v1/distributions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.nova.net/v1/distributions")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.nova.net/v1/distributions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"object": "list",
"data": [
{
"object": "distribution",
"livemode": true,
"id": "dst_tQaOR74NP2DZ9mg3votpOnCqAuGs",
"name": "November 9th Distribution from XYZ Sale",
"vehicle": "veh_pNvehE6O1KjY2W6Omq9MD3QAEs5w",
"external_reference": "distribution-123",
"distribution_date": "2026-09-09T16:00:00.000Z",
"distribution_timezone": "America/Los_Angeles",
"short_id": "<string>",
"status": "draft",
"published_at": "2024-04-20T01:00:00.000Z",
"approved_at": "2024-04-20T01:00:00.000Z",
"executed_at": "2024-04-20T01:00:00.000Z",
"cancelled_at": "2024-04-20T01:00:00.000Z",
"created_at": "2024-04-20T01:00:00.000Z",
"updated_at": "2024-04-20T01:00:00.000Z",
"sender_url": "https://nova.angellist.com/path_to_sender_distribution",
"recipient_url": "https://nova.angellist.com/path_to_recipient_distribution",
"payments": {
"object": "list",
"data": [
{
"object": "distribution_payment",
"livemode": true,
"id": "dpmt_sSTfFdsytyOearj36zDNcmXn1pJ4",
"amount": 1000,
"currency": "USD",
"distribution_date_override": "2026-09-16T16:00:00.000Z",
"status": "staged",
"recipient_confirmed_at": "2024-04-20T01:00:00.000Z",
"verified_at": "2024-04-20T01:00:00.000Z",
"entity": "ent_H0hdMOc5E5QMTEcGVZKegvLNCB6p",
"payment_instructions": "pmi_021wlGURMlk80cYuKBjENXqwC3OV",
"notifications": {
"object": "list",
"data": [
{
"object": "distribution_notification",
"livemode": true,
"id": "dntf_bXlZNOmqHkAM8gS4h12vtwlI9sJx",
"contact": "cnt_tSfCZrNE8O3c4QATSkzuCljMZ2DI"
}
],
"next_page_url": "/v1/distribution_payments/dpmt_sSTfFdsytyOearj36zDNcmXn1pJ4/notifications?page=page_5dr8SFDbv7rZ2aj4&limit=10",
"previous_page_url": "/v1/distribution_payments/dpmt_sSTfFdsytyOearj36zDNcmXn1pJ4/notifications?page_before=page_8VtqLBv3xJpY7mk2&limit=10",
"has_more": true,
"url": "/v1/distribution_payments/dpmt_sSTfFdsytyOearj36zDNcmXn1pJ4/notifications"
}
}
],
"next_page_url": "/v1/distributions/dst_tQaOR74NP2DZ9mg3votpOnCqAuGs/payments?page=page_5dr8SFDbv7rZ2aj4&limit=10",
"previous_page_url": "/v1/distributions/dst_tQaOR74NP2DZ9mg3votpOnCqAuGs/payments?page_before=page_8VtqLBv3xJpY7mk2&limit=10",
"has_more": true,
"url": "/v1/distributions/dst_tQaOR74NP2DZ9mg3votpOnCqAuGs/payments"
}
}
],
"next_page_url": "/v1/distributions?page=page_5dr8SFDbv7rZ2aj4&limit=10",
"previous_page_url": "/v1/distributions?page_before=page_8VtqLBv3xJpY7mk2&limit=10",
"has_more": true,
"url": "/v1/distributions"
}{
"object": "error",
"type": "invalid_request_error",
"code": "parameter_invalid",
"message": "The 'limit' parameter must be between 1 and 100.",
"status": 400,
"invalid-params": [
{
"code": "parameter_invalid",
"name": "body.[0].limit",
"value": 200,
"reason": "out of range"
}
]
}{
"object": "error",
"type": "invalid_request_error",
"code": "parameter_invalid",
"message": "The 'limit' parameter must be between 1 and 100.",
"status": 400,
"invalid-params": [
{
"code": "parameter_invalid",
"name": "body.[0].limit",
"value": 200,
"reason": "out of range"
}
]
}{
"object": "error",
"type": "invalid_request_error",
"code": "parameter_invalid",
"message": "The 'limit' parameter must be between 1 and 100.",
"status": 400,
"invalid-params": [
{
"code": "parameter_invalid",
"name": "body.[0].limit",
"value": 200,
"reason": "out of range"
}
]
}{
"object": "error",
"type": "invalid_request_error",
"code": "parameter_invalid",
"message": "The 'limit' parameter must be between 1 and 100.",
"status": 400,
"invalid-params": [
{
"code": "parameter_invalid",
"name": "body.[0].limit",
"value": 200,
"reason": "out of range"
}
]
}{
"object": "error",
"type": "invalid_request_error",
"code": "parameter_invalid",
"message": "The 'limit' parameter must be between 1 and 100.",
"status": 400,
"invalid-params": [
{
"code": "parameter_invalid",
"name": "body.[0].limit",
"value": 200,
"reason": "out of range"
}
]
}{
"object": "error",
"type": "invalid_request_error",
"code": "parameter_invalid",
"message": "The 'limit' parameter must be between 1 and 100.",
"status": 400,
"invalid-params": [
{
"code": "parameter_invalid",
"name": "body.[0].limit",
"value": 200,
"reason": "out of range"
}
]
}