Skip to main content
Redlining lets two parties negotiate revisions to a DOCX contract in turns. You create a redline request on your server, then embed a member-specific redline URL in an iframe so each party can revise on their turn. This walkthrough covers creating a redline request, managing members, embedding redline URLs, and tracking the negotiation until the document is ready to sign.
Redlining edits the underlying document, so the template must have a DOCX source file. Creating a redline request for a template without one returns 404. Most integrations only need embedded signing — use redlining when you need negotiation before signature.

Prerequisites

  1. An API key from Settings
  2. A template uploaded from a DOCX file

Roles

A redline request has members, each with a role. The two core parties are set up front; counsel can be added later.

Server side

1. Create a redline request

Provide the templateId and at least one member. Each member needs an email, displayName, and role.
Response
The response templateId is a new template created for this negotiation — a copy that receives the redlining changes. Your original template is left untouched.
The optional metadata.subject sets a subject line for the negotiation. Set testMode: true to keep the request out of billing while you integrate. Test mode documents are watermarked and are not legally binding.

2. Manage members

Add or update members at any time — for example, to invite counsel — with Update redline members. This replaces the member list, so send the full set.

3. Generate a redline URL for a member

Each member works on their turn through a member-specific redline URL. Pass the member’s email — they must already be part of the request. Generate the URL just-in-time; it is short-lived.
Response

Client side

Embed the redlineUrl in an iframe for that member:
Generate the URL on your backend and pass only the URL to the client — the same pattern as embedded signing.
If it isn’t the member’s turn, the URL opens in a read-only “out of turn” view. Regenerate the URL if the member returns after it has expired.

Listen for editor events

The redline editor posts messages to the parent window so you can close the iframe or advance your UI:
Always check event.origin. Use these for client UX; confirm negotiation state with the API or webhooks.

Track the negotiation

The currentRound field indicates whose turn it is (Disclosing or Receiving), and status tracks progress through the negotiation.
Response
For a full history of turn changes and review requests, read redline request events. To sync many negotiations, use List redline requests with updatedSince. You can also listen for redlining events on your webhook endpoint.

Ready for signing

When the negotiation reaches DocumentReadyForSigning, send the finalized template through the embedded signing flow using the redline request’s templateId.

Next steps

Embedded signing

Collect signatures on the finalized template.

Webhooks

Get notified as negotiation status changes.