curl --request GET \
--url https://go.aiinsurance.io/api/v1/companies/{companyId}/financials/events/{eventId}/reserve-updates \
--header 'Authorization: <api-key>'import requests
url = "https://go.aiinsurance.io/api/v1/companies/{companyId}/financials/events/{eventId}/reserve-updates"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://go.aiinsurance.io/api/v1/companies/{companyId}/financials/events/{eventId}/reserve-updates', 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://go.aiinsurance.io/api/v1/companies/{companyId}/financials/events/{eventId}/reserve-updates",
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: <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"
"net/http"
"io"
)
func main() {
url := "https://go.aiinsurance.io/api/v1/companies/{companyId}/financials/events/{eventId}/reserve-updates"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://go.aiinsurance.io/api/v1/companies/{companyId}/financials/events/{eventId}/reserve-updates")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://go.aiinsurance.io/api/v1/companies/{companyId}/financials/events/{eventId}/reserve-updates")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"rows": [
{
"kind": "erodingPayment",
"journalId": "550e8400-e29b-41d4-a716-446655440903",
"categoryId": "550e8400-e29b-41d4-a716-446655440100",
"invoiceId": "550e8400-e29b-41d4-a716-446655440700",
"paymentId": "550e8400-e29b-41d4-a716-446655440800",
"amountCents": 4000,
"paymentDate": "2026-06-10",
"createdAt": "2026-06-10T09:00:00.000Z"
},
{
"kind": "user",
"journalId": "550e8400-e29b-41d4-a716-446655440902",
"categoryId": "550e8400-e29b-41d4-a716-446655440100",
"reserveDate": "2026-06-01",
"previousTotalCents": 0,
"expectedTotalCents": 10000,
"deltaCents": 10000,
"memo": "Initial reserve",
"createdBy": "550e8400-e29b-41d4-a716-446655440999",
"displayAuthor": null,
"createdAt": "2026-06-01T10:30:00.000Z"
},
{
"kind": "reset",
"journalId": "550e8400-e29b-41d4-a716-446655440901",
"categoryId": "550e8400-e29b-41d4-a716-446655440100",
"reversedUserReserveCents": 2500,
"createdBy": "550e8400-e29b-41d4-a716-446655440999",
"displayAuthor": null,
"createdAt": "2026-05-01T08:00:00.000Z"
}
]
}List Reserve Updates
Lists a claim’s reserve change history, as the app’s Reserve Updates tab
shows it: each expected-total change a user made, with who made it and
when, and each automatic reserve reduction from a payment. Narrow it to
one reserve category, such as indemnity or expense, with categoryId. For
the current reserve, paid, and incurred figures, use Get Entity Balances
(getFinancialsEntityBalances). For every event’s history in one feed,
use List Company Reserve Updates (listFinancialsCompanyReserveUpdates).
Returns an event’s reserve-update feed: user expected-total updates and
the automatic rows for reserve-eroding payments of currently-linked live
invoices, discriminated by kind. A reserve history reset establishes a
per-category horizon — rows at or before it never render, and the reset
itself renders as one marker row.
Rows are ordered by journal execution order, newest first. An event with
no reserve history — unknown ids included — reads as an empty feed.
categoryId narrows the feed to one reserved category.
Required permission: event.view
curl --request GET \
--url https://go.aiinsurance.io/api/v1/companies/{companyId}/financials/events/{eventId}/reserve-updates \
--header 'Authorization: <api-key>'import requests
url = "https://go.aiinsurance.io/api/v1/companies/{companyId}/financials/events/{eventId}/reserve-updates"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://go.aiinsurance.io/api/v1/companies/{companyId}/financials/events/{eventId}/reserve-updates', 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://go.aiinsurance.io/api/v1/companies/{companyId}/financials/events/{eventId}/reserve-updates",
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: <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"
"net/http"
"io"
)
func main() {
url := "https://go.aiinsurance.io/api/v1/companies/{companyId}/financials/events/{eventId}/reserve-updates"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://go.aiinsurance.io/api/v1/companies/{companyId}/financials/events/{eventId}/reserve-updates")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://go.aiinsurance.io/api/v1/companies/{companyId}/financials/events/{eventId}/reserve-updates")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"rows": [
{
"kind": "erodingPayment",
"journalId": "550e8400-e29b-41d4-a716-446655440903",
"categoryId": "550e8400-e29b-41d4-a716-446655440100",
"invoiceId": "550e8400-e29b-41d4-a716-446655440700",
"paymentId": "550e8400-e29b-41d4-a716-446655440800",
"amountCents": 4000,
"paymentDate": "2026-06-10",
"createdAt": "2026-06-10T09:00:00.000Z"
},
{
"kind": "user",
"journalId": "550e8400-e29b-41d4-a716-446655440902",
"categoryId": "550e8400-e29b-41d4-a716-446655440100",
"reserveDate": "2026-06-01",
"previousTotalCents": 0,
"expectedTotalCents": 10000,
"deltaCents": 10000,
"memo": "Initial reserve",
"createdBy": "550e8400-e29b-41d4-a716-446655440999",
"displayAuthor": null,
"createdAt": "2026-06-01T10:30:00.000Z"
},
{
"kind": "reset",
"journalId": "550e8400-e29b-41d4-a716-446655440901",
"categoryId": "550e8400-e29b-41d4-a716-446655440100",
"reversedUserReserveCents": 2500,
"createdBy": "550e8400-e29b-41d4-a716-446655440999",
"displayAuthor": null,
"createdAt": "2026-05-01T08:00:00.000Z"
}
]
}Authorizations
Path Parameters
Response
The event's reserve-update feed, newest first
