{
  "name": "SoulInTime",
  "description": "Bitcoin Timechain witness layer. Anchor a hash to Bitcoin; verify any anchored hash publicly.",
  "endpoints": {
    "verify": {
      "method": "GET",
      "urlTemplate": "https://soulintime.com/functions/v1Verify?hash={sha256}",
      "description": "Look up whether a SHA-256 hash is anchored to Bitcoin via SoulInTime."
    },
    "proof": {
      "method": "GET",
      "urlTemplate": "https://soulintime.com/functions/v1Proof?id={id_or_slug}",
      "description": "Public JSON proof for a specific anchored moment. Accepts id or slug."
    },
    "anchor": {
      "method": "POST",
      "url": "https://soulintime.com/functions/v1Anchor",
      "description": "Anchor a SHA-256 hash to Bitcoin as a public pending moment. No login. Idempotent per hash. Body: {\"hash\": \"<64 hex>\", \"title\"?: \"<optional>\"}."
    },
    "first_at": {
      "method": "GET",
      "urlTemplate": "https://soulintime.com/functions/v1FirstAt?hash={sha256}",
      "description": "Earliest collapse of these bytes (public or sealed). Optional &height=N for as-of. first_at null if none. First ≠ authorship. Tip is never height."
    },
    "firsts": {
        "method": "GET",
        "url": "https://soulintime.com/functions/v1FirstAt?list=1",
        "description": "JSONL of first collapses."
    }
  },
  "since_urlTemplate": "https://soulintime.com/functions/v1FirstAt?list=1&since_height={N}",
  "actions": {
    "stamp": {
      "url": "https://soulintime.com/try",
      "alias": "https://soulintime.com/stamp",
      "description": "Hash anything and anchor it to Bitcoin. Public. No account required to hash and preview; anchoring is one click."
    }
  },
  "discovery": "https://soulintime.com/functions/wellKnownSoulinTime"
}