← proofslip.ai

API Reference

Create, verify, and poll ephemeral receipts for AI agent workflows.

Authentication

Pass your API key as a Bearer token:

Authorization: Bearer ak_live_...

Get a free key by calling POST /v1/auth/signup. Verification endpoints are public.

LimitValue
Rate limit60 req/min per API key
Free tier500 receipts/month
Max body16 KB
Max summary280 chars
Max payload4 KB

POST /v1/receipts

Auth required

Create a verifiable receipt when something happens in your agent workflow.

Request Body

FieldTypeDescription
typestringrequiredaction, approval, handshake, resume, or failure
statusstringrequiredFreeform status (e.g. "success", "pending")
summarystringrequiredHuman-readable summary, max 280 chars
payloadobjectStructured JSON data, max 4KB
refobjectrun_id, agent_id, action_id, workflow_id, session_id
expires_inintegerTTL in seconds, 60–86400. Default 86400
idempotency_keystringPrevents duplicate creation on retry
audiencestring"human" for enriched social cards

Example

POST /v1/receipts
Authorization: Bearer ak_live_abc123
Content-Type: application/json

{
  "type": "action",
  "status": "success",
  "summary": "Refund of $42.00 to customer #8812",
  "payload": {"amount": 42.00, "currency": "USD"},
  "idempotency_key": "refund-8812-2026-03-23"
}

Response (201)

{
  "receipt_id": "rct_k7x9m2p4",
  "type": "action",
  "status": "success",
  "summary": "Refund of $42.00 to customer #8812",
  "verify_url": "https://proofslip.ai/verify/rct_k7x9m2p4",
  "created_at": "2026-03-23T12:00:00Z",
  "expires_at": "2026-03-24T12:00:00Z",
  "is_terminal": true
}

GET /v1/verify/{receipt_id}

Public — no auth

Verify a receipt and retrieve its full data. Returns HTML by default, or JSON with ?format=json.

Example

GET /v1/verify/rct_k7x9m2p4?format=json

Response (200)

{
  "receipt_id": "rct_k7x9m2p4",
  "valid": true,
  "type": "action",
  "status": "success",
  "summary": "Refund of $42.00 to customer #8812",
  "payload": {"amount": 42.00, "currency": "USD"},
  "created_at": "2026-03-23T12:00:00Z",
  "expires_at": "2026-03-24T12:00:00Z",
  "expired": false,
  "is_terminal": true
}

Returns 404 if the receipt is not found, expired, or deleted.

GET /v1/receipts/{receipt_id}/status

Public — no auth

Lightweight status poll. Returns only status fields — no summary, payload, or ref. Ideal for polling loops.

Response (200)

{
  "receipt_id": "rct_k7x9m2p4",
  "status": "success",
  "is_terminal": true,
  "next_poll_after_seconds": null,
  "expires_at": "2026-03-23T13:00:00Z"
}

If is_terminal is true, stop polling. If false, wait next_poll_after_seconds before retrying.

POST /v1/auth/signup

Public — no auth

Get a free API key. Save it immediately — it cannot be retrieved later.

Request Body

FieldTypeDescription
emailstringrequiredYour email address
sourcestring"api" returns key directly, "web" emails it

Example

POST /v1/auth/signup
Content-Type: application/json

{"email": "dev@example.com", "source": "api"}

Response (201)

{
  "api_key": "ak_live_abc123def456",
  "tier": "free",
  "message": "Save this key - it cannot be retrieved later."
}

Receipt Types

TypeUse Case
actionRecord a completed event (refund, deploy, notification)
approvalGate an action on a human or agent decision
handshakeCoordinate between two agents before either acts
resumeBookmark a safe continuation point in a pipeline
failureStructured error record with bounded retry window

Errors

All errors return JSON:

{"error": "error_code", "message": "Human-readable description", "request_id": "req_..."}
CodeHTTPMeaning
validation_error400Missing or invalid field
unauthorized401Missing or invalid API key
not_found404Receipt not found, expired, or deleted
idempotency_conflict409Same key, different body
rate_limited429Too many requests
internal_error500Unexpected server error

MCP Server

Use ProofSlip as a tool in Claude, Cursor, or any MCP-compatible client:

npx -y @proofslip/mcp-server

Tools: create_receipt, verify_receipt, check_status

Machine Discovery

ProofSlip exposes multiple discovery endpoints for agents and tools:

EndpointFormatPurpose
/llms.txtPlain textLLM context summary
/llms-full.txtPlain textComplete API reference for LLMs
/.well-known/openapi.jsonJSONOpenAPI 3.1 spec
/.well-known/ai-plugin.jsonJSONChatGPT plugin manifest
/.well-known/mcp.jsonJSONMCP server discovery
/.well-known/agent.jsonJSONAgent protocol discovery