---
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}`

## Request

- Base URL: `https://staging.crossmint.com/api`
- URL: `https://staging.crossmint.com/api/2022-06-09/collections/{collectionId}/nfts/{id}`
- Auth: none required
- TypeScript: <https://skmtc.dev/crossmint/apis/onramp/docs/2022-06-09/collections/:collectionId/nfts/:id/put.ts> (a function with typed inputs; its response is checked against the schema)

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.dev/crossmint/apis/onramp.md) - [All operations](https://skmtc.dev/crossmint/apis/onramp/llms.txt) - [OpenAPI document](https://skmtc.dev/crossmint/apis/onramp/revisions/e2143d192130?raw)
