---
title: "List campaign ledger"
method: GET
path: "/v1/creator-campaigns/{campaignId}/ledger"
tags: ["Creator Campaigns"]
---

# List campaign ledger

`GET /v1/creator-campaigns/{campaignId}/ledger`

## Request

- Base URL: `https://zernio.com/api`
- URL: `https://zernio.com/api/v1/creator-campaigns/{campaignId}/ledger`
- Auth: HTTP bearer

Lists ledger entries, newest first.

Without `participantId` it lists every entry of the campaign:

- earnings drawn from the budget (accruals, per-post payments, pool shares, adjustments)
- the approvals, hold releases and settlements that move money between its participants' buckets
- their reversals

Pass `participantId` to narrow the list to one participant's entries.

## Path parameters

- `campaignId` string, required

## Query parameters

- `participantId` string
- `kind` 'accrual' | 'approval' | 'hold_release' | 'adjustment' | 'settling' | 'settlement' | 'reversal' | 'topup' | 'transfer' | 'fee'
- `limit` integer
- `skip` integer

## Response `200`

Ledger entries

- object
  - `entries` CampaignLedgerEntry[], required
    - `id` string, required
    - `kind` 'accrual' | 'approval' | 'hold_release' | 'adjustment' | 'settling' | 'settlement' | 'reversal' | 'topup' | 'transfer' | 'fee', required
    - `amountCents` integer, required: Always positive; direction is given by debit and credit.
    - `debit` LedgerAccountSide, required
      - `scopeType` string
      - `scopeId` string
      - `bucket` string
    - `credit` LedgerAccountSide, required
      - `scopeType` string
      - `scopeId` string
      - `bucket` string
    - `holdUntil` string, date-time, nullable, required
    - `releasedByEntryId` string, nullable, required
    - `reversesEntryId` string, nullable, required
    - `referenceType` string, nullable, required
    - `referenceId` string, nullable, required
    - `cause` string, required
    - `externalReference` string, nullable, required: The payout reference recorded with a settlement (your transfer or invoice id).
    - `actor` string, required
    - `createdAt` string, date-time, required
  - `pagination` object, required
    - `total` integer, required
    - `limit` integer, required
    - `skip` integer, required

## Other responses

- `400`: Invalid request
- `401`: Missing or invalid API key. `code` is `missing_credentials` when no Authorization header was sent and `invalid_credentials` when the key is unknown, revoked or expired.
- `403`: Refused. Code `feature_not_available`: creator campaigns run on usage-based billing and the workspace that owns the campaign is not on it yet ("Creator campaigns require usage-based billing..."; contact support to switch), or the campaign reached `caps.maxParticipants` (invites and joins only). Code `insufficient_permissions`: a restricted API key without the `creator_campaigns` resource group.
- `404`: The campaign, participant or submission does not exist, belongs to another team, or sits in a profile this key cannot reach (code `resource_not_found`).

## Changes

- **2026-10-28** `8f2c44dd7550`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/creator-campaigns/:campaignId/ledger/get.md)

---

[API](https://skmtc.dev/zernio/apis/zernio-api.md) - [All operations](https://skmtc.dev/zernio/apis/zernio-api/llms.txt) - [OpenAPI document](https://skmtc.dev/zernio/apis/zernio-api/revisions/c319eb5d95b6?raw)
