# 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="/files/5VOumEeYzo6vix8OgUmG" 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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.vorj.app/welcome-to-vorj/nft-creation-flows.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
