Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
openapi: 3.2.0
info:
title: sipi.bot — Spend Firewall for AI Agents Evaluate API
description: 'sipi.bot sits in front of every transaction an autonomous AI agent attempts and evaluates it against your spend rules — per-transaction caps, daily totals, velocity (runaway-loop protection), merchant allow/block, category limits, time windows, and approval thresholds. It returns APPROVED, BLOCKED, or FLAGGED with a deterministic rules check, before a single dollar moves. Every decision is written to a queryable audit log.
**The core call an agent makes before spending:** `POST /v1/transactions/evaluate`.
Auth is optional only for the public evaluation sandbox. Pass `Authorization: Bearer ` for an isolated paid or operator-created workspace. Dashboard and control-plane routes require authentication.'
version: 0.1.0
contact:
name: sipi.bot
url: https://sipi.bot
email: sales@sipiteno.com
license:
name: MIT
url: https://github.com/kindrat86/sipi-bot/blob/main/LICENSE
termsOfService: https://sipi.bot/terms
servers:
- url: https://sipi.bot
description: Production
security:
- BearerAuth: []
tags:
- name: Evaluate
description: The core spend-decision call an agent makes
paths:
/v1/transactions/evaluate:
post:
tags:
- Evaluate
summary: Evaluate a proposed agent spend
description: '**The core call.** An autonomous agent calls this *before* it spends money. sipi.bot evaluates the transaction against every active rule and returns APPROVED, BLOCKED, or FLAGGED without a model call.
Auth is optional in free / self-host mode; pass a Bearer agent API key to attribute the transaction to a registered agent and scope per-agent rules.'
operationId: evaluateTransaction
security:
- {}
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TransactionRequest'
examples:
blocked_unknown_merchant:
summary: Block an unknown merchant
value:
amount: 6200
merchant: unknown-gpu.ru
category: compute
flag_over_threshold:
summary: Flag a high-value txn for human review
value:
amount: 2200
merchant: anthropic.com
category: api
approve_normal:
summary: Approve a normal spend
value:
amount: 12.5
merchant: openai.com
category: api
responses:
'200':
description: Decision returned.
content:
application/json:
schema:
$ref: '#/components/schemas/EvaluationResponse'
'400':
description: Invalid request body.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
components:
schemas:
Error:
type: object
properties:
error:
type: string
TransactionRequest:
type: object
required:
- amount
properties:
amount:
type: number
format: float
description: Transaction amount in the given currency.
example: 6200
merchant:
type: string
description: Merchant name or domain the agent wants to pay.
example: unknown-gpu.ru
category:
type: string
description: Spend category, e.g. compute / api / ads / travel.
example: compute
currency:
type: string
description: ISO 4217 currency code.
default: USD
example: USD
description:
type: string
description: Optional free-text description of the proposed spend.
example: A100 GPU rental
timestamp:
type: string
format: date-time
description: Optional ISO-8601 timestamp; defaults to now (UTC).
example: '2026-07-18T02:14:00Z'
Decision:
type: string
enum:
- APPROVED
- BLOCKED
- FLAGGED
description: APPROVED = pass all rules. BLOCKED = violates a hard rule, no money moves. FLAGGED = allowed but crosses an approval threshold, routed to the human queue.
EvaluationResponse:
type: object
properties:
decision:
$ref: '#/components/schemas/Decision'
reason:
type: string
description: Human-readable explanation; the rule label if a rule tripped.
example: Merchant not on allowlist
rule_id:
type:
- string
- 'null'
description: ID of the rule that decided the outcome, if any.
triggered:
type: array
description: Every rule that matched this transaction (in evaluation order).
items:
type: object
properties:
rule_id:
type: string
rule_type:
type: string
action:
$ref: '#/components/schemas/Decision'
label:
type: string
transaction_id:
type:
- string
- 'null'
description: Audit-log ID for the recorded transaction.
amount:
type: number
merchant:
type: string
category:
type: string
securitySchemes:
BearerAuth:
type: http
scheme: bearer
description: A checkout-issued or operator-created API key. ADMIN_TOKEN is accepted only for operator control-plane access.
externalDocs:
description: Agent card (A2A discovery)
url: https://sipi.bot/.well-known/agent-card.json