Sentinel integration guide
Sentinel is agent-facing: every real caller is code, not a human clicking through a signup flow. This page is what that code actually needs — a working key, the real request/response shape for all 5 services, and how payment works.
Get an API key
Authentication
Send your key as a bearer token on every request:
Authorization: Bearer sentinel_live_...
Payment
Sentinel bills per call, not per key — there's no subscription. Every service requires one of two payment headers; omit both and you get a 402 listing exactly how to pay.
X-PAYMENTA signed EIP-3009 payment authorization for USDC, settled via Coinbase’s CDP facilitator. Gasless — you sign, we submit.
X-PAYMENT-RH-TXSend USDG directly on-chain to the address in the 402 response, then retry with the resulting tx hash. No signature scheme — verified via a direct RPC read. A tx found but under-confirmed returns 202 payment_pending — retry with the same hash.
The 5 services
| Service | Route | Price | Fires |
|---|---|---|---|
| Budget Gate Check | /api/sentinel/v1/budget-gate/check | $0.05 | Pre-execution |
| Settlement Verify | /api/sentinel/v1/settlement/verify | $0.08 | Post-settlement |
| Fleet Drift Scan | /api/sentinel/v1/fleet/drift | $0.10 | Continuous |
| Approval Workflow Trigger | /api/sentinel/v1/approval/trigger | $0.05 | Pre-execution |
| Predictive Alert Check | /api/sentinel/v1/predictive/alert | $0.08 | Continuous |
All 5 are also reachable through one entrypoint, POST /api/sentinel/v1/acp, which routes to the matching service by key and inherits its price — useful if you want one calling convention instead of five.
Example
curl -X POST https://attestifyos.com/api/sentinel/v1/budget-gate/check \
-H "Authorization: Bearer $SENTINEL_KEY" \
-H "Content-Type: application/json" \
-H "X-PAYMENT: <base64-encoded signed payment payload>" \
-d '{
"agentId": "0xYourAgentAddress",
"actionType": "swap",
"estimatedCost": 150.00,
"currency": "USDC"
}'Errors
401 CALLER_NOT_AUTHORIZED— missing or invalid bearer token422 SCHEMA_VALIDATION_FAILED— bad request body (checked, and charged, before payment)402— payment required or invalid; response lists exactly how to pay202 payment_pending— Robinhood Chain only: found but not yet confirmed, retry with the same tx hash