Media & Storage
Highlight handles media upload, processing, and storage for your collection assets. All media is stored centrally with optional decentralized backup to Arweave.
Supported media types
Section titled “Supported media types”| Type | Use case | Max size |
|---|---|---|
| Image | Token artwork, collection logos | 50 MB |
| Video | Animated token artwork | 500 MB |
| Audio | Audio-based tokens | 250 MB |
| Archive | Series assets, generative code | 1 GB |
| Metadata | Token metadata JSON | 1 MB |
Upload flow
Section titled “Upload flow”- Create an upload session — Provide
fileName,mimeType, andfileSizeto get a signed upload URL - Upload your file — Send the file to the signed URL via PUT
- Poll for readiness — Check
media.statusuntil it reachesReady
The media type (Image, Video, Audio, Archive, Metadata) is inferred from the mimeType and fileName. The platform validates file size against the type limits above.
Media status lifecycle
Section titled “Media status lifecycle”Every media asset has an explicit status:
- Pending — Upload session created, waiting for bytes
- Processing — Upload received, extraction in progress (archives only)
- Ready — Fully available for use
- Failed — Processing failed (retryable via
POST /media/:id/retry)
For non-archive types, status goes directly from Pending to Ready on upload. For archives, the extraction step runs automatically and the asset transitions through Processing to Ready.
Arweave backup
Section titled “Arweave backup”For permanent decentralized storage, you can sync media to Arweave:
- Pending — Sync has been requested
- Succeeded — File is stored on Arweave with a permanent URI
- Failed — Sync encountered an error
Arweave backup is optional but recommended for long-term preservation of token assets.
Archives
Section titled “Archives”Archives (zip files) are used for:
- Series collections — Bundle all token images and metadata in a single zip
- Generative collections — Package your generative code (HTML, JS, CSS, assets)
Uploaded zips are automatically extracted. The original zip is deleted after successful extraction. The media entity includes an archive field with the manifest of extracted files, each with a relative key, size, and mimeType.
Related
Section titled “Related”- Generative Art — Code upload for generative collections
- Creating a Collection — Media upload during creation
- Media API — API reference