# NFT Creation Flows

### Dynamic Table Flow

This flow is the default approach and provides a dynamic user interface allowing a user to create up to 5 attributes of metadata. The user can provide a collection `description` and add up to a maximum of 5 attributes across all of the media items. This creation flow is limited to collections that are less than or equal to 20 pieces of media.

<figure><img src="https://2967175415-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsLpXzdKuKJ1bo7LINjrH%2Fuploads%2FkESbOfJe84byftnuxMBR%2FScreenshot%202023-06-21%20at%2021.46.58.png?alt=media&#x26;token=36584952-1193-4628-bfeb-94b957b764e3" alt=""><figcaption><p>Example of the dynamic flow.</p></figcaption></figure>

### Metadata Only Flow

This flow is enabled by uploading a valid metadata json object, see example metadata json object below. There is a required set of fields for the metadata json object to be considered valid.

The following keys are required:

* `tokenId:` The unique tokenId for the media item.
* `name:` The name of the media item.
* `description:` The description of the media item.

{% hint style="warning" %}
`edition` is an optional field and if present will supersede the `tokenId.`
{% endhint %}

{% hint style="warning" %}
Valid values for both `tokenId` and `edition` are values that are greater than 0.
{% endhint %}

```markup
[  
  {
    "tokenId": "1",
    "data": {
      "name": "TokenId 1 Name",
      "description": "TokenId 1 Description",
      "edition": "1",
      "attributes": [
        {
          "trait_type": "Trait Type 1 Name",
          "value": "Trait Type 1 Value"
        },
        {
          "trait_type": "Trait Type 2 Name",
          "value": "Trait Type 2 Value"
        }
      ]
    }
  },
  {
    "tokenId": "2",
    "data": {
      "name": "TokenId 2 Name",
      "description": "TokenId 2 Description",
      "edition": "2",
      "attributes": [
        {
          "trait_type": "Trait Type 1 Name",
          "value": "Trait Type 1 Value"
        },
        {
          "trait_type": "Trait Type 2 Name",
          "value": "Trait Type 2 Value"
        }
      ]
    }
  }
]
```

### Media and Metadata Flow

This flow is activated when a user opts into providing a metadata json object as an alternative to using the dynamic table flow. The user must upload a metadata object, following the same requirements and outline as above.
