| Document | Etch packet | The signing transaction. createEtchPacket returns an etchPacketEid. |
| Template (template_uuid) | Cast (castEid) or dynamic doc | A reusable template. |
| Role (roles[].name) | Signer id | A named signing slot bound to a recipient at create time. |
| Field (signature, text, date…) | Field | A signable or fillable widget assigned to a signer. |
| field_id / merge_field | Field alias (aliasId) | Your data key for a field. |
| Token ({{Client.CompanyName}}) | Fill data (data.payloads) | A body merge variable – not a signer field. This is the one that trips people up. |
| signing_order | routingOrder | Signing order; equal values sign in parallel. |
| Signing session | generateEtchSignURL | The embedded signing URL. |
| send silent: false / true | signerType: 'email' / 'embedded' | Anvil emails the signer vs. you host the signing UI. |
| Content blocks / rich text | Dynamic-doc content nodes | Structured document body, on the dynamic-doc target. |
| document.completed | etchPacketComplete | All signers done; documents downloadable. |
| recipient_completed | signerComplete | One signer finished. |
| API-Key header | ANVIL_API_KEY | Auth. One key for everything. |