API reference

Reports

Draft, review and file STRs, nightly CTR batches and evidence packs with the Financial Intelligence Centre.

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.

No connection to goAML ships with Sentinel yet. Until one is configured, a filing is queued and retried every 5 minutes, and answers 202.

List filings

GET /v1/reports

Filings 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.

StatusMeaning
draftBeing written
awaiting_approvalSent for a second person to approve
filedSent to goAML
acknowledgedThe FIC has answered
rejectedRefused. 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 pathWhat 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-kycCopy missing subject fields from the customer's record. 422 if it has nothing to add.
POST /v1/reports/str/{id}/transactions/{index}/use-source-dateReplace 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}/reviewSend a finished draft to a second person
POST /v1/reports/str/{id}/fileApprove and file with goAML (reviewer or admin, not the drafter)
POST /v1/reports/str/{id}/reopenMove a rejected STR back to draft. The last rejection is kept.
GET /v1/reports/str/{id}/xmlThe 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 pathWhat 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}/submitFile every included row that has a customer ID (reviewer or admin, not whoever built or edited the batch)
GET /v1/reports/ctr/{id}/xmlThe 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 pathWhat 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}/uploadAttach the document a section needs (PDF, PNG or JPEG, up to 20 MB, form field file)
POST /v1/reports/packs/{id}/generateBuild the PDF from live data and record its SHA-256 in the audit log (reviewer or admin)
GET /v1/reports/packs/{id}/downloadThe generated PDF
Sentinel is a Somu Labs product. © 2026 Somu Labs Ltd.