openapi: 3.2.0 info: title: sipi.bot — Spend Firewall for AI Agents Budget 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: Budget description: Live spend activity, budget status, and dashboard aggregates paths: /api/transactions: get: tags: - Budget summary: List recent transactions description: Returns the 50 most recent recorded transactions (the audit-log tail). operationId: listTransactions responses: '200': description: Recent transactions. content: application/json: schema: type: array items: $ref: '#/components/schemas/Transaction' /api/stats: get: tags: - Budget summary: Dashboard aggregates and current budget posture description: 'Live totals: transaction counts by decision, pending approvals, active rules, and current daily spend.' operationId: getStats responses: '200': description: Aggregates. content: application/json: schema: $ref: '#/components/schemas/Stats' /billing/status: get: tags: - Budget summary: Subscription / billing status description: Public billing capability status and available hosted tiers. No customer counts or account data. operationId: billingStatus security: - {} responses: '200': description: Billing status. content: application/json: schema: type: object components: schemas: Transaction: type: object properties: id: type: string amount: type: number merchant: type: string category: type: string decision: $ref: '#/components/schemas/Decision' reason: type: string agent_id: type: - string - 'null' timestamp: type: string format: date-time 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. Stats: type: object description: 'Live dashboard aggregates: totals, decision breakdown, current budget posture.' properties: total_transactions: type: integer approved: type: integer blocked: type: integer flagged: type: integer pending_approvals: type: integer active_rules: type: integer daily_spend: type: number 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