Private records, ready to share.
Create ledger statements and transaction records, keep a private document library and attach reviewed files to Support messages. These endpoints require an authenticated dashboard session; merchant server API keys do not grant access.
01Inspect a private document library
Workspace and Support catalog/detail reads run through Go. Use purpose, status, before and a decimal limit of 1–50; each filter accepts one value. A cursor belongs to the same currently visible library. Results contain public metadata only. Draft attachments belong to their original author and session audience; published attachments follow the original message visibility and operator category permissions. Current access is rechecked before the read completes. File availability metadata does not replace download-time scan and original-version proof.
02Create an export
Use Files & exports in the workspace dashboard, or POST a statement, receipt or merchant payment request with an original Idempotency-Key. The returned file starts queued. Poll its metadata until available, failed, rejected, cancelled or review. Only available files can be downloaded.
03Choose the right financial record
Statements cover one wallet and asset, up to 366 days and 10,000 movements, with exact atomic-unit amounts and reconciled account totals. CSV preserves Unicode and protects spreadsheet formulas. PDF embeds its font and represents unsupported glyphs as visible Unicode scalar values. Transaction records show processing state at generation; a reserved or broadcast withdrawal is not proof of delivery. A merchant payment request is not a tax invoice.
04Upload original bytes privately
Allocate a Support file with a portable filename, application/pdf, image/png or image/jpeg, exact byte size and lowercase SHA-256. Send the same bytes to its content endpoint as application/octet-stream using a retained content Idempotency-Key. The binary limit is 8 MiB; other JSON routes retain their own smaller limit. Reselect the original file after an interrupted upload. Archives and other file types are not supported. Unfinished upload allocations expire after twenty-four hours unless a receive lease is still active.
05Wait for evidence before attaching
Uploaded bytes stay quarantined until scanning and original-version storage verification succeed. Up to five unique available files can be included as optional attachmentIds in a Support reply. Each file must belong to the sending author, audience and ticket and may bind to one message. Internal-note attachments remain visible only to authorized operators. Omit attachmentIds for a text-only message.
06Download with current access
GET the authorized download route to receive a 303 redirect to an attachment download. The temporary link binds the exact stored version and expires after five minutes. Keep it private and out of logs. Workspace membership and Support permissions are checked again for each link. Unsigned object paths and file IDs alone grant no access.
07Recover or cancel clearly
Retain the original key and exact request body before each write. Recover those values after a lost response and refresh current metadata. Cancel a pending or failed file using expectedVersion. A requester or current workspace administrator can cancel an export; cancellation does not erase the retained storage evidence. Each account may keep ten active requests, create thirty per UTC day and submit fifty MiB of declared upload bytes per UTC day.
08Keep an interrupted export recoverable
The dashboard confirms recovery storage before sending a request and validates the returned workspace, document purpose, known file ID and cancellation version before clearing it. Lost or mismatched acknowledgements preserve the original retry. Fresh document details remain readable when service-status inspection is unavailable. Dismissing a saved retry is an explicit local action; it does not cancel server processing or delete an existing document.
09Inspect backup requests separately
Owner, Operations and Security operators can inspect GET /v1/admin/backups, request a full snapshot and close an unverified attempt through the isolated Go Operations service. Current sessions and recent exact passkeys are required. A queued receipt records a request, not a completed backup. Closing an attempt requires all four backup worker locks and preserves existing objects and the verified recovery point. Original keys and bodies remain recoverable after reload; dismissing a saved retry only clears local recovery. Backup readiness never authorizes financial resumption. File-processing totals and file runtime status retain their existing implementation.
// Authenticated workspace session. POSTs require an Idempotency-Key.
POST /v1/workspaces/{workspaceId}/files/statements
{
"format": "pdf",
"statement": {
"walletId": "original-wallet-uuid",
"assetId": "ethereum:sepolia:usdc",
"from": "2026-10-01T00:00:00Z",
"to": "2026-11-01T00:00:00Z",
"timezone": "UTC"
}
}
GET /v1/workspaces/{workspaceId}/files?purpose=statement&status=all&limit=20
GET /v1/workspaces/{workspaceId}/files/{fileId}
GET /v1/workspaces/{workspaceId}/files/{fileId}/download
POST /v1/workspaces/{workspaceId}/files/{fileId}/cancel
{ "expectedVersion": 1 }
POST /v1/workspaces/{workspaceId}/files/receipts
{ "kind": "withdrawal", "referenceId": "original-transaction-uuid" }
POST /v1/workspaces/{workspaceId}/files/invoices
{ "orderId": "original-order-uuid" }
// Allocate, send binary bytes, poll, then bind only available files.
POST /v1/account/support/{ticketId}/files
{ "filename": "reference.pdf", "contentType": "application/pdf",
"sizeBytes": 12345, "sha256": "original-lowercase-64-character-sha256" }
POST /v1/account/support/{ticketId}/files/{fileId}/content
Content-Type: application/octet-stream
// Exact original bytes, not JSON or base64.
GET /v1/account/support/{ticketId}/files
POST /v1/account/support/{ticketId}/messages
{ "message": "Please review this reference.", "attachmentIds": ["available-file-uuid"] }
// Operator Support file routes use /v1/admin/support/{ticketId}/files
// and require current category permission plus recent operator passkey verification.
// Aggregate-only storage monitor: GET /v1/admin/files (Owner, Operations, Security).Open your workspace