Edition Drop
When using the Edition Drop smart contract, additional top-level functionality is available to use.
To access the top-level functionality, use the get_edition_drop method when creating the contract instance:
contract = sdk.get_edition_drop(
  "{{contract_address}}",
)
The extensions that the edition drop contract supports are listed below.
- ERC1155
- ERC1155Enumerable
- ERC1155LazyMintable
- ERC1155ClaimPhases
- Royalty
- PlatformFee
- PrimarySale
- Permissions
- ContractMetadata
- Ownable
- Gasless
claim
Claim a specified number of tokens to the connected wallet.
token_id = 0
quantity = 1
tx = contract.claim(token_id, quantity)
receipt = tx.receipt
claimed_token_id = tx.id
claimed_nft = tx.data()
Configuration
claim_to
The same as claim, but allows specifying the recipient
address rather than using the connected wallet.
address = "0x7fDae677aA6f94Edff9872C4b91D26407709c790"
token_id = 0
quantity = 1
tx = contract.claim_to(address, token_id, quantity)
receipt = tx.receipt
claimed_token_id = tx.id
claimed_nft = tx.data()
Configuration
recipient (required)
The wallet address to receive the claimed tokens.
Must be a string.
token_id (required)
The token ID of the NFT you want to claim.
Must be an int.
quantity (required)
The number of tokens to claim.
Must be an int.
get_active
Retrieve the currently active claim phase for a specific token ID, if any.
 active_phase =  contract.claim_conditions.get_active(
  "{{token_id}}",
)
Configuration
token_id (required)
The token ID of the NFT you want to get the claim conditions for.
Must be an int.
Return Value
If there is no active claim phase, returns undefined.
If a claim condition is active, returns a ClaimCondition object containing the following properties:
{
  maxClaimableSupply: string
  startTime: Date
  price: BigNumber
  currencyAddress: string
  maxClaimablePerWallet: string
  waitInSeconds: BigNumber
  merkleRootHash: string | number[]
  availableSupply: string
  currentMintSupply: string
  currencyMetadata: {
      symbol: string
      value: BigNumber
      name: string
      decimals: number
      displayValue: string
  }
  metadata?: {
      [x: string]: unknown
      name?: string | undefined
  } | undefined
  snapshot?: {
      price?: string | undefined
      currencyAddress?: string | undefined
      address: string
      maxClaimable: string
  }[] | null | undefined
}
create_batch
Lazy mint a new batch of NFTs into the smart contract.
By default, the NFT metadata is uploaded and pinned to IPFS before minting.
You can override this default behavior by providing a string that points to valid metadata instead of objects.
The metadata must conform to the metadata standards.
from thirdweb.types.nft import NFTMetadataInput, EditionMetadataInput
# Note that you can customize this metadata however you like
metadatas = [
    EditionMetadataInput(
        NFTMetadataInput.from_json({
            "name": "Cool NFT",
            "description": "This is a cool NFT",
            "image": open("path/to/file.jpg", "rb"),
        })
    ),
    EditionMetadataInput(
        NFTMetadataInput.from_json({
            "name": "Cooler NFT",
            "description": "This is a cooler NFT",
            "image": open("path/to/file.jpg", "rb"),
        })
    )
]
txs = contract.create_batch(metadata)
first_token_id = txs[0].id
first_nft = txs[0].data()
Alternatively, you can provide a string that points to valid metadata instead of objects.
metadata_one = EditionMetadataInput("ipfs://Qm...") # IPFS URI
metadata_two = EditionMetadataInput("https://my-nft-metadata.json") # Some other URL
txs = contract.create_batch([metadata_one, metadata_two])
Configuration
metadatas
Provide a list of either strings that point to valid metadata properties, or EditionMetadataInput objects that contain
NFTMetadataInput objects.
class NFTMetadataInput:
    name: str
    description: Optional[str] = None
    image: Optional[str] = None
    external_url: Optional[str] = None
    animation_url: Optional[str] = None
    background_color: Optional[str] = None
    properties: Optional[Dict[str, Any]] = None
    attributes: Optional[Dict[str, Any]] = None