---
title: "Issue a token on one or more blockchains"
method: POST
path: "/tokenization/multichain/tokens"
tags: ["Tokenization"]
---

# Issue a token on one or more blockchains

`POST /tokenization/multichain/tokens`

## Request

- Base URL: `https://api.fireblocks.io/v1`
- URL: `https://api.fireblocks.io/v1/tokenization/multichain/tokens`
- Auth: none declared
- TypeScript: <https://skmtc.dev/fireblocks/apis/fireblocks-api/docs/tokenization/multichain/tokens/post.ts> (a function with typed inputs; its response is checked against the schema)

Facilitates the creation of a new token on one or more blockchains.

## Headers

- `Idempotency-Key` string

## Request body

- CreateMultichainTokenRequest
  - `vaultAccountId` string, required: The id of the vault account that initiated the request to issue the token
  - `createParams` EVMTokenCreateParamsDto, required
    - `contractId` string, required: The id of the contract template that will be used to create the token
    - `deployFunctionParams` ParameterWithValue[]: The deploy function parameters and values of the contract template
      - `name` string, required: The name of the parameter as it appears in the ABI
      - `description` string: A description of the parameter, fetched from the devdoc of this contract
      - `internalType` string: The internal type of the parameter as it appears in the ABI
      - `type` string, required: The type of the parameter as it appears in the ABI
      - `components` Parameter[]
        - `name` string, required: The name of the parameter as it appears in the ABI
        - `description` string: A description of the parameter, fetched from the devdoc of this contract
        - `internalType` string: The internal type of the parameter as it appears in the ABI
        - `type` string, required: The type of the parameter as it appears in the ABI
        - `components` Parameter[]
      - `value` string: The value of the parameter. The shape follows the ABI `type`: a string for `string`/`address`/`bytes*`, a number for `uint*`/`int*`, a boolean for `bool`, an array for `T[]`, and for `tuple` an array of nested ParameterWithValue objects (one per entry in `components`, in ABI order).
      - `functionValue` LeanAbiFunction
        - `name` string: The function name
        - `inputs` ParameterWithValue[], required: The function inputs
        - `outputs` ParameterWithValue[]: The function outputs
        - `stateMutability` 'view' | 'pure' | 'nonpayable' | 'payable': The state mutability of the function (e.g., view, pure, nonpayable, payable)
  - `salt` string: The salt to calculate the deterministic address. Must be a number between 0 and 2^256 -1, for it to fit in the bytes32 parameter.
  - `chains` string[], required: The base asset identifiers of the blockchains (legacyId) to calculate deterministic addresses
  - `displayName` string
  - `useGasless` boolean: Indicates whether the token should be created in a gasless manner, utilizing the ERC-2771 standard. When set to true, the transaction will be relayed by a designated relayer. The workspace must be configured to use Fireblocks gasless relay.
  - `fee` string: Max fee amount for the write function transaction. interchangeable with the 'feeLevel' field
  - `feeLevel` 'LOW' | 'MEDIUM' | 'HIGH': Fee level for the write function transaction. interchangeable with the 'fee' field

## Response `201`

Tokens were created successfully

- TokenLinkDto[]: Response schema for issuing tokens across multiple chains
  - `id` string, required: The token link id
  - `status` 'PENDING' | 'COMPLETED', required: The token status
  - `type` 'FUNGIBLE_TOKEN' | 'NON_FUNGIBLE_TOKEN' | 'TOKEN_UTILITY' | 'TOKEN_EXTENSION': The type of token
  - `refId` string: The Fireblocks' reference id
  - `displayName` string: The token display name. If was not provided, would be taken from the contract template
  - `tokenMetadata` union: The token's metadata
    - AssetMetadataDto
      - `assetId` string, required: The Fireblocks` asset id
      - `name` string: The name of the token
      - `symbol` string: The symbol of the token
      - `networkProtocol` string: The network protocol of the token
      - `totalSupply` string: The total supply of the token
      - `holdersCount` number: The number of holders of the token
      - `type` string: The type of the token
      - `contractAddress` string: The address of the token contract
      - `issuerAddress` string: In case of Stellar or Ripple, the address of the issuer of the token
      - `testnet` boolean: Is it deployed on testnet or to mainnet
      - `blockchain` string: The blockchain native asset id which the token is deployed on
      - `decimals` number: The number of decimals of the token
      - `vaultAccountId` string: The id of the vault account that initiated the request to issue the token. Will be empty if token was issued outside of Fireblocks.
    - CollectionMetadataDto
      - `fbCollectionId` string, required: Fireblocks collection id
      - `name` string: Collection name
      - `symbol` string: Collection symbol
      - `standard` string: Collection contract standard
      - `blockchainDescriptor` string, required: Collection's blockchain
      - `contractAddress` string: Collection contract address
    - ContractMetadataDto
      - `id` string, required: The deployed contract ID
      - `blockchainId` string, required: The blockchain ID
      - `contractAddress` string, required: The address of the token contract
      - `contractTemplateId` string, required: The contract template ID
      - `vaultAccountId` string: The vault account ID that initiated the request to issue the token

## Other responses

- `400`: Invalid input.
- `409`: Address is already taken.

---

[API](https://skmtc.dev/fireblocks/apis/fireblocks-api.md) - [All operations](https://skmtc.dev/fireblocks/apis/fireblocks-api/llms.txt) - [OpenAPI document](https://skmtc.dev/fireblocks/apis/fireblocks-api/revisions/4eba9965659a?raw)
