Document actions
Compare Files
Compare two versions of a document and get a redline of the differences.
POST
Preview. This endpoint is available to organisations in the Wordsmith MCP pilot. Other organisations receive
403 mcp_not_enabled. See the preview overview.document_action: the response comes back straight away, and the work runs in the background. Wait for it with wait, a callback_url, or Get Operation. The new files land in your private space. The input files are not changed. Document actions use no credits.
Authentication
Send an API key, or an OAuth access token with both thefiles:write and files:read scopes. files:write lets the action create its output; files:read lets it read the inputs. A token without either gets 403 with "error": "insufficient_scope".
Headers
string
A unique key for this request, such as a UUID, up to 255 characters. A repeat with the same key within 30 days returns
200 with the same operation and does the work once. A repeat with a different body returns 409 idempotency_key_reused.Body parameters
string (uuid)
required
The earlier version. Text only in this file shows as deleted.
string (uuid)
required
The later version. Text only in this file shows as inserted. It must be a different file from
original_file_id.string
default:"docx"
docx for a tracked-changes Word document, or pdf for that document rendered as a PDF with the changes marked up.integer
default:"0"
Seconds to wait for the action to finish before responding, from
0 to 20. Two short documents usually compare inside 20.string
A public HTTPS URL that receives a signed
operation.succeeded, operation.failed or operation.cancelled event when the action finishes. API keys only: an OAuth caller waits or polls instead.Response
Returns202 with an operation of type document_action. Its resource is the original file. A repeat with the same Idempotency-Key returns 200 with the same operation.
When status is succeeded, result is { "action": "compare", "file_ids", "summary" }. file_ids holds one id: the redline. summary is { "insertions", "deletions", "moves" }, counting each kind of tracked change.
When status is failed, error.code says why:
string (uuid)
The operation’s id.
string
document_action.string
queued until a worker starts the action, then running, succeeded, failed or cancelled.object | null
{ "stage", "completed", "total" }. null until the work starts.object
{ "type": "file", "id" }: the original file.object | null
Set when
status is succeeded.object | null
{ "code", "message", "retryable" }, set when status is failed.integer | null
When to ask again.
null once the operation has finished.string
ISO 8601 UTC.
string
ISO 8601 UTC.
string | null
ISO 8601 UTC, once the operation has finished.