---
title: "Complete bounded trail CSV. Requires trail:read and the pilot gate; free."
method: GET
path: "/v1/trail/export.csv"
tags: ["Guard"]
---

# Complete bounded trail CSV. Requires trail:read and the pilot gate; free.

`GET /v1/trail/export.csv`

## Request

- Base URL: `https://api.layrcake.dev`
- URL: `https://api.layrcake.dev/v1/trail/export.csv`
- Auth: HTTP bearer

One snapshot; at most 10,000 events, 1,000 approvals, 5,000 decisions, 10 MiB and five seconds. No partial downloads. Identity/access changes require regeneration. Private no-store attachment. CSV cells are quoted after prefixing an apostrophe to formula-leading text or leading tab/CR/LF; compare parsed cells after that transform, retaining ISO timestamps. Proof omits recipient identities and content; supporting settlement events remain separate from directly campaign-filtered events.

## Query parameters

- `campaign_id` string, uuid
- `email` string
- `kind` string[]
- `since` string, date-time
- `until` string, date-time

## Response `200`

Complete buffered attachment

## Other responses

- `400`: Invalid filters or export bound/deadline exceeded. Identity changed: HTTP 400 invalid_request; Record identity changed; regenerate the export. Discarded exports have no settled read audit.
- `401`: Key revoked or expired
- `403`: Missing trail:read or access changed
- `404`: Pilot disabled or campaign not in this workspace

---

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