Endpoint
POST
https://documentdelta.com/api/compare
Request
Send a multipart/form-data request with two DOCX files:
| Field | Type | Description |
|---|---|---|
original | File | The base version of the document (.docx, max 500 KB) |
modified | File | The updated version to compare against (.docx, max 500 KB) |
Response
| Status | Content-Type | Body |
|---|---|---|
200 | application/vnd.openxmlformats-... | The compared DOCX file with tracked changes |
400 | application/json | { "error": "..." } — missing files, empty files, non-.docx, or invalid document |
413 | application/json | { "error": "..." } — file exceeds 500 KB limit |
429 | — | Rate limit exceeded (10 requests/hour) |
500 | application/json | { "error": "..." } — comparison engine error |
Rate Limits
The public API allows 10 requests per hour per IP address. Need higher limits? Contact us about enterprise access.
Examples
cURL
curl -X POST https://documentdelta.com/api/compare \
-F "original=@original.docx" \
-F "modified=@modified.docx" \
-o compared.docx
C# / .NET
using var client = new HttpClient();
using var form = new MultipartFormDataContent();
form.Add(new ByteArrayContent(
File.ReadAllBytes("original.docx")), "original", "original.docx");
form.Add(new ByteArrayContent(
File.ReadAllBytes("modified.docx")), "modified", "modified.docx");
var response = await client.PostAsync(
"https://documentdelta.com/api/compare", form);
response.EnsureSuccessStatusCode();
var result = await response.Content.ReadAsByteArrayAsync();
File.WriteAllBytes("compared.docx", result);
Python
import requests
files = {
"original": open("original.docx", "rb"),
"modified": open("modified.docx", "rb"),
}
response = requests.post(
"https://documentdelta.com/api/compare", files=files
)
response.raise_for_status()
with open("compared.docx", "wb") as f:
f.write(response.content)
JavaScript (Node.js)
const fs = require("fs");
const form = new FormData();
form.append("original", new Blob([fs.readFileSync("original.docx")]));
form.append("modified", new Blob([fs.readFileSync("modified.docx")]));
const response = await fetch(
"https://documentdelta.com/api/compare",
{ method: "POST", body: form }
);
if (!response.ok) throw new Error(await response.text());
const buffer = await response.arrayBuffer();
fs.writeFileSync("compared.docx", Buffer.from(buffer));
PowerShell
$original = Get-Item "original.docx"
$modified = Get-Item "modified.docx"
$form = @{
original = $original
modified = $modified
}
$response = Invoke-RestMethod `
-Uri "https://documentdelta.com/api/compare" `
-Method Post `
-Form $form `
-OutFile "compared.docx"
Java
HttpClient client = HttpClient.newHttpClient();
var boundary = "----FormBoundary" + System.currentTimeMillis();
byte[] original = Files.readAllBytes(Path.of("original.docx"));
byte[] modified = Files.readAllBytes(Path.of("modified.docx"));
var body = buildMultipart(boundary, original, modified);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://documentdelta.com/api/compare"))
.header("Content-Type", "multipart/form-data; boundary=" + boundary)
.POST(HttpRequest.BodyPublishers.ofByteArray(body))
.build();
HttpResponse<byte[]> response = client.send(
request, HttpResponse.BodyHandlers.ofByteArray());
Files.write(Path.of("compared.docx"), response.body());