curl --request GET \
--url https://api.{tenant}.getomneo.com/api/v3/profiles/{profile}/ledgersimport requests
url = "https://api.{tenant}.getomneo.com/api/v3/profiles/{profile}/ledgers"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.{tenant}.getomneo.com/api/v3/profiles/{profile}/ledgers', 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.{tenant}.getomneo.com/api/v3/profiles/{profile}/ledgers",
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.{tenant}.getomneo.com/api/v3/profiles/{profile}/ledgers"
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.{tenant}.getomneo.com/api/v3/profiles/{profile}/ledgers")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.{tenant}.getomneo.com/api/v3/profiles/{profile}/ledgers")
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{
"data": [
{
"id": 123,
"profile": {
"id": "<string>",
"email": "<string>"
},
"type": "<string>",
"type_attributes": {
"id": 123,
"profile_id": "<string>",
"timezone": "<string>",
"value_initial": "<string>",
"value_remaining": "<string>",
"has_notified_issue": true,
"has_notified_expiry": true,
"has_notified_extend": true,
"expires_at": "<string>",
"issued_at": "<string>",
"is_expired": "<string>",
"is_active": "<string>",
"issued_local_at": "<string>",
"expires_local_at": "<string>",
"notify_issue_at": "<string>",
"notify_expiry_at": "<string>",
"extended_at": "<string>",
"definition": {
"id": 123,
"name": "<string>",
"handle": "<string>",
"region_id": 123,
"region": {
"id": 123,
"name": "<string>",
"handle": "<string>",
"currency": "<string>"
},
"currency": "<string>",
"period": 123,
"period_type": "<string>",
"absolute_expiry": "<string>",
"expiry_condition": [
"<unknown>"
],
"description": "<string>",
"short_description": "<string>",
"long_description": "<string>",
"terms_conditions": "<string>",
"earn_instructions": "<string>",
"icon": "<string>",
"image_url": "<string>",
"issue_target_id": 123,
"expiry_target_id": 123,
"extend_target_id": 123,
"notify_issue_offset": 123,
"notify_expiry_offset": 123,
"notify_schedule_offset": 123,
"notify_issue_offset_days": 123,
"notify_issue_offset_hour": 123,
"notify_remind_offset_days": 123,
"notify_remind_offset_hour": 123,
"notify_extend_offset_days": 123,
"notify_extend_offset_hour": 123,
"internal_notes": "<string>",
"type": "<string>",
"campaign": "<string>",
"value": 123,
"max_value": 123,
"is_extendable": true,
"is_assignable": true,
"is_reassignable": true,
"is_published": true,
"extend_days": 123,
"extend_days_condition": [
"<unknown>"
],
"tags": [
"<string>"
],
"created_at": "<string>",
"updated_at": "<string>"
},
"meta": [
"<unknown>"
],
"created_at": "<string>",
"updated_at": "<string>",
"source_id": 123,
"source_type": "<string>"
},
"description": "<string>",
"dollar_value": 123,
"dollar_balance": 123,
"point_value": 123,
"point_dollar_value": 123,
"point_balance": 123,
"expires_at": "<string>",
"asset": "<string>",
"kind": "<string>",
"delta": 123,
"balance_after": 123,
"delta_value": 123,
"balance_after_value": 123,
"region_id": 123,
"occurred_at": "<string>",
"created_at": "<string>",
"ledgerable": {
"type": "<string>",
"id": 123
},
"source": {
"type": "<string>",
"id": 123
},
"meta": [
"<unknown>"
],
"origin": {
"redemption": {
"id": 123
},
"transaction": "<string>",
"order": "<string>",
"source": "<string>",
"rate": "<string>",
"meta": "<unknown>"
}
}
]
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}Browse Ledgers
A GET to the /profiles/{profile}/ledgers endpoint returns the profile’s ledger entries, newest first: one entry for every change to a spendable balance — points, rewards, credits, and benefits whose definition values them as money. Each entry carries the asset it moved, why (kind), the signed delta, and the asset’s balance_after, so the latest entry for an asset matches the member’s balance; a point entry also prices both in dollars (delta_value, balance_after_value) at the rate the balance’s points value uses. Each entry also says where it came from (origin), read off the holding it is about: the transaction (with its receipt, and the item and its SKU when it was earned on one) or order it was earned on, any other source it names (with an interaction’s name), the rate a point was issued at, its meta, and, for a redemption, reversal or return, the redemption. Entries are for the member’s current region unless filter[region_id] names another; filter[asset] narrows to one asset. Rows written before entries existed follow the entries, for points and rewards only, whatever region the member is in: they recorded creations alone, so they have no kind, delta or balance_after and their balances do not reconcile. They are left out when the request filters on kind or occurred_at, which they have no value for. filter[legacy]=0 returns only entries; filter[legacy]=1 returns only the rows written before entries existed, of every type and across every region, newest first, with no catch-up written.
curl --request GET \
--url https://api.{tenant}.getomneo.com/api/v3/profiles/{profile}/ledgersimport requests
url = "https://api.{tenant}.getomneo.com/api/v3/profiles/{profile}/ledgers"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.{tenant}.getomneo.com/api/v3/profiles/{profile}/ledgers', 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.{tenant}.getomneo.com/api/v3/profiles/{profile}/ledgers",
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.{tenant}.getomneo.com/api/v3/profiles/{profile}/ledgers"
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.{tenant}.getomneo.com/api/v3/profiles/{profile}/ledgers")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.{tenant}.getomneo.com/api/v3/profiles/{profile}/ledgers")
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{
"data": [
{
"id": 123,
"profile": {
"id": "<string>",
"email": "<string>"
},
"type": "<string>",
"type_attributes": {
"id": 123,
"profile_id": "<string>",
"timezone": "<string>",
"value_initial": "<string>",
"value_remaining": "<string>",
"has_notified_issue": true,
"has_notified_expiry": true,
"has_notified_extend": true,
"expires_at": "<string>",
"issued_at": "<string>",
"is_expired": "<string>",
"is_active": "<string>",
"issued_local_at": "<string>",
"expires_local_at": "<string>",
"notify_issue_at": "<string>",
"notify_expiry_at": "<string>",
"extended_at": "<string>",
"definition": {
"id": 123,
"name": "<string>",
"handle": "<string>",
"region_id": 123,
"region": {
"id": 123,
"name": "<string>",
"handle": "<string>",
"currency": "<string>"
},
"currency": "<string>",
"period": 123,
"period_type": "<string>",
"absolute_expiry": "<string>",
"expiry_condition": [
"<unknown>"
],
"description": "<string>",
"short_description": "<string>",
"long_description": "<string>",
"terms_conditions": "<string>",
"earn_instructions": "<string>",
"icon": "<string>",
"image_url": "<string>",
"issue_target_id": 123,
"expiry_target_id": 123,
"extend_target_id": 123,
"notify_issue_offset": 123,
"notify_expiry_offset": 123,
"notify_schedule_offset": 123,
"notify_issue_offset_days": 123,
"notify_issue_offset_hour": 123,
"notify_remind_offset_days": 123,
"notify_remind_offset_hour": 123,
"notify_extend_offset_days": 123,
"notify_extend_offset_hour": 123,
"internal_notes": "<string>",
"type": "<string>",
"campaign": "<string>",
"value": 123,
"max_value": 123,
"is_extendable": true,
"is_assignable": true,
"is_reassignable": true,
"is_published": true,
"extend_days": 123,
"extend_days_condition": [
"<unknown>"
],
"tags": [
"<string>"
],
"created_at": "<string>",
"updated_at": "<string>"
},
"meta": [
"<unknown>"
],
"created_at": "<string>",
"updated_at": "<string>",
"source_id": 123,
"source_type": "<string>"
},
"description": "<string>",
"dollar_value": 123,
"dollar_balance": 123,
"point_value": 123,
"point_dollar_value": 123,
"point_balance": 123,
"expires_at": "<string>",
"asset": "<string>",
"kind": "<string>",
"delta": 123,
"balance_after": 123,
"delta_value": 123,
"balance_after_value": 123,
"region_id": 123,
"occurred_at": "<string>",
"created_at": "<string>",
"ledgerable": {
"type": "<string>",
"id": 123
},
"source": {
"type": "<string>",
"id": 123
},
"meta": [
"<unknown>"
],
"origin": {
"redemption": {
"id": 123
},
"transaction": "<string>",
"order": "<string>",
"source": "<string>",
"rate": "<string>",
"meta": "<unknown>"
}
}
]
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}Filtering
filter and sort query parameters. See Filtering, sorting, and search for paging and for the shared search_with, custom_field, and json_contains filters.Examples
curl -X GET "https://api.[tenant].getomneo.com/api/v3/profiles/{profile}/ledgers?filter[id]=123" \
-H "Authorization: Bearer ${TOKEN}"
curl -X GET "https://api.[tenant].getomneo.com/api/v3/profiles/{profile}/ledgers?filter[created_at][gte]=2026-01-01&filter[created_at][lt]=2026-02-01" \
-H "Authorization: Bearer ${TOKEN}"
Operators
| Operator | Meaning | Example |
|---|---|---|
eq | Equal to. Applied when you give no operator. | filter[id]=123 |
ne | Not equal to. | filter[id][ne]=123 |
gt | Greater than. | filter[created_at][gt]=2026-01-01 |
gte | Greater than or equal to. | filter[created_at][gte]=2026-01-01 |
lt | Less than. | filter[created_at][lt]=2026-02-01 |
lte | Less than or equal to. | filter[created_at][lte]=2026-02-01 |
in | Matches any value in a comma separated list. | filter[id][in]=123,456 |
not_in | Excludes every value in a comma separated list. | filter[id][not_in]=123,456 |
nullable | 1 returns records where the attribute is empty. Any other value returns records where it is set. | filter[expires_at][nullable]=1 |
not_has operator applies to related attributes, which this endpoint does not have.
Filter attributes
| Attribute | Attribute | Attribute |
|---|---|---|
id | profile_id | dollar_value |
dollar_balance | point_value | point_balance |
point_dollar_value | expires_at | asset |
kind | region_id | occurred_at |
created_at |
sort key, for example ?sort=-created_at for descending order.