---
title: "Retrieve a fan ledger"
method: POST
path: "/v1/fans/ledger/search"
tags: ["fans"]
---

# Retrieve a fan ledger

`POST /v1/fans/ledger/search`

## Request body

- union
  - object
    - `cursor` string — Opaque cursor from a prior response.
    - `email` string, email — Fan email address.
    - `externalId` string, required — Integration-owned, customer-scoped fan identifier.
    - `fanId` string — Opaque Laylo fan identifier.
    - `limit` integer — Ledger entries per page; defaults to 50 and caps at 200.
    - `phone` string — E.164 phone number including the national code, for example +12025550100.
    - `types` string[] — Optional ledger event types to include.
  - object
    - `cursor` string — Opaque cursor from a prior response.
    - `email` string, email, required — Fan email address.
    - `externalId` string — Integration-owned, customer-scoped fan identifier.
    - `fanId` string — Opaque Laylo fan identifier.
    - `limit` integer — Ledger entries per page; defaults to 50 and caps at 200.
    - `phone` string — E.164 phone number including the national code, for example +12025550100.
    - `types` string[] — Optional ledger event types to include.
  - object
    - `cursor` string — Opaque cursor from a prior response.
    - `email` string, email — Fan email address.
    - `externalId` string — Integration-owned, customer-scoped fan identifier.
    - `fanId` string — Opaque Laylo fan identifier.
    - `limit` integer — Ledger entries per page; defaults to 50 and caps at 200.
    - `phone` string, required — E.164 phone number including the national code, for example +12025550100.
    - `types` string[] — Optional ledger event types to include.
  - object
    - `cursor` string — Opaque cursor from a prior response.
    - `email` string, email — Fan email address.
    - `externalId` string — Integration-owned, customer-scoped fan identifier.
    - `fanId` string, required — Opaque Laylo fan identifier.
    - `limit` integer — Ledger entries per page; defaults to 50 and caps at 200.
    - `phone` string — E.164 phone number including the national code, for example +12025550100.
    - `types` string[] — Optional ledger event types to include.

## Response `200`

A customer-scoped, contact-safe chronological ledger for the selected fan.

- object
  - `data` object, required
    - `entries` object[], required
      - `id` string, required — Opaque ledger entry identifier.
      - `metadata` object — Contact-safe event metadata.
      - `occurredAt` string, date-time, required — When the event occurred in ISO 8601 with an explicit UTC offset.
      - `type` string, required — Ledger event type.
  - `page_info` object, required — Cursor pagination state. Pass next_cursor back as the cursor query parameter to fetch the next page.
    - `has_more` boolean, required — Whether another page exists.
    - `next_cursor` string, nullable, required — Opaque cursor for the next page, or null at the end.

## Other responses

- `400` — The request body is malformed.
- `401` — The integrator credential or customer API key is invalid.
- `403` — The customer account behind the API key has no paid Laylo plan.
- `404` — No route matches the requested path.
- `405` — The path exists, but the HTTP method is not supported.
- `409` — The request conflicts with the current resource state.
- `429` — The per-integrator rate limit for this operation is exceeded.
- `500` — An unexpected server error occurred.

---

[API](https://skmtc.dev/laylo/apis/laylo-api.md) · [All operations](https://skmtc.dev/laylo/apis/laylo-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/laylo/laylo-api/revisions/000d81a01b74/schema)
