---
title: "Get transaction details"
method: GET
path: "/transactions/{id}"
tags: ["Intelligence"]
---

# Get transaction details

`GET /transactions/{id}`

## Request

- Base URL: `https://api.mnemom.ai/v1`
- URL: `https://api.mnemom.ai/v1/transactions/{id}`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-Mnemom-Api-Key`

Retrieve the details of a guarded transaction including its current status, policy evaluation result, and action outcomes. **Authorization:** the caller must be a member of the org that owns the transaction's agent (`403` otherwise).

## Path parameters

- `id` string, required

## Response `200`

Transaction details

- object
  - `id` string
  - `agent_id` string
  - `status` 'pending' | 'approved' | 'blocked' | 'escalated' | 'completed' | 'failed'
  - `actions` object[]
    - `tool` string
    - `status` string
    - `result` unknown
  - `evaluation` PolicyEvaluationResult: Result of evaluating a CLPI policy against a set of tools or traces.
    - `verdict` 'pass' | 'warn' | 'fail': Overall evaluation verdict
    - `violations` PolicyViolation[]: List of policy violations detected
      - `type` 'forbidden' | 'unmapped' | 'escalation' | 'capability_mismatch': Type of policy violation
      - `tool` string: Tool identifier that triggered the violation
      - `capability` string, nullable: Capability the tool was mapped to, if any
      - `rule` string, nullable: The specific rule or pattern that was matched
      - `reason` string: Human-readable explanation of the violation
      - `severity` 'low' | 'medium' | 'high' | 'critical': Severity level of the violation
    - `warnings` object[]: Non-blocking warnings about potential issues
      - `tool` string
      - `message` string
    - `card_gaps` object[]: Gaps between the policy and the alignment card
      - `capability` string
      - `missing_card_field` string
      - `suggestion` string
    - `coverage` number: Fraction of tools covered by the policy (0.0 to 1.0)
  - `created_at` string, date-time
  - `completed_at` string, date-time, nullable

## Other responses

- `400`: Bad request
- `401`: Authentication required
- `403`: Forbidden
- `404`: Resource not found
- `429`: Rate-limit exceeded. The global per-IP limiter (100 requests/minute, applied to every `/v1/*` route) rejected this request. Back off until the window resets — `Retry-After` carries the cooldown in seconds and `X-RateLimit-Reset` the absolute reset time.
- `500`: Server error — request was well-formed but the server failed to fulfill it. Typically a downstream dependency (DB / RPC / external API) returned an unexpected error.

---

[API](https://skmtc.dev/mnemom/apis/mnemom-api.md) · [All operations](https://skmtc.dev/mnemom/apis/mnemom-api/llms.txt) · [OpenAPI document](https://skmtc.dev/mnemom/apis/mnemom-api/revisions/274b7a6ea182?raw)
