Pass-through integration for local government · records are never stored System status1-559-251-7767Sentra familySign in
SentraBridgeIntegration platform
DevelopersAPI version 1

Build on SentraBridge
from your own tools.

A small, stable API for city IT teams and vendors: watch flows, start runs, move flows as YAML, follow a record, and plug in an AI assistant. It never hands out the records themselves.

Check a token
export SENTRABRIDGE_URL="https://app.sentrabridge.com"
export SENTRABRIDGE_TOKEN="sbk_…"   # from Settings → API & AI assistants

curl -s "$SENTRABRIDGE_URL/v1/me" \
  -H "Authorization: Bearer $SENTRABRIDGE_TOKEN"
Answer (200), shortened
{
  "user": {
    "id": 3,
    "name": "Alex Rivera",
    "role": "admin"
  },
  "workspace": {
    "id": "01m74hqe1m08znmjtembcq6sf7",
    "name": "City of Demo",
    "timezone": "America/Los_Angeles"
  }
}
§ How it works

How a call works

41 supported endpoints and 16 assistant tools, all acting as a person in one workspace.

  1. 01Make a tokenSettings → API & AI assistants. Pick what it may do.
  2. 02Call the APISend the token as a bearer header from a script or system.
  3. 03SentraBridge checksThe token's role, your network rules and rate limits.
  4. 04Get the factsSettings, counts, record IDs, timings and plain errors.

Get a token

Sign in, open Settings → API & AI assistants and choose New token. Name it, pick what it can do and when it expires. The token is shown once; SentraBridge keeps only a fingerprint.

A token acts as you, in the workspace you made it in. Its role is the lower of your role and the limit you picked, so a viewer token made by an admin can only look.

Revoke a token on the same page and it stops working at once. If your access to the workspace ends, so does the token.

What each token role can do
RoleCanEndpoints that need it
ViewerLook: flows, runs, health, trace, approvals.16
BuilderAlso change, import, test and run flows.7
AdminAlso connections, the activity log and usage.3

Base URL and authentication

The base address is the one you sign in at: https://app.sentrabridge.com. Supported endpoints start with /v1 (with a token) or /public (no token).

Send the token in an Authorization: Bearer header on every call. Use HTTPS only, and keep tokens out of source control. Answers are JSON unless the reference says otherwise.

If your workspace limits sign-ins to certain networks, tokens must call from those networks too.

List your flows
export SENTRABRIDGE_URL="https://app.sentrabridge.com"
export SENTRABRIDGE_TOKEN="sbk_…"   # from Settings → API & AI assistants

curl -s "$SENTRABRIDGE_URL/v1/flows" \
  -H "Authorization: Bearer $SENTRABRIDGE_TOKEN"

Making changes

Calls that change something (POST and PATCH) need only the token, like calls that read. Each change is written to the activity log under the token's person.

Start a run from a script
curl -s -X POST "$SENTRABRIDGE_URL/v1/flows/$FLOW_ID/run" \
  -H "Authorization: Bearer $SENTRABRIDGE_TOKEN"

Errors

Errors use ordinary HTTP status codes and a JSON body with a message written for people. Show it to your users as it is.

Messages never include record contents or credentials. Errors from connected systems are redacted before they are saved or returned.

Real error answers
# 401
{
  "message": "Unauthenticated."
}

# 403
{
  "message": "Your role (viewer) can't do this. Ask an admin."
}

# 404
{
  "message": "Not found."
}

# 422
{
  "message": "The yaml field is required.",
  "errors": {
    "yaml": [
      "The yaml field is required."
    ]
  }
}
Status codes you may see
CodeWhat it means
401The token is missing, wrong, expired or revoked.
403The token's role is too low, or the call came from a network that isn't allowed. Some answers add a code.
404Nothing with that ID in the token's workspace.
409It can't be done in the current state, such as deciding an approval twice.
422Something in the request is wrong. errors lists messages per field; run and turn-on answers add problems.
429Too many calls. Wait for the seconds in Retry-After.
5xxOur fault, or a connected system failed (502). Safe to retry reads.

Rate limits

