Docs

API reference

The Sentrix API is a workspace-scoped REST surface. Every request is authenticated with a Bearer API key created under Dashboard → Settings → API keys. Requests and responses are JSON. Decisions run against your published ruleset; sandbox keys return simulated results.

Integration approach

Sentrix integrates into your existing flow rather than replacing it. You call the decisioning endpoint from your onboarding and payment paths, act on the returned verdict, and let non-approvals flow into case operations for your analysts. A typical integration is a few endpoints, JSON in and out — not a heavy SDK. Sentrix reads the party or transaction you send; it does not connect directly into your core or ledger, so you stay in control of what data leaves your systems.

Workspace-scoped Every key and request is bound to one workspace; data never crosses tenants.
Versioned path The surface is versioned under /api/v1; breaking changes ship under a new version.
Sandbox vs live sk_test_ keys return simulated results for integration; sk_live_ keys run under your Order Form.
Case-driven A non-approval opens a case automatically and returns its reference — poll /cases to follow it.
Webhooks Push notifications are on the roadmap; today the surface is request/response, so poll for updates.

Base URL

https://sentrix.world/api/v1

All endpoints are relative to this base. If you are issued a dedicated workspace host in the future, substitute it here.

Authentication

Authorization: Bearer sk_test_...

Pass your key in the Authorization header on every request. Sandbox keys are prefixed sk_test_ and live keys sk_live_. Only the key's hash is stored — copy it at creation time. Missing or invalid keys return 401.

Create a decision

subject is required; amount (number) and geo (ISO country) are optional. A non-approval decision automatically opens a case and returns its reference.

curl https://sentrix.world/api/v1/decisions \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -d '{ "subject": "Acme Holdings Ltd", "amount": 4200, "geo": "GB" }'

→ 201 {
  "id": "…",
  "reference": "DEC-00006",
  "subject": "Acme Holdings Ltd",
  "decision": "REVIEW",
  "score": 61,
  "reasons": ["Large transaction"],
  "ruleset": "Baseline risk policy v1",
  "mode": "sandbox",
  "case": "CASE-0003"
}

List cases

Returns the workspace's most recent cases (up to 100), newest first.

GET /api/v1/cases
Authorization: Bearer sk_test_...

→ 200 {
  "data": [
    {
      "id": "…",
      "reference": "CASE-0003",
      "subject": "Acme Holdings Ltd",
      "status": "open",
      "priority": "normal",
      "disposition": null,
      "assignee": null,
      "createdAt": "2026-07-20T10:14:02.000Z"
    }
  ]
}

Disposition a case

disposition must be one of cleared, blocked or escalated. The action is recorded in the audit log.

POST /api/v1/cases/:id/disposition
Authorization: Bearer sk_test_...
Content-Type: application/json

{ "disposition": "cleared" }

→ 200 { "id": "…", "status": "dispositioned", "disposition": "cleared" }

Errors

All errors use a consistent JSON envelope:

{ "error": { "type": "invalid_request", "message": "Field 'subject' is required." } }
400 invalid_request Malformed JSON or a missing/invalid field.
401 unauthorized Missing or invalid API key.
404 not_found The referenced case does not exist in this workspace.

Endpoints

POST /api/v1/decisions Score a party/transaction against the active ruleset; opens a case on non-approval.
GET /api/v1/cases List the workspace's cases.
POST /api/v1/cases/:id/disposition Disposition a case (cleared | blocked | escalated).