{
  "openapi": "3.1.0",
  "info": {
    "title": "PageDelta by BitBooth — Paid x402 API",
    "version": "1.0.0",
    "description": "OpenAPI 3.1 spec for the single featured PageDelta API. Companion to /bazaar.json and /bazaar. Earlier paid URLs remain callable and are documented in the full gateway /openapi.yaml for compatibility. The live 402 challenge is authoritative for the configured stablecoin rails, price, recipient, and request-bound payment terms. PageDelta does not currently advertise Solana, native XRP, or native XLM.",
    "contact": {
      "name": "BitBooth (Heinrichs Software Solutions Company)",
      "url": "https://app.heinrichstech.com"
    },
    "license": {
      "name": "MIT",
      "url": "https://github.com/Drock91/bitbooth-docs/blob/main/LICENSE"
    }
  },
  "servers": [
    {
      "url": "https://app.heinrichstech.com"
    }
  ],
  "tags": [
    {
      "name": "data",
      "description": "PageDelta rendered web observation and change evidence"
    }
  ],
  "paths": {
    "/v1/cdp/render-pro": {
      "post": {
        "tags": [
          "data"
        ],
        "summary": "PageDelta: render a public page and see what changed",
        "description": "PageDelta by BitBooth: pay $0.01 once to render a public page, extract bounded Markdown and exact focus evidence, capture an optional visual snapshot, and compare it with this payer's previous observation. Returns hashes, a tracking cursor, a content-bound observation ID, and settled payment identity. No API key or subscription.\n\nPrice: $0.01 USDC. Settlement rails are advertised in the 402 challenge accepts[] array.",
        "externalDocs": {
          "url": "https://app.heinrichstech.com/endpoints/render-pro"
        },
        "operationId": "postRenderPro",
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "url": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 2048,
                    "default": "https://example.com/",
                    "description": "Public HTTP(S) page to render and compare. Omission safely defaults to https://example.com/."
                  },
                  "extract": {
                    "type": "string",
                    "enum": [
                      "article",
                      "raw"
                    ],
                    "default": "article"
                  },
                  "focus": {
                    "type": "string",
                    "maxLength": 512,
                    "description": "Optional exact text to locate in the bounded rendered Markdown."
                  },
                  "cursor": {
                    "type": "string",
                    "maxLength": 128,
                    "description": "Optional tracking cursor from the prior observation; never an access token."
                  }
                }
              },
              "example": {
                "url": "https://example.com/",
                "extract": "article",
                "focus": "Example Domain"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful payment + response body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": [
                        "boolean",
                        "null"
                      ]
                    },
                    "service": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "product": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "protocol": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "title": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "markdown": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "sha256": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "focusEvidence": {},
                    "diff": {
                      "type": "object",
                      "properties": {
                        "hasChanged": {},
                        "addedLines": {},
                        "removedLines": {},
                        "unchangedLines": {},
                        "changes": {
                          "type": "array",
                          "items": {}
                        },
                        "truncated": {
                          "type": [
                            "boolean",
                            "null"
                          ]
                        }
                      }
                    },
                    "baseline": {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "scope": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "source": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "available": {
                          "type": [
                            "boolean",
                            "null"
                          ]
                        },
                        "capturedAt": {},
                        "ageSeconds": {},
                        "revision": {},
                        "sha256": {},
                        "truncated": {
                          "type": [
                            "boolean",
                            "null"
                          ]
                        },
                        "saved": {
                          "type": [
                            "boolean",
                            "null"
                          ]
                        },
                        "savedAt": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "savedRevision": {
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "savedTruncated": {
                          "type": [
                            "boolean",
                            "null"
                          ]
                        }
                      }
                    },
                    "cursor": {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "reason": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "next": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "authorizesAccess": {
                          "type": [
                            "boolean",
                            "null"
                          ]
                        }
                      }
                    },
                    "observationId": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "untrustedContent": {
                      "type": [
                        "boolean",
                        "null"
                      ]
                    },
                    "warnings": {
                      "type": "array",
                      "items": {}
                    },
                    "screenshot": {},
                    "metadata": {
                      "type": "object",
                      "properties": {
                        "url": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "finalUrl": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "fetchedAt": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "extract": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "statusCode": {
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "contentType": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "renderContentLength": {
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "renderTruncated": {
                          "type": [
                            "boolean",
                            "null"
                          ]
                        },
                        "markdownBytes": {
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "markdownTruncated": {
                          "type": [
                            "boolean",
                            "null"
                          ]
                        },
                        "network": {
                          "type": "object",
                          "properties": {
                            "requests": {
                              "type": [
                                "integer",
                                "null"
                              ]
                            },
                            "bytes": {
                              "type": [
                                "integer",
                                "null"
                              ]
                            },
                            "blocked": {
                              "type": [
                                "integer",
                                "null"
                              ]
                            },
                            "truncated": {
                              "type": [
                                "integer",
                                "null"
                              ]
                            }
                          }
                        },
                        "firstSnapshot": {
                          "type": [
                            "boolean",
                            "null"
                          ]
                        }
                      }
                    },
                    "payment": {
                      "type": "object",
                      "properties": {
                        "transaction": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "network": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "payer": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      }
                    },
                    "timestamp": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                },
                "example": {
                  "ok": true,
                  "service": "BitBooth PageDelta",
                  "product": "page-delta",
                  "protocol": "x402",
                  "title": "Example Domain",
                  "markdown": "# Example Domain\n\nIllustrative content.",
                  "sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
                  "focusEvidence": null,
                  "diff": {
                    "hasChanged": null,
                    "addedLines": null,
                    "removedLines": null,
                    "unchangedLines": null,
                    "changes": [],
                    "truncated": false
                  },
                  "baseline": {
                    "kind": "page-delta-v1",
                    "scope": "payer+url+extract",
                    "source": "none",
                    "available": false,
                    "capturedAt": null,
                    "ageSeconds": null,
                    "revision": null,
                    "sha256": null,
                    "truncated": false,
                    "saved": true,
                    "savedAt": "2026-09-11T01:00:00.000Z",
                    "savedRevision": 1,
                    "savedTruncated": false
                  },
                  "cursor": {
                    "status": "missing",
                    "reason": "not_supplied",
                    "next": "pd1_bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
                    "authorizesAccess": false
                  },
                  "observationId": "pdo_cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
                  "untrustedContent": true,
                  "warnings": [],
                  "screenshot": null,
                  "metadata": {
                    "url": "https://example.com/",
                    "finalUrl": "https://example.com/",
                    "fetchedAt": "2026-09-11T01:00:00.000Z",
                    "extract": "article",
                    "statusCode": 200,
                    "contentType": "text/html",
                    "renderContentLength": 1234,
                    "renderTruncated": false,
                    "markdownBytes": 39,
                    "markdownTruncated": false,
                    "network": {
                      "requests": 2,
                      "bytes": 4096,
                      "blocked": 0,
                      "truncated": 0
                    },
                    "firstSnapshot": true
                  },
                  "payment": {
                    "transaction": "settled-transaction-id",
                    "network": "eip155:8453",
                    "payer": "0xsettled-payer"
                  },
                  "timestamp": "2026-09-11T01:00:00.000Z"
                }
              }
            }
          },
          "400": {
            "description": "Validation error (malformed request body or query)."
          },
          "402": {
            "description": "Payment required. Response body is the canonical x402v2 challenge with accepts[] enumerating every (network, asset, payTo) tuple the gateway will settle.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "x402Version",
                    "error",
                    "accepts"
                  ],
                  "properties": {
                    "x402Version": {
                      "type": "integer",
                      "enum": [
                        2
                      ]
                    },
                    "error": {
                      "type": "string"
                    },
                    "accepts": {
                      "type": "array",
                      "items": {
                        "type": "object"
                      }
                    },
                    "extensions": {
                      "type": "object"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded for the paying wallet on this route."
          }
        },
        "x-bitbooth-pricing": {
          "priceAtomic": "10000",
          "priceUsdc": 0.01,
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "assetSymbol": "USDC",
          "payTo": "0xDa2F35d283c42dd60B965322394bc658a5c1769F"
        }
      }
    }
  },
  "components": {
    "schemas": {
      "X402Challenge": {
        "type": "object",
        "required": [
          "x402Version",
          "error",
          "accepts"
        ],
        "properties": {
          "x402Version": {
            "type": "integer",
            "enum": [
              2
            ]
          },
          "error": {
            "type": "string"
          },
          "accepts": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "scheme",
                "network",
                "amount",
                "payTo",
                "asset"
              ],
              "properties": {
                "scheme": {
                  "type": "string",
                  "enum": [
                    "exact",
                    "onchain"
                  ]
                },
                "network": {
                  "type": "string",
                  "description": "CAIP-2 chain identifier"
                },
                "amount": {
                  "type": "string",
                  "description": "Atomic units of `asset`"
                },
                "payTo": {
                  "type": "string"
                },
                "asset": {
                  "type": "string"
                },
                "maxTimeoutSeconds": {
                  "type": "number"
                },
                "extra": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    }
  },
  "x-bitbooth-catalog": {
    "bazaarJson": "https://app.heinrichstech.com/bazaar.json",
    "bazaarHtml": "https://app.heinrichstech.com/bazaar",
    "agentCard": "https://app.heinrichstech.com/.well-known/agent.json",
    "x402WellKnown": "https://app.heinrichstech.com/.well-known/x402.json",
    "resourceCount": 1
  }
}