---
title: "Send Tokens"
method: POST
path: "/v1/wallets/send"
tags: ["Wallets"]
---

# Send Tokens

`POST /v1/wallets/send`

Send tokens to multiple recipients in a single transaction batch. Supports native tokens (ETH, MATIC, etc.), ERC20 tokens, ERC721 NFTs, and ERC1155 tokens. The token type is automatically determined based on the provided parameters and ERC165 interface detection:

- **Native Token**: No `tokenAddress` provided
- **ERC20**: `tokenAddress` provided, no `tokenId`
- **ERC721/ERC1155**: `tokenAddress` and `tokenId` provided. Auto detects contract type:
  - ERC721: quantity must be '1'
  - ERC1155: any quantity allowed (including '1')

**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 sending tokens to multiple recipients. Supports native tokens, ERC20, ERC721, and ERC1155 transfers based on the provided parameters.
  - `from` string — The wallet address or ENS name that will send the tokens. If omitted, the project wallet will be used if available.
  - `chainId` integer, required — The blockchain network identifier where the transfer will be executed.
  - `recipients` object[], required — Array of recipients and quantities. Maximum 100 recipients per request.
    - `address` string, required — The recipient wallet address or ENS name
    - `quantity` string, required — The amount to send. For native tokens and ERC20: amount in wei/smallest unit. For ERC721: should be '1'. For ERC1155: the number of tokens to transfer.
  - `tokenAddress` string — The token contract address. Omit for native token (ETH, MATIC, etc.) transfers.
  - `tokenId` string — The token ID for NFT transfers (ERC721/ERC1155). Required for NFT transfers.

## Response `200`

Tokens sent successfully. Returns transaction IDs for tracking and monitoring.

- object
  - `result` object, required
    - `transactionIds` string[], required — Array of transaction IDs for the submitted transfers. One ID per recipient.

## Other responses

- `400` — Invalid request parameters. This occurs when token parameters are malformed, insufficient balance, invalid contract data, or unsupported token type.
- `401` — Authentication required. For backend usage, include `x-secret-key` header. For frontend usage, include `x-client-id` + `Authorization: Bearer <jwt>` headers.
- `500` — Internal server error. This may occur due to blockchain connectivity issues, gas estimation failures, contract execution errors, or unexpected server errors.

---

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