---
title: "Sign Typed Data"
method: POST
path: "/v1/wallets/sign-typed-data"
tags: ["Wallets"]
---

# Sign Typed Data

`POST /v1/wallets/sign-typed-data`

Signs structured data according to the EIP-712 standard using the specified wallet. This is commonly used for secure message signing in DeFi protocols, NFT marketplaces, and other dApps that require structured data verification. The typed data includes domain separation and type definitions for enhanced security.

**Authentication**: This endpoint requires project authentication and wallet authentication. For backend usage, use `x-secret-key` header. For frontend usage, use `x-client-id` + `Authorization: Bearer <jwt>` headers.

## Request body

- object — Request body for signing typed data
  - `from` string, required — The wallet address or ENS name that will sign the typed data.
  - `chainId` integer, required — The blockchain network identifier for EIP-712 domain separation.
  - `domain` object, required — EIP-712 domain separator containing contract and chain information for signature verification.
    - `chainId` string — Chain ID as string for domain separation
    - `name` string — The domain name (e.g., token name)
    - `salt` string — Optional salt for additional entropy
    - `verifyingContract` string — The contract address that will verify this signature
    - `version` string — Domain version for signature compatibility
  - `message` object, required — The structured data to be signed, matching the defined types schema.
  - `primaryType` string, required — The primary type name from the types object that defines the main structure being signed.
  - `types` object, required — Type definitions for the structured data, following EIP-712 specifications.

## Response `200`

Typed data signed successfully. Returns the EIP-712 compliant signature that can be used for on-chain verification.

- object
  - `result` object, required
    - `signature` string, required — The cryptographic signature in hexadecimal format. This can be used for verification and authentication purposes.

## Other responses

- `400` — Invalid request parameters. This occurs when the typed data structure is malformed, domain parameters are incorrect, or wallet address format is invalid.
- `401` — Authentication required. The request must include valid `x-wallet-access-token` headers for accessing the wallet, as well as a x-client-id (frontend) or x-secret-key (backend) for project authentication.
- `500` — Internal server error. This may occur due to wallet connectivity issues, signing service unavailability, or unexpected server errors.

---

[API](https://skmtc.dev/thirdweb/apis/thirdweb-api.md) · [All operations](https://skmtc.dev/thirdweb/apis/thirdweb-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/thirdweb/thirdweb-api/revisions/67ab6773fb59/schema)
