{"openapi":"3.1.0","info":{"title":"convert","version":"0.2.0","description":"Document and data format conversions via Pandoc, Chromium-headless, and pure-JS libs. Text inputs/outputs are JSON-fielded; binary inputs/outputs use base64 in JSON for uniformity.","x-guidance":"All endpoints accept and return application/json. Text fields use `content`; binary fields use `content_base64`. Maximum input size is 5MB. Subprocess endpoints (html-to-pdf, docx-to-markdown, etc.) have a 60-second timeout.","x-sibling-services":[{"url":"https://geo.boring-api.com","title":"Geocoding & spatial math","description":"Distance, bearing, point-in-polygon, timezone, country, IP geo, postal lookup, city-level geocoding.","status":"planned"}],"x-discovery-url":"https://boring-api.com/services","x-base-url":"https://convert.boring-api.com"},"servers":[{"url":"https://convert.boring-api.com"}],"paths":{"/html-to-markdown":{"post":{"summary":"Convert HTML to Markdown via Turndown.","description":"","x-payment-info":{"price":{"mode":"fixed","currency":"USDC","amount":"0.0008"},"protocols":["x402"],"network":"base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x9509D8b069417E8a1d76b4Ab585df01BE00cbbA8"},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"content":{"type":"string"}}}}}},"402":{"description":"Payment required (x402 challenge)","content":{"application/json":{"schema":{"type":"object","properties":{"x402Version":{"type":"integer"},"accepts":{"type":"array"},"error":{"type":["string","null"]}}}}}}},"x-related-endpoints":[{"rel":"alternative","path":"/html-to-text","title":"Strip to plain text only"},{"rel":"next-step","path":"/markdown-to-pdf","title":"Render the resulting MD to PDF"},{"rel":"next-step","path":"/markdown-to-docx","title":"Render the resulting MD to DOCX"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["content"],"properties":{"content":{"type":"string","maxLength":5000000}}}}}}}},"/markdown-to-html":{"post":{"summary":"Convert Markdown to HTML via marked.","description":"","x-payment-info":{"price":{"mode":"fixed","currency":"USDC","amount":"0.0008"},"protocols":["x402"],"network":"base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x9509D8b069417E8a1d76b4Ab585df01BE00cbbA8"},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"content":{"type":"string"}}}}}},"402":{"description":"Payment required (x402 challenge)","content":{"application/json":{"schema":{"type":"object","properties":{"x402Version":{"type":"integer"},"accepts":{"type":"array"},"error":{"type":["string","null"]}}}}}}},"x-related-endpoints":[{"rel":"alternative","path":"/html-to-markdown","title":"Inverse: HTML to Markdown"},{"rel":"next-step","path":"/html-to-pdf","title":"Render the resulting HTML to PDF"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["content"],"properties":{"content":{"type":"string","maxLength":5000000}}}}}}}},"/html-to-text":{"post":{"summary":"Strip HTML to readable plain text via Mozilla Readability.","description":"","x-payment-info":{"price":{"mode":"fixed","currency":"USDC","amount":"0.001"},"protocols":["x402"],"network":"base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x9509D8b069417E8a1d76b4Ab585df01BE00cbbA8"},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"content":{"type":"string"},"title":{"type":"string"},"byline":{"type":["string","null"]},"length":{"type":"integer"}}}}}},"402":{"description":"Payment required (x402 challenge)","content":{"application/json":{"schema":{"type":"object","properties":{"x402Version":{"type":"integer"},"accepts":{"type":"array"},"error":{"type":["string","null"]}}}}}}},"x-related-endpoints":[{"rel":"alternative","path":"/html-to-markdown","title":"Markdown output instead of plain text"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["content"],"properties":{"content":{"type":"string","maxLength":5000000}}}}}}}},"/html-to-pdf":{"post":{"summary":"Render HTML to PDF via Chromium-headless. Returns base64-encoded PDF.","description":"","x-payment-info":{"price":{"mode":"fixed","currency":"USDC","amount":"0.005"},"protocols":["x402"],"network":"base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x9509D8b069417E8a1d76b4Ab585df01BE00cbbA8"},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"content_base64":{"type":"string"}}}}}},"402":{"description":"Payment required (x402 challenge)","content":{"application/json":{"schema":{"type":"object","properties":{"x402Version":{"type":"integer"},"accepts":{"type":"array"},"error":{"type":["string","null"]}}}}}}},"x-related-endpoints":[{"rel":"prerequisite","path":"/markdown-to-html","title":"Convert MD source first if needed"},{"rel":"alternative","path":"/markdown-to-pdf","title":"Skip the HTML step - MD straight to PDF"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["content"],"properties":{"content":{"type":"string","maxLength":5000000},"format":{"type":"string","enum":["A4","Letter","Legal"],"default":"A4"},"landscape":{"type":"boolean","default":false}}}}}}}},"/markdown-to-pdf":{"post":{"summary":"Render Markdown to PDF (marked → Chromium-headless). Returns base64-encoded PDF.","description":"","x-payment-info":{"price":{"mode":"fixed","currency":"USDC","amount":"0.005"},"protocols":["x402"],"network":"base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x9509D8b069417E8a1d76b4Ab585df01BE00cbbA8"},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"content_base64":{"type":"string"}}}}}},"402":{"description":"Payment required (x402 challenge)","content":{"application/json":{"schema":{"type":"object","properties":{"x402Version":{"type":"integer"},"accepts":{"type":"array"},"error":{"type":["string","null"]}}}}}}},"x-related-endpoints":[{"rel":"alternative","path":"/markdown-to-docx","title":"DOCX output instead of PDF"},{"rel":"alternative","path":"/html-to-pdf","title":"Start from HTML instead of Markdown"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["content"],"properties":{"content":{"type":"string","maxLength":5000000},"format":{"type":"string","enum":["A4","Letter","Legal"],"default":"A4"},"landscape":{"type":"boolean","default":false}}}}}}}},"/markdown-to-docx":{"post":{"summary":"Convert Markdown to DOCX via Pandoc. Returns base64-encoded DOCX.","description":"","x-payment-info":{"price":{"mode":"fixed","currency":"USDC","amount":"0.008"},"protocols":["x402"],"network":"base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x9509D8b069417E8a1d76b4Ab585df01BE00cbbA8"},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"content_base64":{"type":"string"}}}}}},"402":{"description":"Payment required (x402 challenge)","content":{"application/json":{"schema":{"type":"object","properties":{"x402Version":{"type":"integer"},"accepts":{"type":"array"},"error":{"type":["string","null"]}}}}}}},"x-related-endpoints":[{"rel":"alternative","path":"/markdown-to-pdf","title":"PDF output instead of DOCX"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["content"],"properties":{"content":{"type":"string","maxLength":5000000}}}}}}}},"/docx-to-markdown":{"post":{"summary":"Convert DOCX to Markdown via Pandoc. Input is base64-encoded DOCX.","description":"","x-payment-info":{"price":{"mode":"fixed","currency":"USDC","amount":"0.005"},"protocols":["x402"],"network":"base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x9509D8b069417E8a1d76b4Ab585df01BE00cbbA8"},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"content":{"type":"string"}}}}}},"402":{"description":"Payment required (x402 challenge)","content":{"application/json":{"schema":{"type":"object","properties":{"x402Version":{"type":"integer"},"accepts":{"type":"array"},"error":{"type":["string","null"]}}}}}}},"x-related-endpoints":[{"rel":"alternative","path":"/docx-to-text","title":"Plain text instead of Markdown"},{"rel":"next-step","path":"/markdown-to-pdf","title":"Re-render to PDF"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["content_base64"],"properties":{"content_base64":{"type":"string"}}}}}}}},"/docx-to-text":{"post":{"summary":"Convert DOCX to plain text via Pandoc. Input is base64-encoded DOCX.","description":"","x-payment-info":{"price":{"mode":"fixed","currency":"USDC","amount":"0.005"},"protocols":["x402"],"network":"base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x9509D8b069417E8a1d76b4Ab585df01BE00cbbA8"},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"content":{"type":"string"}}}}}},"402":{"description":"Payment required (x402 challenge)","content":{"application/json":{"schema":{"type":"object","properties":{"x402Version":{"type":"integer"},"accepts":{"type":"array"},"error":{"type":["string","null"]}}}}}}},"x-related-endpoints":[{"rel":"alternative","path":"/docx-to-markdown","title":"Markdown instead of plain text"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["content_base64"],"properties":{"content_base64":{"type":"string"}}}}}}}},"/json-to-yaml":{"post":{"summary":"Convert JSON to YAML.","description":"","x-payment-info":{"price":{"mode":"fixed","currency":"USDC","amount":"0.0005"},"protocols":["x402"],"network":"base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x9509D8b069417E8a1d76b4Ab585df01BE00cbbA8"},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"content":{"type":"string"}}}}}},"402":{"description":"Payment required (x402 challenge)","content":{"application/json":{"schema":{"type":"object","properties":{"x402Version":{"type":"integer"},"accepts":{"type":"array"},"error":{"type":["string","null"]}}}}}}},"x-related-endpoints":[{"rel":"alternative","path":"/yaml-to-json","title":"Inverse: YAML to JSON"},{"rel":"alternative","path":"/json-to-csv","title":"JSON to CSV (for tabular data)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["content"],"properties":{"content":{"type":"string","maxLength":5000000}}}}}}}},"/yaml-to-json":{"post":{"summary":"Convert YAML to JSON.","description":"","x-payment-info":{"price":{"mode":"fixed","currency":"USDC","amount":"0.0005"},"protocols":["x402"],"network":"base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x9509D8b069417E8a1d76b4Ab585df01BE00cbbA8"},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"content":{"type":"string"}}}}}},"402":{"description":"Payment required (x402 challenge)","content":{"application/json":{"schema":{"type":"object","properties":{"x402Version":{"type":"integer"},"accepts":{"type":"array"},"error":{"type":["string","null"]}}}}}}},"x-related-endpoints":[{"rel":"alternative","path":"/json-to-yaml","title":"Inverse: JSON to YAML"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["content"],"properties":{"content":{"type":"string","maxLength":5000000}}}}}}}},"/json-to-csv":{"post":{"summary":"Convert JSON array of records to CSV via PapaParse.","description":"","x-payment-info":{"price":{"mode":"fixed","currency":"USDC","amount":"0.0005"},"protocols":["x402"],"network":"base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x9509D8b069417E8a1d76b4Ab585df01BE00cbbA8"},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"content":{"type":"string"}}}}}},"402":{"description":"Payment required (x402 challenge)","content":{"application/json":{"schema":{"type":"object","properties":{"x402Version":{"type":"integer"},"accepts":{"type":"array"},"error":{"type":["string","null"]}}}}}}},"x-related-endpoints":[{"rel":"alternative","path":"/csv-to-json","title":"Inverse: CSV to JSON"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["content"],"properties":{"content":{"type":"string","maxLength":5000000}}}}}}}},"/csv-to-json":{"post":{"summary":"Convert CSV to JSON array of records via PapaParse.","description":"","x-payment-info":{"price":{"mode":"fixed","currency":"USDC","amount":"0.0005"},"protocols":["x402"],"network":"base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x9509D8b069417E8a1d76b4Ab585df01BE00cbbA8"},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"content":{"type":"string"}}}}}},"402":{"description":"Payment required (x402 challenge)","content":{"application/json":{"schema":{"type":"object","properties":{"x402Version":{"type":"integer"},"accepts":{"type":"array"},"error":{"type":["string","null"]}}}}}}},"x-related-endpoints":[{"rel":"alternative","path":"/json-to-csv","title":"Inverse: JSON to CSV"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["content"],"properties":{"content":{"type":"string","maxLength":5000000}}}}}}}},"/hash":{"post":{"summary":"Compute MD5/SHA-1/SHA-256/SHA-512 hex digest of UTF-8 input.","description":"","x-payment-info":{"price":{"mode":"fixed","currency":"USDC","amount":"0.0005"},"protocols":["x402"],"network":"base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x9509D8b069417E8a1d76b4Ab585df01BE00cbbA8"},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"algorithm":{"type":"string"},"hex":{"type":"string"}}}}}},"402":{"description":"Payment required (x402 challenge)","content":{"application/json":{"schema":{"type":"object","properties":{"x402Version":{"type":"integer"},"accepts":{"type":"array"},"error":{"type":["string","null"]}}}}}}},"x-related-endpoints":[{"rel":"related","path":"/encode-base64","title":"Base64-encode the same content"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["content","algorithm"],"properties":{"content":{"type":"string","maxLength":5000000},"algorithm":{"type":"string","enum":["md5","sha1","sha256","sha512"]}}}}}}}},"/encode-base64":{"post":{"summary":"Base64-encode UTF-8 text.","description":"","x-payment-info":{"price":{"mode":"fixed","currency":"USDC","amount":"0.0005"},"protocols":["x402"],"network":"base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x9509D8b069417E8a1d76b4Ab585df01BE00cbbA8"},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"content_base64":{"type":"string"}}}}}},"402":{"description":"Payment required (x402 challenge)","content":{"application/json":{"schema":{"type":"object","properties":{"x402Version":{"type":"integer"},"accepts":{"type":"array"},"error":{"type":["string","null"]}}}}}}},"x-related-endpoints":[{"rel":"alternative","path":"/decode-base64","title":"Inverse: base64-decode"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["content"],"properties":{"content":{"type":"string","maxLength":5000000}}}}}}}},"/decode-base64":{"post":{"summary":"Decode base64 to UTF-8 text.","description":"","x-payment-info":{"price":{"mode":"fixed","currency":"USDC","amount":"0.0005"},"protocols":["x402"],"network":"base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x9509D8b069417E8a1d76b4Ab585df01BE00cbbA8"},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"content":{"type":"string"}}}}}},"402":{"description":"Payment required (x402 challenge)","content":{"application/json":{"schema":{"type":"object","properties":{"x402Version":{"type":"integer"},"accepts":{"type":"array"},"error":{"type":["string","null"]}}}}}}},"x-related-endpoints":[{"rel":"alternative","path":"/encode-base64","title":"Inverse: base64-encode"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["content_base64"],"properties":{"content_base64":{"type":"string"}}}}}}}}}}