{
  "openapi": "3.1.0",
  "info": {"title": "Kiln Diff API", "version": "1.0.0", "description": "Compare two bounded text documents and return structured exact line changes."},
  "servers": [{"url": "https://diff.kiln.casa"}],
  "paths": {
    "/v1/status": {"get": {"summary": "Service status, limits, and x402 price", "responses": {"200": {"description": "Status"}}}},
    "/v1/demo": {"get": {"summary": "Free sample comparison", "responses": {"200": {"description": "Sample diff"}}}},
    "/v1/diff": {
      "post": {
        "summary": "Compare two text documents",
        "description": "Costs $0.01 USDC through x402 when payments are enabled. Text is not persisted.",
        "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "additionalProperties": false, "required": ["before", "after"], "properties": {"before": {"type": "string", "maxLength": 131072}, "after": {"type": "string", "maxLength": 131072}, "beforeLabel": {"type": "string", "maxLength": 120}, "afterLabel": {"type": "string", "maxLength": 120}, "context": {"type": "integer", "minimum": 0, "maximum": 10, "default": 3}}}}}},
        "responses": {"200": {"description": "Structured diff and unified patch"}, "400": {"description": "Invalid request"}, "402": {"description": "x402 payment required"}, "413": {"description": "Request or document too large"}, "422": {"description": "Too many lines"}, "429": {"description": "Rate limited"}}
      }
    }
  }
}
