titlestring- 1–200 characters. Required, unless
templateId is given — then it defaults to the template's name. kindstringxdoc (the default) or sheet. A spreadsheet is built from the five fields below instead of a body, and sending any of them implies sheet; it takes no recipients, because it cannot be sent for signature.csvstring- Spreadsheet: the grid as CSV, up to 200,000 characters. Comma, semicolon and tab separators are detected. A cell beginning with
= is a formula, worked out here. Rows past 2,000 or columns past AZ are left out and said so in warnings; an empty CSV is a 400. cellsobject- Spreadsheet: address → what to type, e.g.
{"A1": "Revenue", "B2": 1200, "B5": "=SUM(B2:B4)"}, typed over the CSV when both are sent. A number or boolean is taken as the text a person would type; "" or null clears a cell. Functions: SUM, AVERAGE, MIN, MAX, COUNT, COUNTA, MEDIAN, PRODUCT, ROUND, ROUNDUP, ROUNDDOWN, ABS, SQRT, POWER, IF, AND, OR, NOT, IFERROR, CONCAT, LEN, UPPER, LOWER, TRIM, LEFT, RIGHT, VLOOKUP, HLOOKUP, INDEX, MATCH, SUMIF, COUNTIF, AVERAGEIF, SUMPRODUCT. Up to 2,000 characters a cell and 20,000 filled cells; the grid runs to column AZ and row 2,000. formats{range, numberFormat?, decimals?, bold?, align?, fill?}[]- Spreadsheet: how cells read, per cell or range (
B2:B9). numberFormat is text, number, currency or percent (a percent cell holds the fraction: 0.45 reads 45%); decimals 0–10; align is left, center or right; fill a background colour like #fde68a, or null to take it off. Formatting changes how a figure reads everywhere it is shown — never its value. headerRowboolean- Spreadsheet: draw and print row 1 as headings.
freeze{rows?, columns?}- Spreadsheet: how many rows (top) and columns (left) stay in place while scrolling, 0–10 each. Carried into .xlsx as a frozen pane.
sort{column, direction?}- Spreadsheet: reorders the data rows — below the header row and any frozen rows — by one column (
C), asc (default) or desc. Whole rows move with their formats, and each row's formulas follow it as a filled formula does; empty cells sort last. Applied after the other changes. filters{ [column]: string[] } | null- Spreadsheet: column → the shown values to keep, merged over the sheet's filters; an empty list clears that column, null clears them all. A view saved with the sheet: it hides rows in the editor, and the body, the PDF, CSV and .xlsx keep every row.
size{columns?, rows?}- Spreadsheet: how much grid to draw, up to 52 columns and 2,000 rows. It is never smaller than what is filled.
markdownstring- The body most callers have, up to 500,000 characters. CommonMark and GFM are read — headings, lists, quotes, code fences, rules, pipe tables with column alignment, images, footnotes, reference links,
$…$ / $$…$$ mathematics — along with common inline HTML (<b>, <a>, <img>, <br>). The file GET /documents/:id/export?format=md writes reads back as the same document: signature fields, comment anchors, tracked changes, alignment and highlight included. Converted on the way in, and conversion losses come back in warnings. htmlstring- An alternative body, for callers holding HTML. Up to 1,000,000 characters.
contentobject- Raw document JSON with
type: "doc", for callers holding that. Up to 1,000,000 characters serialized. templateIdstring- Start from a saved template, signature blocks already in place. Cannot be combined with a body. Any
recipients sent alongside fill the template's slots in order, so those blocks stay bound to them; a recipient who omits role or routingOrder keeps the slot's. recipients{name, email, role?, routingOrder?, accessCode?}[]- The draft signing list, up to 30.
role is signer (the default) or viewer; routingOrder 1–99, defaulting to 1; accessCode (4–40 characters) is an out-of-band code that person must enter before signing. folderIdstring- File it in one of your workspace folders.