---
title: "Mint NFT with ID"
method: PUT
path: "/2022-06-09/collections/{collectionId}/nfts/{id}"
tags: ["NFTs"]
---

# Mint NFT with ID

`PUT /2022-06-09/collections/{collectionId}/nfts/{id}`

This pathway allows you to mint NFTs and guarantee idempotency
to ensure you never double mint for the same NFT. 

**API scope required**: `nfts.create`

## Path parameters

- `collectionId` string, required
- `id` string, required

## Request body

- object
  - `metadata` union, required — Optional if [baseURI](/api-reference/minting/collection/set-base-uri) is set.
    - NFTMetadata
      - `name` string, required — The name of your NFT (Max length: 32)
      - `image` string, required — Direct link to your NFT image
      - `description` string, required — A brief description of the NFT (Max length: 64)
      - `animation_url` string — **EVM only** [See more info here](/minting/nfts/integrate/define-metadata)
      - `attributes` object[] — Add attributes to your NFT
        - `display_type` 'boost_number' | 'boost_percentage' | 'number' — Display name of your attribute
        - `trait_type` string, required — The name of the trait
        - `value` string, required — The value of the trait
    - string — Enter a URL to a JSON file containing the metadata contents
    - NFTMetadataSolana
      - `name` string, required — The name of your NFT (Max length: 32)
      - `image` string, required — Direct link to your NFT image
      - `description` string, required — A brief description of the NFT (Max length: 64)
      - `symbol` string — **Solana only** A shorthand identifier for the token (Max length: 10)
      - `attributes` object[] — Add attributes to your NFT
        - `display_type` 'boost_number' | 'boost_percentage' | 'number' — Display name of your attribute
        - `trait_type` string, required — The name of the trait
        - `value` string, required — The value of the trait
    - object — Enter a URL to a JSON file containing the metadata contents
      - `uri` string, required — Enter a URL to a JSON file containing the metadata contents
      - `name` string, required — The name of your NFT (Max length: 32)
  - `recipient` string, required — Allowed formats: `<chain>:<address>` or `email:<email_address>:<chain>` or `userId:<userId>:<chain>` or `twitter:<twitter_handle>:<chain>` [see here for more info](/minting/nfts/integrate/manage-delivery)
  - `sendNotification` boolean — Notify recipient via email notification about successful mint [Default: true]. For legacy projects created before Sep 16, 2024, this is set to false by default.
  - `locale` string — Specify the locale for the email content [Default: en-US]
  - `reuploadLinkedFiles` boolean — Any URLs in the metadata object will be resolved and reuploaded to IPFS [Default: true]
  - `compressed` boolean — **Solana only** Use NFT compression for cheaper mint costs [Default: true]

## Response `200`

The request has been accepted.

- union
  - MintResponseSolana200
    - `id` string
    - `onChain` object
      - `status` string
      - `chain` string
    - `actionId` string
  - MintResponseSolana200Subsequent
    - `id` string
    - `metadata` object
      - `name` string
      - `symbol` string
      - `seller_fee_basis_points` integer
      - `properties` object
        - `files` object[]
          - `uri` string
          - `type` string
        - `category` string
        - `creators` object[]
          - `address` string
          - `verified` boolean
          - `share` integer
      - `description` string
      - `image` string
      - `attributes` object[]
        - `trait_type` string
        - `value` string
    - `onChain` object
      - `status` string
      - `mintHash` string
      - `txId` string
      - `owner` string
      - `chain` string
    - `actionId` string — actionId for the request
  - MintResponseEVM200
    - `id` string
    - `onChain` object
      - `status` string
      - `chain` string
      - `contractAddress` string
      - `subscription` object
        - `expiresAt` string, date-time — The date and time when the subscription expires
    - `actionId` string
  - MintResponseEVM200Subsequent
    - `id` string
    - `metadata` object
      - `name` string
      - `image` string
      - `description` string
    - `onChain` object
      - `status` string
      - `tokenId` string
      - `owner` string
      - `txId` string
      - `contractAddress` string
      - `chain` string
      - `subscription` object
        - `expiresAt` string, date-time — The date and time when the subscription expires
    - `actionId` string — actionId for the request

## Other responses

- `400` — Invalid arguments, please make sure you're following the api specification.
- `403` — Forbidden error, please ensure the credentials are correct.
- `404` — Not found error.
- `503` — Please try again in a few minutes. If the issue still persists, contact Crossmint support.

---

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