---
title: "Create NFTs"
method: POST
path: "/v2/projects/{projectId}/nfts/batch"
tags: ["Projects"]
---

# Create NFTs

`POST /v2/projects/{projectId}/nfts/batch`

This endpoint allows you to create a batch of NFTs.

## Path parameters

- `projectId` integer, required

## Request body

- object
  - `name` string, required — Name stored as on-chain metadata
  - `symbol` string — Symbol stored as on-chain metadata
  - `description` string — Description stored in the metadata
  - `image` string, required — Image for your NFT. When creating an NFT, this can be a base64 encoded string or a URL pointing to an image.
  - `animationUrl` string — URL pointing to the asset's animation.
  - `externalUrl` string — URL pointing to an external URL defining the asset
  - `attributes` object — Key-value pairs of your NFT attributes
  - `receiver` object
    - `address` string — Address that will receive the NFT
    - `namespace` string — Namespace of the application (e.g. solarplex, superteam)
    - `identifier` string — Identifier for the user's Passport (i.e. email, wallet address, twitter handle)
  - `receiverAddress` string — Base-58 encoded string representing an on-chain address
  - `delegated` boolean — If true, your Project will have delegated authority to transfer or burn the asset
  - `batch` object[], required
    - `name` string — Name stored as on-chain metadata
    - `symbol` string — Symbol stored as on-chain metadata
    - `description` string — Description stored in the metadata
    - `image` string — Image for your NFT. When creating an NFT, this can be a base64 encoded string or a URL pointing to an image.
    - `animationUrl` string — URL pointing to the asset's animation.
    - `externalUrl` string — URL pointing to an external URL defining the asset
    - `attributes` object — Key-value pairs of your NFT attributes
    - `receiver` object
      - `address` string — Address that will receive the NFT
      - `namespace` string — Namespace of the application (e.g. solarplex, superteam)
      - `identifier` string — Identifier for the user's Passport (i.e. email, wallet address, twitter handle)
    - `receiverAddress` string — Base-58 encoded string representing an on-chain address
    - `delegated` boolean — If true, your Project will have delegated authority to transfer or burn the asset

## Response `202`

Successful response

- object[]
  - `transactionId` string, required — Transaction ID that identifies the Transaction generated by an API request
  - `nftId` number, required — Unique ID for an NFT in a Project
  - `projectId` number — The ID of the Project the NFT is part of
  - `transferable` boolean — Whether or not the NFT can be transferred based on the Project its a part of
  - `compressed` boolean — Whether or not the NFTs in the Project are compressed

## Other responses

- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found

---

[API](https://skmtc.net/underdogprotocol/apis/underdog-protocol-api.md) · [All operations](https://skmtc.net/underdogprotocol/apis/underdog-protocol-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/underdogprotocol/underdog-protocol-api/versions/714574b82cc5/schema)
