{
  "x402Version": 2,
  "id": 33530,
  "slug": "33530",
  "resource": "https://tenjin.sh/api/read/:handle/:slug",
  "description": "Pay-per-read pieces by independent publishers. Find one by question first: POST https://tenjin.sh/api/search is free and returns payable candidates or an honest MISS. The 402 carries a free preview; pay it for the full text JSON. Agent guide: https://tenjin.sh/llms.txt. Full catalog: https://tenjin.sh/.well-known/x402",
  "type": "http",
  "serviceName": "Tenjin",
  "iconUrl": "https://res.cloudinary.com/bdb-prod/image/upload/c_fill,ar_1:1,w_256,h_256,f_auto,q_auto/v1789779715/bazaar-icons/0dcfe91334ea1d78.png",
  "resourceType": "AI Inference",
  "accepts": [
    {
      "scheme": "exact",
      "network": "eip155:8453",
      "payTo": "0x1f64B0E6B0132bAE77F886ec57352549b18Af4e5",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "amount": "10000",
      "amountUsd": 0.01,
      "maxTimeoutSeconds": 300
    }
  ],
  "outputSchema": {
    "properties": {
      "example": {
        "type": "object"
      },
      "type": {
        "type": "string"
      }
    },
    "required": [
      "type"
    ],
    "type": "object"
  },
  "extensions": {
    "bazaar": {
      "info": {
        "input": {
          "method": "GET",
          "pathParams": {
            "handle": "athoughts",
            "slug": "x402-batch-settlement-how-the-protocol-s-payment-channel-voucher-scheme-actually"
          },
          "queryParams": {},
          "type": "http"
        },
        "output": {
          "example": {
            "creator": {
              "displayName": "athoughts",
              "handle": "athoughts"
            },
            "excerpt": "A from-the-spec explainer of x402's batch-settlement scheme (a stateless unidirectional payment channel with cumulative signed vouchers) for anyone building a metered or streaming x402 service and deciding between exact and batch. Cadence knobs, the escrow deposit flow, and the facilitator-support gotcha. As-of 2026-07-13.",
            "id": "019f5e1d-3c0e-7b8d-824f-785faafd7bea",
            "price": "100000",
            "publishedAt": "2026-07-14T00:53:22.064Z",
            "slug": "x402-batch-settlement-how-the-protocol-s-payment-channel-voucher-scheme-actually",
            "tags": [
              "x402",
              "protocol",
              "batch-settlement",
              "payment-channels",
              "metering"
            ],
            "title": "x402 batch settlement: how the protocol's payment-channel/voucher scheme actually works",
            "url": "https://tenjin.sh/a/athoughts/x402-batch-settlement-how-the-protocol-s-payment-channel-voucher-scheme-actually"
          },
          "type": "json"
        }
      },
      "routeTemplate": "/api/read/:handle/:slug",
      "schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "input": {
            "additionalProperties": false,
            "properties": {
              "method": {
                "enum": [
                  "GET"
                ],
                "type": "string"
              },
              "pathParams": {
                "properties": {
                  "handle": {
                    "description": "The creator's handle, or their wallet address. The address form is REQUIRED for a durable `latest` alias (a handle `latest` is not payable), and is the only form for an unclaimed creator.",
                    "type": "string"
                  },
                  "slug": {
                    "description": "The article's URL slug, unique per creator. The reserved slug `latest` resolves to the creator's newest published piece; its stable scheduled-read form is the wallet-address URL /api/read/<0x-address>/latest (a handle `latest` is not payable).",
                    "type": "string"
                  }
                },
                "required": [
                  "handle",
                  "slug"
                ],
                "type": "object"
              },
              "queryParams": {
                "additionalProperties": false,
                "properties": {},
                "required": [],
                "type": "object"
              },
              "type": {
                "const": "http",
                "type": "string"
              }
            },
            "required": [
              "type",
              "method"
            ],
            "type": "object"
          },
          "output": {
            "properties": {
              "example": {
                "type": "object"
              },
              "type": {
                "type": "string"
              }
            },
            "required": [
              "type"
            ],
            "type": "object"
          }
        },
        "required": [
          "input"
        ],
        "type": "object"
      }
    },
    "builder-code": {
      "info": {
        "a": "bc_kc0altv3"
      },
      "schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {
          "a": {
            "description": "App builder code",
            "pattern": "^[a-z0-9_]{1,32}$",
            "type": "string"
          },
          "s": {
            "description": "Service builder codes",
            "items": {
              "pattern": "^[a-z0-9_]{1,32}$",
              "type": "string"
            },
            "maxItems": 11,
            "type": "array"
          },
          "w": {
            "description": "Wallet builder code",
            "pattern": "^[a-z0-9_]{1,32}$",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "sign-in-with-x": {
      "info": {
        "domain": "tenjin.sh",
        "issuedAt": "2026-09-21T21:00:52.308Z",
        "nonce": "774a94663b876cc1ef831d6598d593e8",
        "resources": [
          "https://tenjin.sh/api/read/0xe4c16d163d80fd972e6e1e9b94bc71c5fbe5a9c5/practical-gotchas-integrating-x402-sign-in-with-x-siwx"
        ],
        "statement": "Prove a prior purchase of this article to re-read it free. Signing costs nothing and moves no funds.",
        "uri": "https://tenjin.sh/api/read/0xe4c16d163d80fd972e6e1e9b94bc71c5fbe5a9c5/practical-gotchas-integrating-x402-sign-in-with-x-siwx",
        "version": "1"
      },
      "schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "address": {
            "type": "string"
          },
          "chainId": {
            "type": "string"
          },
          "domain": {
            "type": "string"
          },
          "expirationTime": {
            "format": "date-time",
            "type": "string"
          },
          "issuedAt": {
            "format": "date-time",
            "type": "string"
          },
          "nonce": {
            "type": "string"
          },
          "notBefore": {
            "format": "date-time",
            "type": "string"
          },
          "requestId": {
            "type": "string"
          },
          "resources": {
            "items": {
              "format": "uri",
              "type": "string"
            },
            "type": "array"
          },
          "signature": {
            "type": "string"
          },
          "statement": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "uri": {
            "format": "uri",
            "type": "string"
          },
          "version": {
            "type": "string"
          }
        },
        "required": [
          "domain",
          "address",
          "uri",
          "version",
          "chainId",
          "type",
          "nonce",
          "issuedAt",
          "signature"
        ],
        "type": "object"
      },
      "supportedChains": [
        {
          "chainId": "eip155:8453",
          "type": "eip191"
        }
      ]
    }
  },
  "tags": [
    "text",
    "articles",
    "analysis",
    "markdown",
    "information",
    "bazaar",
    "builder-code",
    "sign-in-with-x"
  ],
  "sourceHost": "tenjin.sh",
  "lastUpdated": "2026-09-21T21:00:52.323Z",
  "quality": {
    "calls30d": 4,
    "uniquePayers30d": 2,
    "lastCalledAt": "2026-09-21T21:00:51.997Z"
  },
  "metadata": {
    "serviceName": "Tenjin",
    "iconUrl": "https://res.cloudinary.com/bdb-prod/image/upload/c_fill,ar_1:1,w_256,h_256,f_auto,q_auto/v1789779715/bazaar-icons/0dcfe91334ea1d78.png",
    "extensions": {
      "bazaar": {
        "info": {
          "input": {
            "method": "GET",
            "pathParams": {
              "handle": "athoughts",
              "slug": "x402-batch-settlement-how-the-protocol-s-payment-channel-voucher-scheme-actually"
            },
            "queryParams": {},
            "type": "http"
          },
          "output": {
            "example": {
              "creator": {
                "displayName": "athoughts",
                "handle": "athoughts"
              },
              "excerpt": "A from-the-spec explainer of x402's batch-settlement scheme (a stateless unidirectional payment channel with cumulative signed vouchers) for anyone building a metered or streaming x402 service and deciding between exact and batch. Cadence knobs, the escrow deposit flow, and the facilitator-support gotcha. As-of 2026-07-13.",
              "id": "019f5e1d-3c0e-7b8d-824f-785faafd7bea",
              "price": "100000",
              "publishedAt": "2026-07-14T00:53:22.064Z",
              "slug": "x402-batch-settlement-how-the-protocol-s-payment-channel-voucher-scheme-actually",
              "tags": [
                "x402",
                "protocol",
                "batch-settlement",
                "payment-channels",
                "metering"
              ],
              "title": "x402 batch settlement: how the protocol's payment-channel/voucher scheme actually works",
              "url": "https://tenjin.sh/a/athoughts/x402-batch-settlement-how-the-protocol-s-payment-channel-voucher-scheme-actually"
            },
            "type": "json"
          }
        },
        "routeTemplate": "/api/read/:handle/:slug",
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "properties": {
            "input": {
              "additionalProperties": false,
              "properties": {
                "method": {
                  "enum": [
                    "GET"
                  ],
                  "type": "string"
                },
                "pathParams": {
                  "properties": {
                    "handle": {
                      "description": "The creator's handle, or their wallet address. The address form is REQUIRED for a durable `latest` alias (a handle `latest` is not payable), and is the only form for an unclaimed creator.",
                      "type": "string"
                    },
                    "slug": {
                      "description": "The article's URL slug, unique per creator. The reserved slug `latest` resolves to the creator's newest published piece; its stable scheduled-read form is the wallet-address URL /api/read/<0x-address>/latest (a handle `latest` is not payable).",
                      "type": "string"
                    }
                  },
                  "required": [
                    "handle",
                    "slug"
                  ],
                  "type": "object"
                },
                "queryParams": {
                  "additionalProperties": false,
                  "properties": {},
                  "required": [],
                  "type": "object"
                },
                "type": {
                  "const": "http",
                  "type": "string"
                }
              },
              "required": [
                "type",
                "method"
              ],
              "type": "object"
            },
            "output": {
              "properties": {
                "example": {
                  "type": "object"
                },
                "type": {
                  "type": "string"
                }
              },
              "required": [
                "type"
              ],
              "type": "object"
            }
          },
          "required": [
            "input"
          ],
          "type": "object"
        }
      },
      "builder-code": {
        "info": {
          "a": "bc_kc0altv3"
        },
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "additionalProperties": false,
          "properties": {
            "a": {
              "description": "App builder code",
              "pattern": "^[a-z0-9_]{1,32}$",
              "type": "string"
            },
            "s": {
              "description": "Service builder codes",
              "items": {
                "pattern": "^[a-z0-9_]{1,32}$",
                "type": "string"
              },
              "maxItems": 11,
              "type": "array"
            },
            "w": {
              "description": "Wallet builder code",
              "pattern": "^[a-z0-9_]{1,32}$",
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "sign-in-with-x": {
        "info": {
          "domain": "tenjin.sh",
          "issuedAt": "2026-09-21T21:00:52.308Z",
          "nonce": "774a94663b876cc1ef831d6598d593e8",
          "resources": [
            "https://tenjin.sh/api/read/0xe4c16d163d80fd972e6e1e9b94bc71c5fbe5a9c5/practical-gotchas-integrating-x402-sign-in-with-x-siwx"
          ],
          "statement": "Prove a prior purchase of this article to re-read it free. Signing costs nothing and moves no funds.",
          "uri": "https://tenjin.sh/api/read/0xe4c16d163d80fd972e6e1e9b94bc71c5fbe5a9c5/practical-gotchas-integrating-x402-sign-in-with-x-siwx",
          "version": "1"
        },
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "properties": {
            "address": {
              "type": "string"
            },
            "chainId": {
              "type": "string"
            },
            "domain": {
              "type": "string"
            },
            "expirationTime": {
              "format": "date-time",
              "type": "string"
            },
            "issuedAt": {
              "format": "date-time",
              "type": "string"
            },
            "nonce": {
              "type": "string"
            },
            "notBefore": {
              "format": "date-time",
              "type": "string"
            },
            "requestId": {
              "type": "string"
            },
            "resources": {
              "items": {
                "format": "uri",
                "type": "string"
              },
              "type": "array"
            },
            "signature": {
              "type": "string"
            },
            "statement": {
              "type": "string"
            },
            "type": {
              "type": "string"
            },
            "uri": {
              "format": "uri",
              "type": "string"
            },
            "version": {
              "type": "string"
            }
          },
          "required": [
            "domain",
            "address",
            "uri",
            "version",
            "chainId",
            "type",
            "nonce",
            "issuedAt",
            "signature"
          ],
          "type": "object"
        },
        "supportedChains": [
          {
            "chainId": "eip155:8453",
            "type": "eip191"
          }
        ]
      }
    }
  },
  "liveness": {
    "reliability": null
  },
  "verified": false,
  "featured": false,
  "provider": {
    "host": "tenjin.sh",
    "manifest_name": "tenjin.sh",
    "source": "cdp-mirror",
    "source_manifest_url": "https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources",
    "submitted_at": "2026-10-13T15:56:53.641Z"
  },
  "exampleResponse": {
    "example": {},
    "type": "string"
  }
}