signing.templates.create
Create a custom agreement template from Markdown (body with {{field.key}} merge fields and an optional {{signatures}} block), fields, signerRoles, and letterhead. Set duplicateOf to copy an existing or starter template. It is published and ready to send unless publish is false, which keeps it a draft until signing.templates.publish. Requires an idempotency key.
/api/v1/accounting/signing.templates.createPermissions
Who can call it
Retries
MCP
accounting_signing_templates_createFields
titlestringRequiredA short title.
1–200 characters
descriptionstringA short description.
at most 1000 characters · Default ""
kindenumWhich kind of record or job this is.
ndacontractor_agreementsignature_requestletterheadcustomDefault "custom"
bodystring1–200000 characters
editorJsonmap or nullfieldsarray of objectsat most 100 items
signerRolesarray of objectsat most 10 items
letterheadbooleanlogoAssetIdstring (ID) or nullduplicateOfstring (ID)publishbooleanidempotencyKeystringRequiredAny unique text you generate once per intended change, so a retried request only happens once. Send it as the Idempotency-Key header instead if you prefer; if you send both they must match.
8–200 characters
Example
curl https://app.getoatmilk.com/api/v1/accounting/signing.templates.create \
-H "Authorization: Bearer $OATMILK_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"title": "Synthetic services agreement",
"body": "Synthetic example from the docs"
}'{
"data": { … }
}Try it
Try it
Checks your input with this action’s real schema and answers like the API, with synthetic data. No key needed, and nothing changes.
curl https://app.getoatmilk.com/api/v1/accounting/signing.templates.create \
-H "Authorization: Bearer $OATMILK_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"title": "Synthetic services agreement",
"body": "Synthetic example from the docs"
}'More in Documents and signing.