Artist Curated
Curated projects allow artists to pick their favourite outputs/artworks of their works and list them for sale. When browsing the project page before the sale starts, collectors will be able to preview all the outputs.
There are two main options for Artist Curated project:
1. Collector receives random artwork
Collector can browse all available artworks. After purchase collector receives a random artwork from the Artist Curated project set. The example UI is displayed below

2. Collector buys specific artwork from curated set
Collectors can browse all available artworks. In this case once the sale opens collector can choose to buy any available artwork from the curated set on first come first served basis. The example UI is displayed below

Additional details
- It is possible to have traits/features and specify name for each artwork. Traits will be visible on Verse/OpenSea. Example attachment of traits including "Color" and "Energy".
- It is possible to have more sales than unique artworks if allowing repetition.
- It is possible for Artist Curated project to be image/video or code.
- If the project consists of code (HTML/JavaScript), or each artwork has a video or another live version, put those files in an
artifacts/folder in the ZIP and pointanimation_urlat them. Verse uploads the folder to IPFS for you. See Live content withartifacts/.
Metadata CSV columns
When providing a metadata CSV for an Artist Curated project, the file must be named meta.csv. The following special columns are recognised by Verse:
| Column | Required | Description |
|---|---|---|
filename | Yes | The actual name of the file in the directory that the current row applies to. |
$custom_title | No | Title of the NFT. Overrides the default Artwork title #.. naming. |
$custom_description | No | Description of the NFT. Overrides the default Verse-generated description. |
$custom_token_id | No | The token id to use on-chain for this NFT. Each value must be unique across the CSV. |
animation_url | No | Dynamic content for the token, typically a link to an HTML page or video. Either a full URL (https://…, ipfs://…) or a path into the ZIP's artifacts/ folder, such as /artifacts/index.html?hash=1 (see below). |
$custom_metadata | No | Dangerous! A JSON string of custom metadata that will fully replace the Verse-generated metadata for this token. Use with care. |
Any other columns in the CSV will be treated as traits/features and surfaced as attributes on Verse and OpenSea.
Live content with artifacts/
When an artwork has a live version, such as an HTML/JavaScript piece, an interactive page or a video, bundle those files in an artifacts/ folder in the same ZIP as your images and meta.csv. In animation_url, refer to them with a path that starts with /artifacts/. You can reuse one page for many artworks by giving each row different query parameters, or point each row at its own file.
Download the example ZIP. It has eight artworks: four share one HTML page with different hash values, one uses a second interactive page, and three point to video loops.
interference.zip
├── meta.csv
├── interference-01.png
├── …
├── interference-08.png
└── artifacts/
├── index.html
├── conductor.html
├── interference.js
├── interference-06.mp4
├── interference-07.mp4
└── interference-08.mp4
An excerpt of its meta.csv, with some columns and rows left out:
filename,$custom_title,animation_url,Palette
interference-01.png,Interference I,/artifacts/index.html?hash=7,Tide
interference-02.png,Interference II,/artifacts/index.html?hash=1,Violet
interference-05.png,Interference V — Conductor,/artifacts/conductor.html?hash=4,Signal
interference-06.png,Interference VI — Loop,/artifacts/interference-06.mp4,Violet
Each row still needs its own image file (the filename column). That image is the artwork's preview, and the animation_url content is its live version.
What happens on upload
- Verse checks that every
/artifacts/...path inanimation_urlpoints to a file in theartifacts/folder. If one does not, the upload fails and lists the affected rows, and nothing is created. - Verse uploads the whole
artifacts/folder to IPFS as a single folder. - Verse replaces the
/artifactsprefix with the folder's IPFS address and keeps the rest as written. For example,/artifacts/index.html?hash=7becomesipfs://<CID>/index.html?hash=7. This is theanimation_urlstored on the artwork and in the token's metadata.
Values that do not start with /artifacts (for example https://… or ipfs://… links to content you host yourself) are kept unchanged.
Rules
- Location.
artifacts/must sit at the top level of the ZIP, next tometa.csv. If you zip a folder, it can sit inside that one top-level folder. The name must be exactlyartifacts, in lowercase. - Any files and folders. HTML, JavaScript, CSS, media, data files and nested folders are all allowed. Files in
artifacts/do not need their own rows inmeta.csv. - Paths. Paths are case-sensitive. A folder path such as
/artifacts/sketch/?hash=1openssketch/index.html. Query strings and#fragments are passed through as written. Write a space in a file name as%20. - Links inside your pages. Use relative links (
interference.js,./js/app.js) and not links that start with/(/js/app.js). Your files are served from an IPFS folder, not from the root of a website. - Hidden and system files. Hidden files and folders, such as
.data/, are uploaded too. Operating-system files (.DS_Store,__MACOSX/,._*) are ignored. - Limits.
artifacts/can hold up to 2,000 files and 512 MB uncompressed. The whole ZIP can be up to 10 GB, with no single file over 5 GB.
Everything in artifacts/ is published on public IPFS and cannot be withdrawn afterwards. Do not include private files such as source files you don't want to share, API keys or .git folders.
Reading parameters in your page
Your page receives the query string from animation_url unchanged, so it can read values such as hash itself:
const hash = new URLSearchParams(window.location.search).get("hash");
Examples of curated projects on Verse
- Take Root by Melissa Wiederrcht - Project of 10 artworks.
- Hypnagogic by rudxane - Project of 50 artworks.
- i.m.a.gen by Pablo Alpe - Project of 5 artworks.
Compatible sales mechanics
Details required
- Number of artworks
- (Optional) Number of artworks for sale (if selling with repetitions)
- (Optional) metadata CSV
- (Optional) probabilities (if selling with repetitions)