Reports
These endpoints need a signed-in person, not an API key. Anyone signed in can read reports. Analysts, reviewers and admins draft and edit them. Only reviewers and admins file or submit, and never the person who drafted the report, so filing always takes two people.
202.List filings
GET /v1/reportsFilings with the FIC, newest change first. Filter with kind (str, ctr or pack) and page with limit and cursor. The response also carries figures that cover all filings, not just the page.
| Status | Meaning |
|---|---|
draft | Being written |
awaiting_approval | Sent for a second person to approve |
filed | Sent to goAML |
acknowledged | The FIC has answered |
rejected | Refused. It can be reopened and fixed. |
Suspicious transaction reports (STR)
An STR starts from a case: POST /v1/reports/str with {"case_id": "CASE-0192"}. A second call for the same case returns the STR it already has, with 200 instead of 201.
| Method and path | What it does |
|---|---|
GET /v1/reports/str/{id} | The STR, with the checks goAML would run on it now |
PATCH /v1/reports/str/{id} | Save a draft |
POST /v1/reports/str/{id}/subject/from-kyc | Copy missing subject fields from the customer's record. 422 if it has nothing to add. |
POST /v1/reports/str/{id}/transactions/{index}/use-source-date | Replace a bad transaction date with the one the source ledger sent |
POST /v1/reports/str/{id}/attachments/{key} | Attach a PDF, PNG or JPEG of up to 20 MB, in the form field file. GET fetches it and DELETE removes it. |
POST /v1/reports/str/{id}/review | Send a finished draft to a second person |
POST /v1/reports/str/{id}/file | Approve and file with goAML (reviewer or admin, not the drafter) |
POST /v1/reports/str/{id}/reopen | Move a rejected STR back to draft. The last rejection is kept. |
GET /v1/reports/str/{id}/xml | The goAML document that would be sent now |
Filing answers 200 when it is filed or goAML refused it (status says which), 202 when goAML couldn't be reached, and 422 when the checks don't pass.
Cash transaction reports (CTR)
Sentinel builds a batch of the day's cash transactions every night. POST /v1/reports/ctr with {"date": "2026-10-16"} builds one on request, and a second call for the same day returns the batch it has.
| Method and path | What it does |
|---|---|
GET /v1/reports/ctr/{id} | The batch and a page of its rows. attention=true returns only rows with no customer ID. Page with limit and cursor. |
PATCH /v1/reports/ctr/{id}/rows/{row_id} | Include or leave out a row, or give it a customer ID, which also goes on the customer's record |
POST /v1/reports/ctr/{id}/submit | File every included row that has a customer ID (reviewer or admin, not whoever built or edited the batch) |
GET /v1/reports/ctr/{id}/xml | The goAML document that would be sent now |
Evidence packs
A pack gathers the figures and documents a regulator asks for over a period. POST /v1/reports/packs starts one. Send from and to dates and an optional purpose (up to 200 characters), or send nothing for the current quarter.
| Method and path | What it does |
|---|---|
GET /v1/reports/packs/{id} | The pack, with live figures in its sections |
PATCH /v1/reports/packs/{id}/sections/{key} | Edit a section |
POST /v1/reports/packs/{id}/sections/{key}/upload | Attach the document a section needs (PDF, PNG or JPEG, up to 20 MB, form field file) |
POST /v1/reports/packs/{id}/generate | Build the PDF from live data and record its SHA-256 in the audit log (reviewer or admin) |
GET /v1/reports/packs/{id}/download | The generated PDF |