Sign EIP-712 typed data
Sign structured typed data using the EIP-712 standard. The vault's private key, securely stored in KMS (Key Management Service), is used to create the cryptographic signature. Returns the signature immediately if no approval is required, or a pending approval status if the organization's policy requires multi-sig approval.
Request Body
| Field | Type | Required | Description |
|---|
sender | object | Yes | Signing sender; must include vaultId (UUID of the vault) |
chainId | integer | Yes | Chain ID for the signing context (positive integer) |
typedData | object | Yes | EIP-712 structured data (see below) |
user | object | No | User context for policy evaluation (id, email, role, roles) |
typedData Object
| Field | Type | Description |
|---|
domain | object | Domain separator: name, version, chainId, verifyingContract, salt |
types | object | Type definitions as key-value pairs where each value is an array of [name, type] |
primaryType | string | The primary type being signed |
message | object | The actual message data to sign |
Response
Returns 200 OK when signing completes synchronously, or 202 Accepted when the request is pending multi-sig approval.
| Field | Type | Description |
|---|
signingId | string (UUID) | Unique identifier for this signing request |
workflowId | string | Workflow identifier tracking the signing operation |
status | string | One of STARTED, SIGNED, PENDING_APPROVAL, DENIED, EXPIRED, FAILED, CANCELLED |
message | string | Human-readable status message |
signature | string | Complete signature in 0x... format (r + s + v, 65 bytes); present when status is SIGNED |
messageHash | string | EIP-712 encoded hash of the typed data |
signerAddress | string | Vault address that produced the signature |
components | object | Signature components r, s, v |
approvalRequestId | string | Approval request ID when status is PENDING_APPROVAL |
requiredApprovers | number | Number of approvers required when approval is pending |
Use Cases
- Permit approvals — ERC-20 permit signatures for gasless approvals
- Gasless transactions — Meta-transactions via relayers
- Off-chain orders — DEX order signing (Uniswap, 0x, etc.)
- Authentication — Sign-in with Ethereum (SIWE)