Skip to main content
Scrip provides reporting endpoints for tracking program financials, browsing the ledger audit trail, and monitoring API usage. All reporting data is computed in real time from the double-entry ledger.

Ledger Summary

Get aggregated balances and flows across all assets in a program:
GET /v1/reports/ledger-summary?program_id=program-uuid
The response includes one entry per asset:
FieldDescription
total_issuedCumulative credits to participants (all time)
total_redeemedCumulative value redeemed by participants (all time)
total_expiredCumulative value expired via lot expiration (all time)
total_forfeitedCumulative value forfeited via explicit forfeit actions (all time)
current_balanceNet outstanding liability (issued minus redeemed minus expired minus forfeited)
participant_countDistinct participants holding this asset
The program_id filter is optional. Omitting it returns summaries across all programs in the organization.

Program Activity

Compare activity across programs:
GET /v1/reports/program-activity
Returns one entry per program with:
FieldDescription
event_countTotal events processed
journal_countTotal ledger entries created
total_issuedCumulative credits via this program
total_redeemedCumulative value redeemed via this program
unique_participantsDistinct participants who earned or redeemed
last_activity_atTimestamp of the most recent ledger entry
Use the since parameter to filter to programs with activity after a given timestamp:
GET /v1/reports/program-activity?since=2025-01-01T00:00:00Z

Journal Entries

The journal is the full audit trail of every ledger movement. Each entry represents an atomic set of postings (debits and credits) that balance to zero.
GET /v1/journal-entries?program_id=program-uuid

Filtering

FilterDescription
program_idEntries for a specific program
participant_idEntries involving a specific participant
external_idEntries by external ID
group_idEntries involving a group
asset_idFilter by asset
bucketFilter by bucket (AVAILABLE, HELD, DEFERRED)
event_idEntries from a specific event
rule_idEntries created by a specific rule
action_typeFilter by ledger action type (CREDIT, DEBIT, HOLD, RELEASE, FORFEIT, MATURITY)
reference_idFilter by correlation ID to find all entries associated with a specific hold/release/settle flow
from / toTime range
min_amount / max_amountPosting amount range (signed: credits positive, debits negative)
The entity filters (participant_id, external_id, group_id) are mutually exclusive.

Entry Detail

GET /v1/journal-entries/{id}
Returns the full entry with all postings. Each posting includes the entity type, bucket, asset, signed amount, and timestamp. Postings within an entry always sum to zero.

Transaction History

View a specific participant’s or program’s ledger history:
# Participant history
GET /v1/participants/{id}/activity/history

# Program history
GET /v1/programs/{id}/history
Both return a chronological list of ledger entries involving that entity. Useful for building balance history views or transaction receipts in your UI. The participant history endpoint supports two time-range filters that can be combined:
FilterFilters onDescription
from / tocreated_atWhen the journal entry was recorded in the system
event_from / event_toevent_timestampWhen the originating event occurred in your system
This dual-filter lets you distinguish between when a transaction was recorded and when the underlying event happened. Entries without an originating event fall back to created_at for event_from/event_to filtering.

Request Logs

Browse a log of every API request made to your organization:
GET /v1/logs
Each entry includes the HTTP method, path, status code, duration, and authentication type. Use the detail endpoint to inspect the full request and response bodies:
GET /v1/logs/{id}
FilterDescription
methodHTTP method (POST, GET, etc.)
route_patternRoute pattern (e.g., /v1/events)
request_idSpecific request by X-Request-ID header
status_min / status_maxStatus code range
from / toTime range

Usage Analytics

Get daily aggregated API usage metrics:
GET /v1/usage
Returns one entry per day with total request count, error count (status >= 400), and average latency in milliseconds. Defaults to the last 30 days. Use from and to to specify a custom range.

Common Queries

GoalEndpointFilters
Total points outstandingLedger Summaryprogram_id
Program comparisonProgram Activitysince
Participant statementJournal Entriesparticipant_id
Debug a specific eventEvent ImpactFull causal chain: rules, postings, state changes, balance impact
Breakage trackingLedger Summarytotal_expired + total_forfeited fields
API error investigationRequest Logsstatus_min=400