Bürowerk
terms diff
Takes two contract versions as text, public URLs or inline base64 — PDF, DOCX, ODT, HTML and Markdown are read — and reports what is different. Which passages changed is decided by a Myers shortest-edit-script over the paragraphs, not by a model: the deterministic comparison is the source of truth, and only afterwards is a model asked what changed in substance at those specific places. That order is the point. A model handed two whole contracts returns a plausible list of changes whose.
POST https://buero.halowerk.com/v1/terms-diffEingaben
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| a | object | Ja | The earlier version. Exactly one of text, url or content_base64. |
| b | object | Ja | The later version. Same shape as a. |
| document_chars | integer | Nein | Only needed when a version arrives by url or content_base64: the combined length of both versions in characters, which is what you are billed for. Longer text is refused with the real length and nothing is charged. |
| max_changes_described | integer | Nein | How many changed passages the model describes. Beyond this the passages still come back with their before and after text, only without a description — what is dropped is counted, never silently cut. |
| ignore_whitespace | boolean | Nein | Treat runs of spaces and tabs as one space before comparing. |
| include_unchanged_count | boolean | Nein | Report how many paragraphs stayed identical. |
Vollständiges Eingabeschema anzeigen
{
"type": "object",
"required": [
"a",
"b"
],
"additionalProperties": false,
"properties": {
"a": {
"type": "object",
"additionalProperties": false,
"description": "The earlier version. Exactly one of text, url or content_base64.",
"properties": {
"text": {
"type": "string",
"maxLength": 200000,
"description": "The text directly. Cheapest and clearest — its length is billed as counted here."
},
"url": {
"type": "string",
"maxLength": 2048,
"description": "Public http(s) URL of a PDF, DOCX, ODT, HTML or text file. Private and local addresses are refused."
},
"content_base64": {
"type": "string",
"maxLength": 4000000,
"description": "The file inline, base64."
},
"filename": {
"type": "string",
"maxLength": 260,
"description": "Only consulted when the bytes carry no recognisable signature."
},
"format": {
"type": "string",
"enum": [
"auto",
"pdf",
"docx",
"odt",
"html",
"markdown",
"rtf",
"text"
],
"default": "auto",
"description": "Override the detected format. \"auto\" reads it from the bytes."
}
}
},
"b": {
"type": "object",
"additionalProperties": false,
"description": "The later version. Same shape as a.",
"properties": {
"text": {
"type": "string",
"maxLength": 200000,
"description": "The text directly. Cheapest and clearest — its length is billed as counted here."
},
"url": {
"type": "string",
"maxLength": 2048,
"description": "Public http(s) URL of a PDF, DOCX, ODT, HTML or text file. Private and local addresses are refused."
},
"content_base64": {
"type": "string",
"maxLength": 4000000,
"description": "The file inline, base64."
},
"filename": {
"type": "string",
"maxLength": 260,
"description": "Only consulted when the bytes carry no recognisable signature."
},
"format": {
"type": "string",
"enum": [
"auto",
"pdf",
"docx",
"odt",
"html",
"markdown",
"rtf",
"text"
],
"default": "auto",
"description": "Override the detected format. \"auto\" reads it from the bytes."
}
}
},
"document_chars": {
"type": "integer",
"minimum": 1,
"maximum": 24000,
"description": "Only needed when a version arrives by url or content_base64: the combined length of both versions in characters, which is what you are billed for. Longer text is refused with the real length and nothing is charged."
},
"max_changes_described": {
"type": "integer",
"minimum": 1,
"maximum": 60,
"default": 25,
"description": "How many changed passages the model describes. Beyond this the passages still come back with their before and after text, only without a description — what is dropped is counted, never silently cut."
},
"ignore_whitespace": {
"type": "boolean",
"default": true,
"description": "Treat runs of spaces and tabs as one space before comparing."
},
"include_unchanged_count": {
"type": "boolean",
"default": true,
"description": "Report how many paragraphs stayed identical."
}
}
}Veröffentlichtes Eingabebeispiel
{
"a": {
"text": "§ 2 Laufzeit\nDer Vertrag laeuft zwoelf Monate.\n\n§ 5 Haftung\nDie Haftung ist auf den Auftragswert begrenzt."
},
"b": {
"text": "§ 2 Laufzeit\nDer Vertrag laeuft vierundzwanzig Monate.\n\n§ 5 Haftung\nDie Haftung ist auf den Auftragswert begrenzt.\n\n§ 8 Gerichtsstand\nGerichtsstand ist Berlin."
}
}Ergebnis & Dokumentation
Maschinenlesbare Dokumentation dieses Hubs
Quelle dieser Seite: der veröffentlichte HALOWERK-Katalog. Stand: 2026-11-01, 15:19 UTC.
Weitere Endpunkte dieses Hubs
- Bürowerk0,002 USDC
availability resolve
POSThttps://buero.halowerk.com/v1/availability-resolveGive it a search window, a meeting length, and for each participant a list of busy blocks — start and end, nothing else — and it returns the windows in which the meeting fits. Each participant carries their own IANA timezone and working hou
- Bürowerk0,004 USDC
mail / allowed domain partition
POSThttps://buero.halowerk.com/v1/baumarkt/mail/allowed-domain-partitionPartner campaign: partition rows by explicitly allowed domains. Reuses the existing email-list-clean motor. No SMTP probes or mailbox existence/catch-all proof. Local part case, plus and dots are never folded. Up to500 source rows;65s engin
- Bürowerk0,004 USDC
mail / baseline added
POSThttps://buero.halowerk.com/v1/baumarkt/mail/baseline-addedCRM synchronization: addresses newly appearing after baseline. Reuses the existing email-list-clean motor. No SMTP probes or mailbox existence/catch-all proof. Local part case, plus and dots are never folded. Up to500 source rows;65s engine