---
title: "Get a signed Safe House decision certificate"
method: GET
path: "/decisions/{decision_id}/certificate"
tags: ["Verification"]
---

# Get a signed Safe House decision certificate

`GET /decisions/{decision_id}/certificate`

## Request

- Base URL: `https://api.mnemom.ai/v1`
- URL: `https://api.mnemom.ai/v1/decisions/{decision_id}/certificate`
- Auth: none required

The public, offline-verifiable certificate for a signed SafeHouseDecision (MNE-1381 / C14): the exact signed_payload string, the chain hashes and the covered-content hash (proofs.chain.content_hash), so a third party can check sha256((prev_chain_hash ?? "genesis") + "|" + content_hash) === chain_hash and the Ed25519 signature against the public key from GET /v1/keys — without trusting this API. The reconstructed canonical decision (screen result, tool, resource selectors, provenance detail) and the run/card identifiers are returned only to a caller who can see the agent's private telemetry (a member of the org that governs the agent, the same gate as the checkpoint certificate); anyone else gets decision: null, those subject fields as empty strings, and a `redacted` list naming what was withheld. 404 when the decision is not signed. Public endpoint, no authentication required.

## Path parameters

- `decision_id` string, required

## Response `200`

The decision certificate

- object
  - `type` string, required
  - `version` string, required
  - `certificate_id` string, required
  - `subject` object
  - `claims` object
    - `verdict` string
  - `decision` object, nullable
  - `proofs` object, required
  - `issued_at` string
  - `redacted` string[]: Present only on the redacted (non-member) view: the fields withheld.

## Other responses

- `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.
- `503`: An upstream dependency is currently unavailable. The request was not processed; retry after the cooldown window.

---

[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)