Limits are per minute. Token calls are counted per person; public calls per calling address. Limited endpoints share one counter, and each has its own ceiling.

Over the limit you get 429 with Retry-After; answers also carry X-RateLimit-Limit and X-RateLimit-Remaining.

Endpoints not in the table have no fixed limit today. Please poll no more than once a minute; we may add limits to protect everyone.

A published data API also has its own limit per caller, set on the flow (60 a minute unless changed).

Endpoints with a limit
EndpointLimitCounted per
POST /v1/flows/{id}/run30 a minutePerson
POST /v1/flows/{id}/tests/run60 a minutePerson
POST /v1/flows/{id}/tests/{test}/run60 a minutePerson
GET /v1/trace60 a minutePerson
POST /v1/connections/{id}/test30 a minutePerson
GET /v1/activity/export30 a minutePerson
GET /public/data/{workspace}/{flow}600 a minuteCalling address
GET /public/data/{workspace}/{flow}/openapi.json600 a minuteCalling address
POST /hooks/{token}120 a minuteCalling address
GET /public/platform-status240 a minuteCalling address
GET /public/status/{slug}120 a minuteCalling address
GET /public/status/feed.atom120 a minuteCalling address
GET /public/status/feed.rss120 a minuteCalling address
GET /public/status/maintenance.ics120 a minuteCalling address
GET /public/status/subscribe60 a minuteCalling address
POST /public/status/subscribe10 a minuteCalling address
POST /mcp120 a minutePerson
GET /public/openapi.json120 a minuteCalling address
GET /public/egress-ips60 a minuteCalling address

Versioning and stability

/v1 is the first supported version. Inside it we only add: new endpoints, new optional parameters and new fields. Write clients that ignore fields they don't know.

We don't remove or rename a documented endpoint or field, or change what it means, within /v1. A change like that would ship as a new version, announced ahead of time on this page.

Only what the API reference lists is supported. The web app uses other /v1 addresses; those are internal, unversioned and can change in any release.

What the version promise covers
Stable in /v1May change
The 41 endpoints in the referenceAny other address the web app calls
Documented fields and their meaningNew fields appearing in answers
Token roles and the status codes aboveThe exact wording of messages
MCP tool names and required inputsStep settings inside a flow's graph

The pass-through rule

SentraBridge moves records between systems without keeping them. The API follows the same rule: it returns settings, counts, record IDs, timings and redacted errors.

You can see that record BLD-2026-0001 was read and what ID it got in the next system. You can't fetch its contents, because SentraBridge doesn't have them.

Two endpoints do carry records. The Data API reads them live from the source for each call. Flow tests return the made-up records saved with the test.

One step of a run: IDs and counts only
{
  "label": "Changed 311 requests",
  "status": "ok",
  "records_in": 1,
  "records_out": 41,
  "records_failed": 0,
  "record_ids": [
    {
      "source": "10411g"
    },
    {
      "source": "5040"
    }
  ]
}
§ Quick start

Four calls to try.

Set SENTRABRIDGE_URL and SENTRABRIDGE_TOKEN as above, then paste.

See what failed overnight
curl -s "$SENTRABRIDGE_URL/v1/runs?status=failed" \
  -H "Authorization: Bearer $SENTRABRIDGE_TOKEN"
Follow one record through every system
curl -s "$SENTRABRIDGE_URL/v1/trace?id=REQ-1001" \
  -H "Authorization: Bearer $SENTRABRIDGE_TOKEN"
Keep a flow in Git
curl -s "$SENTRABRIDGE_URL/v1/flows/$FLOW_ID/export" \
  -H "Authorization: Bearer $SENTRABRIDGE_TOKEN" \
  -o flow.sentrabridge.yaml
Check platform status (no token)
curl -s "$SENTRABRIDGE_URL/public/platform-status"

Also available

  • OpenAPI: the whole reference as a machine-readable file at /public/openapi.json, for client generators and API tools.
  • /scim/v2: SCIM 2.0 provisioning (RFC 7644) at /scim/v2 with a SCIM token from Settings → Security. Point your identity provider at it; it follows the standard, so it is not repeated here.
  • Help: tell us what you're building, or what the API is missing.