Deploy an NFT collection contract

Deploys a fixed-supply ERC-721 smart contract, commonly used for launching NFT collections.

As blockchains can take a few seconds up to a few minutes to sync, then after contract deployment, you can use the returned transaction_hash in Retrieve a deployed contract to get the contract_address.

You can deploy up to 5 contracts for free on each of Polygon and Goerli, and max_supply is limited to less than or equal to 5,000 NFTs for collection contracts deployed on the Free plan. Ethereum contract deployments are available only on the Growth or Scale tier
and you will be charged immediately on request and if the transaction fails for any reason the amount will be refunded. For details and limits, see pricing.

Useful for:

  • Launching an NFT collection (e.g. a 10,000 profile pictures collection) with a minting website. See our tutorial to learn how to create an NFT contract collection and make a website to allows users to mint.

Related:

Read how royalties work here.

Body Params
string
enum
required

Blockchain to deploy the contract to. Cannot be changed later.

Allowed:
string
required

Name of the NFT contract. Cannot be changed later.

string
required

Symbol of the NFT contract. Cannot be changed later.

integer
required
≥ 1

The maximum number of NFTs that can be minted in this collection. Cannot be changed later.

integer
≥ 0
Defaults to 0

The number of NFTs that can only be minted by the contract owner for free. The team_reserve is part of max_supply and cannot be changed later.

number
≥ 0

Minting price per NFT, in units of the chain's native token.

number
≥ 0

Minting price per NFT in the presale phase, in units of the chain's native token.

integer
required
≥ 1

The maximum number of NFTs a user can mint in a single transaction. Cannot be changed later.

string
required

The contract owner address. If you wish to own the contract, then set it as your wallet address. This is also the wallet that can manage the contract on NFT marketplaces. Use transferOwnership() to update the contract owner.

string
required

The treasury address: the balance of paid minting prices can be withdrawn to this address. Call withdrawFees() (on a block explorer like Polygonscan or Etherscan) in the contract ABI to transfer the entire balance to the treasury address. Cannot be changed later.

string
required

Public minting start date (ISO). Eg: 2022-02-08T11:30:48+00:00.

boolean

Default is true. If true, metadata of the NFTs minted in the specified contract can be updated after minting (token URIs are not frozen on the contract level). This is useful for creating dynamic NFTs or revealing the NFTs after the drop. If false, metadata of NFTs minted in this contract are frozen, which means base_uri cannot be updated..

string

Metadata base URI for tokens. If you specify this, then the metadata location of NFTs minted in this contract will be of the format base_uri + token_id. This is useful for creating dynamic NFTs or revealing the NFTs after the drop.

string

Pre-reveal token URI for placeholder metadata. This will be returned for all token IDs until a baseURI has been set.

string

Whitelisted/presale minting start date (ISO). Eg: 2022-02-08T11:30:48+00:00.

presale_whitelisted_addresses
array of strings

List of addresses whitelisted for the presale. Maximum amount of addresses supported is 4000.

Presale Whitelisted Addresses
integer
0 to 10000

Secondary market royalty rate in basis points (100 bps = 1%). This value cannot exceed 10,000 bps.

string

Address that will have access to the balance of royalties paid. Defaults to owner_address if not set.

number

Optional maximum transaction fee, in USD. Setting this parameter means you may be billed for up to max_transaction_fee for this request, while making the transaction more likely to succeed when there is a lot of activity (high gas prices) on the chain. If specified, must be higher than the list price for this transaction. Only available to Enterprise clients on the Ethereum chain.

Response

Language
Credentials
Header
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json