Upload the template document as a transient document with POST /transientDocuments; note the transientDocumentId
Prepare a CSV file with one row per recipient containing at minimum the signer email address and any form-field pre-fill values you want per recipient
Upload the CSV as a transient document to get a second transientDocumentId representing the recipient list
POST to /api/rest/v6/megaSigns with a body that includes fileInfos (the document transientDocumentId), megaSignCreationInfo.recipientSetInfos referencing the CSV transientDocumentId, name, signatureType, and state (IN_PROCESS to send immediately)
Capture the megaSignId; retrieve child agreement IDs with GET /megaSigns/{megaSignId}/agreements to track individual signers
Change the MegaSign state (e.g., cancel) using PUT /megaSigns/{megaSignId}/state with an If-Match header set to the current ETag value
Known gotchas
The PUT /megaSigns/{megaSignId}/state endpoint requires an If-Match header containing the current ETag; retrieve it first from a GET on the resource
Per-hour and per-day API rate limits still apply to bulk send; do not attempt to create thousands of agreements in rapid succession without reviewing your account throttle limits
Each child agreement within a MegaSign is a separate billable agreement; confirm per-envelope pricing with Adobe before sending large batches
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp