---
title: "Create Token"
method: POST
path: "/v1/tokens"
tags: ["Tokens"]
---

# Create Token

`POST /v1/tokens`

Create a new ERC20 token with the provided metadata and starting price. The token is immediately available for purchase using thirdweb Payments.

**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 schema for creating a new ERC20 token
  - `chainId` integer, required — The blockchain network identifier. Common values include: 1 (Ethereum), 8453 (Base), 137 (Polygon), 56 (BSC), 43114 (Avalanche), 42161 (Arbitrum), 10 (Optimism).
  - `name` string, required — Token name
  - `symbol` string, required — Token symbol
  - `description` string, required — Token description
  - `imageUrl` string, uri, required — Token image URL
  - `from` string — Wallet address or ENS that will deploy the token. If omitted, the project wallet will be used if available.
  - `owner` string — The token owner address, if different from `from`.
  - `salt` string — A salt to deterministically generate the token address.
  - `maxSupply` number — The maximum token supply.
  - `sale` object — Setup this token for a sale.
    - `type` 'pool'
    - `startingPrice` string, required — The initial token price in wei. This price is in the currency specified by `currency` (or the native token if not specified).
    - `amount` number, required — The number of tokens to allocate to the sale.
    - `developerFeeBps` number — The bps fee on the token pool.
    - `developerFeeRecipient` string — The address to send the developer fee to. Defaults to the token owner.
    - `currency` string — The currency to price this token sale in. Defaults to the native token.

## Response `202`

The token is being deployed. Returns the predicted token address.

- object
  - `transactionId` string, required — The in-progress deployment transaction ID.
  - `address` string, required — The address the token was deployed at

## Other responses

- `400` — Invalid request parameters.
- `401` — Authentication required. For backend usage, include `x-secret-key` header. For frontend usage, include `x-client-id` + `Authorization: Bearer <jwt>` headers.
- `402` — Payment required. Insufficient wallet balance to deploy the contract.
- `500` — Internal server error. This may occur due to network connectivity issues, wallet creation failures, or transaction execution failures.

---

[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)
