Takes three documents — the common base and the two versions derived from it — a
Takes three documents — the common base and the two versions derived from it — as text, public URLs or inline base64, reads PDF, DOCX, ODT, HTML and Markdown, and returns one merged document. The procedure is diff3 over paragraphs, or over lines if you ask for that: each version is first compared against the base with a Myers shortest-edit-script, the two comparisons together yield the passages that are identical in all three, and each region between them is resolved by rule.
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
POST https://buero.halowerk.com/v1/doc-merge
| Category | Everything else |
|---|---|
| Provider host | buero.halowerk.com |
| Networks | eip155:8453 |
| Payment schemes | exact |
| Self-reported calls, 30 days | 1 from 1 payers (the provider's figure, not ours) |
Our checks, last 30 days
| Day | Result | HTTP | Asked | Time |
|---|---|---|---|---|
| 2026-09-24 | valid payment request | 402 | $0.004 | 1187 ms |
Example input (from the provider)
{
"body": {
"a": {
"text": "\u00a7 1 Gegenstand\nDer Auftragnehmer liefert Steuergeraete nach Anlage 1.\n\n\u00a7 2 Menge\nGeliefert werden zwanzig Geraete.\n\n\u00a7 3 Lieferort\nLieferort ist das Werk Ulm.\n\n\u00a7 4 Laufzeit\nDer Vertrag laeuft zwoelf Monate.\n\n\u00a7 5 Gerichtsstand\nGerichtsstand ist Berlin.\n\n\u00a7 6 Zahlung\nDie Verguetung ist binnen 14 Tagen faellig."
},
"b": {
"text": "\u00a7 1 Gegenstand\nDer Auftragnehmer liefert Steuergeraete nach Anlage 1.\n\n\u00a7 2 Menge\nGeliefert werden zehn Geraete.\n\n\u00a7 3 Lieferort\nLieferort ist das Werk Ulm.\n\n\u00a7 4 Laufzeit\nDer Vertrag laeuft vierundzwanzig Monate.\n\n\u00a7 5 Gerichtsstand\nGerichtsstand ist Berlin.\n\n\u00a7 6 Zahlung\nDie Verguetung ist binnen 60 Tagen faellig."
},
"base": {
"text": "\u00a7 1 Gegenstand\nDer Auftragnehmer liefert Steuergeraete nach Anlage 1.\n\n\u00a7 2 Menge\nGeliefert werden zehn Geraete.\n\n\u00a7 3 Lieferort\nLieferort ist das Werk Ulm.\n\n\u00a7 4 Laufzeit\nDer Vertrag laeuft zwoelf Monate.\n\n\u00a7 5 Gerichtsstand\nGerichtsstand ist Berlin.\n\n\u00a7 6 Zahlung\nDie Verguetung ist binnen 30 Tagen faellig."
},
"label_a": "einkauf",
"label_b": "recht"
},
"bodyType": "json",
"method": "POST",
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"additionalProperties": false,
"properties": {
"a": {
"additionalProperties": false,
"description": "The first version. Same shape as base.",
"properties": {
"content_base64": {
"description": "The file inline, base64.",
"maxLength": 4000000,
"type": "string"
},
"filename": {
"description": "Only consulted when the bytes carry no recognisable signature.",
"maxLength": 260,
"type": "string"
},
"format": {
"default": "auto",
"description": "Override the detected format. \"auto\" reads it from the bytes.",
"enum": [
"auto",
"pdf",
"docx",
"odt",
"html",
"markdown",
"rtf",
"text"
],
"type": "string"
},
"text": {
"description": "The text directly. Cheapest and clearest \u2014 its length is billed as counted here.",
"maxLength": 200000,
"type": "string"
},
"url": {
"description": "Public http(s) URL of a PDF, DOCX, ODT, HTML or text file. Private and local addresses are refused.",
"maxLength": 2048,
"type": "string"
}
},
"type": "object"
},
"b": {
"additionalProperties": false,
"description": "The second version. Same shape as base.",
"properties": {
"content_base64": {
"description": "The file inline, base64.",
"maxLength": 4000000,
"type": "string"
},
"filename": {
"description": "Only consulted when the bytes carry no recognisable signature.",
"maxLength": 260,
"type": "string"
},
"format": {
"default": "auto",
"description": "Override the detected format. \"auto\" reads it from the bytes.",
"enum": [
"auto",
"pdf",
"docx",
"odt",
"html",
"markdown",
"rtf",
"text"
],
"type": "string"
},
"text": {
"description": "The text directly. Cheapest and clearest \u2014 its length is billed as counted here.",
"maxLength": 200000,
"type": "string"
},
"url": {
"description": "Public http(s) URL of a PDF, DOCX, ODT, HTML or text file. Private and local addresses are refused.",
"maxLength": 2048,
"type": "string"
}
},
"type": "object"
},
"base": {
"additionalProperties": false,
"description": "The common base both versions came from. Exactly one of text, url or content_base64.",
"properties": {
"content_base64": {
"description": "The file inline, base64.",
"maxLength": 4000000,
"type": "string"
},
"filename": {
"description": "Only consulted when the bytes carry no recognisable signature.",
"maxLength": 260,
"type": "string"
},
"format": {
"default": "auto",
"description": "Override the detected format. \"auto\" reads it from the bytes.",
"enum": [
"auto",
"pdf",
"docx",
"odt",
"html",
"markdown",
"rtf",
"text"
],
"type": "string"
},
"text": {
"description": "The text directly. Cheapest and clearest \u2014 its length is billed as counted here.",
"maxLength": 200000,
"type": "string"
},
"url": {
"description": "Public http(s) URL of a PDF, DOCX, ODT, HTML or text file. Private and local addresses are refused.",
"maxLength": 2048,
"type": "string"
}
},
"type": "object"
},
"conflict_style": {
"default": "markers",
"description": "markers: conflicts appear in merged_text between labelled markers. keep_base: the base wording is kept at the conflict site and the conflict is still reported \u2014 this is not a resolution. none: merged_text is withheld while any conflict remains.",
"enum": [
"markers",
"keep_base",
"none"
],
"type": "string"
},
"ignore_whitespace": {
"default": true,
"description": "Treat runs of spaces and tabs as one space before comparing. Applied to all three documents alike.",
"type": "boolean"
},
"include_word_diff": {
"default": true,
"des