> For the complete documentation index, see [llms.txt](https://docs.artinals.com/artinals-protocol/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.artinals.com/artinals-protocol/integration-and-workflows/typical-user-journeys/creating-a-collection-and-minting-tokens-art20.md).

# Creating a Collection and Minting Tokens (ART20)

**Workflow**:

1. **Initialize Module**: The creator deploys or uses the `init` entry function to set up ART20.
2. **Create Collection**: Call `mint_art20(...)` to define a new NFT collection with a name, description, URIs, and initial supply.
3. **Additional Minting**: If the max supply isn’t reached, call `mint_additional_art20(...)` to add more NFTs as the collection grows.
4. **Deny List (Optional)**: Set up a deny list via `initialize_deny_list(...)` if you need to restrict certain addresses.

**Result**: A collection of NFTs ready to be sold, traded, or further integrated with other modules.

**Example Script**:

```move
// Pseudocode: 
mint_art20(
  name: "Artinals Collection",
  description: "A fine selection of digital art.",
  initial_supply: 100,
  max_supply: 1000,
  uri: "...",
  logo_uri: "...",
  is_mutable: true,
  has_deny_list_authority: true,
  ...
);
```
