> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wardin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Get a single receipt by ID + verify its hash and signature

> Returns the stored receipt row and a verified flag. verified=true means this_hash == sha256(canonical||prev_hash) AND the ED25519 signature over this_hash is valid. Tenant-scoped: you can only read receipts belonging to your tenant.



## OpenAPI

````yaml /api-reference/openapi.json get /v1/receipts/{id}
openapi: 3.0.0
info:
  title: Wardin API
  description: AI governance & observability platform — external REST API
  version: '1.0'
  contact: {}
servers: []
security: []
tags: []
paths:
  /v1/receipts/{id}:
    get:
      tags:
        - receipts
      summary: Get a single receipt by ID + verify its hash and signature
      description: >-
        Returns the stored receipt row and a verified flag. verified=true means
        this_hash == sha256(canonical||prev_hash) AND the ED25519 signature over
        this_hash is valid. Tenant-scoped: you can only read receipts belonging
        to your tenant.
      operationId: ReceiptsController_getReceipt
      parameters:
        - name: id
          required: true
          in: path
          description: receipt_id (UUID)
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReceiptResponseDto'
        '404':
          description: Receipt not found
      security:
        - bearer: []
components:
  schemas:
    ReceiptResponseDto:
      type: object
      properties:
        seq:
          type: number
          example: 42
        receiptId:
          type: string
          example: 018f1234-5678-7abc-def0-123456789abc
        tenantId:
          type: string
          example: tenant-abc
        requestId:
          type: string
          example: req-abc-123
        actor:
          type: string
          example: user@example.com
        provider:
          type: string
          example: anthropic
        model:
          type: string
          example: claude-3-5-sonnet-20241022
        promptTokens:
          type: number
          example: 1000
        completionTokens:
          type: number
          example: 250
        costUsd:
          type: number
          example: 0.00375
        checks:
          type: array
          items:
            $ref: '#/components/schemas/ReceiptCheckDto'
        prevHash:
          type: string
          example: a1b2c3...
        thisHash:
          type: string
          example: d4e5f6...
        signature:
          type: string
          example: base64-encoded-sig
        keyId:
          type: string
          example: key-id-1
        ts:
          type: string
          example: '2026-07-02 12:00:00.000'
        verified:
          type: boolean
          example: true
          description: >-
            True when this_hash == sha256(canonical || prev_hash) and the
            ED25519 signature is valid.
        checkLatenciesMs:
          type: object
          additionalProperties:
            type: number
          example:
            AUTH: 2
            BUDGET: 5
            ALLOWLIST: 1
            GUARDRAIL: 8
            PII: 3
          description: >-
            GW-12: per-check enforcement latency in milliseconds, keyed by check
            name. NOT part of the signed canonical receipt (EVID-1) —
            observability data only. Empty on receipts written before this
            column existed.
        packVersion:
          type: string
          example: v1
          description: >-
            COMPLY-1: the compliance pack-set version in force when this receipt
            was emitted (WARDIN_COMPLIANCE_PACK_VERSION). NOT part of the signed
            canonical receipt — an unsigned, queryable side channel. Empty
            string on receipts written before this column existed or with the
            env var unset.
        kind:
          type: string
          enum:
            - model_call
            - tool_call
          example: model_call
          description: >-
            COMPLY-4: distinguishes an agent tool-call receipt (gateway
            /mcp/tool-call or /mcp/servers — provider = MCP server, model = tool
            name) from a model-inference receipt. NOT part of the signed
            canonical receipt — an unsigned, queryable side channel. Rows
            written before this column existed read back as model_call.
      required:
        - seq
        - receiptId
        - tenantId
        - requestId
        - actor
        - provider
        - model
        - promptTokens
        - completionTokens
        - costUsd
        - checks
        - prevHash
        - thisHash
        - signature
        - keyId
        - ts
        - verified
        - checkLatenciesMs
        - packVersion
        - kind
    ReceiptCheckDto:
      type: object
      properties:
        name:
          type: string
          example: policy
        result:
          type: string
          example: allow
      required:
        - name
        - result
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: JWT
      type: http

````