---
title: "Evaluate a proposed agent spend"
method: POST
path: "/v1/transactions/evaluate"
tags: ["Evaluate"]
---

# Evaluate a proposed agent spend

`POST /v1/transactions/evaluate`

## Request

- Base URL: `https://sipi.bot`
- URL: `https://sipi.bot/v1/transactions/evaluate`
- Auth: one of:
  - none
  - HTTP bearer

**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.

## Request body

- TransactionRequest
  - `amount` number, float, required: Transaction amount in the given currency.
  - `merchant` string: Merchant name or domain the agent wants to pay.
  - `category` string: Spend category, e.g. compute / api / ads / travel.
  - `currency` string: ISO 4217 currency code.
  - `description` string: Optional free-text description of the proposed spend.
  - `timestamp` string, date-time: Optional ISO-8601 timestamp; defaults to now (UTC).

## Response `200`

Decision returned.

- EvaluationResponse
  - `decision` 'APPROVED' | 'BLOCKED' | 'FLAGGED': APPROVED = pass all rules. BLOCKED = violates a hard rule, no money moves. FLAGGED = allowed but crosses an approval threshold, routed to the human queue.
  - `reason` string: Human-readable explanation; the rule label if a rule tripped.
  - `rule_id` string, nullable: ID of the rule that decided the outcome, if any.
  - `triggered` object[]: Every rule that matched this transaction (in evaluation order).
    - `rule_id` string
    - `rule_type` string
    - `action` 'APPROVED' | 'BLOCKED' | 'FLAGGED': APPROVED = pass all rules. BLOCKED = violates a hard rule, no money moves. FLAGGED = allowed but crosses an approval threshold, routed to the human queue.
    - `label` string
  - `transaction_id` string, nullable: Audit-log ID for the recorded transaction.
  - `amount` number
  - `merchant` string
  - `category` string

## Other responses

- `400`: Invalid request body.

---

[API](https://skmtc.dev/sipi/apis/sipi-bot-spend-firewall-for-ai-agents.md) · [All operations](https://skmtc.dev/sipi/apis/sipi-bot-spend-firewall-for-ai-agents/llms.txt) · [OpenAPI document](https://skmtc.dev/sipi/apis/sipi-bot-spend-firewall-for-ai-agents/revisions/fe7b88ac5722?raw)
