Version Overview
Each version represents a specific release of your project with:- One or more downloadable files
- Version metadata (number, changelog, etc.)
- Loader and game compatibility information
- Dependencies and relationships to other projects
- Release channel (release, beta, alpha)
Creating a New Version
ID or slug of the project to add the version toYou must have
UPLOAD_VERSION permission on the project.Unique version identifier (1-32 characters, URL-safe)Common formats:
- Semantic versioning:
1.0.0,2.1.3 - With build metadata:
1.0.0+fabric - With pre-release:
1.0.0-beta.1
Display name for this version (1-64 characters)Examples:
- “Initial Release”
- “Bug Fix Update”
- “Christmas Update 2024”
Changelog in Markdown (up to 65,536 characters)Describe what’s new, changed, or fixed in this version.Example:
Release typeOptions:
release- Stable releasebeta- Beta/preview releasealpha- Early alpha/experimental release
Mod loaders this version supports (at least 1 required)Common loaders:
fabric- Fabric mod loaderforge- Forge mod loaderquilt- Quilt mod loaderneoforge- NeoForge mod loaderpaper- Paper server platformspigot- Spigot server platformbungeecord- BungeeCord proxyvelocity- Velocity proxy
Loader-specific fields (flattened in JSON)Each loader has required fields, typically:Get available versions for a loader:Other common fields:
game_versions (required for most loaders)
Array of game versions this supports:singleplayer- Singleplayer compatibility (boolean)client_and_server- Client and server mode (string)client_only- Client-only mod (boolean)server_only- Server-only mod (boolean)
Missing required loader fields will cause validation errors. Each loader may have different required fields.
Multipart field names for files to uploadEach entry corresponds to a file field in the multipart request.Example:
.jar, .zip, .mrpack, and other project-specific formatsField name of the primary/main fileThe primary file is:
- Downloaded by default
- Shown prominently in the UI
- Used by modpack launchers
Optional file type overridesSpecify types for each file:Types:
required-resource-packoptional-resource-pack- No type specified = automatic detection
If a file fails validation but you believe it’s safe, warnings can be overridden by not marking it as primary. Only primary files with warnings will block the upload.
Project dependencies (up to 4,096 dependencies)Each dependency specifies:Dependency types:
required- Must be installedoptional- Recommended but not requiredincompatible- Known conflictembedded- Included in the file (auto-detected for modpacks)
For modpacks, dependencies are automatically extracted from pack files. Manually specified dependencies override auto-detection.
Version Status
Requested version statusOptions:
listed- Visible and downloadable (default)archived- Hidden from main view, still accessibledraft- Not publicly visible
Feature this versionFeatured versions appear prominently on the project page. Only one version can be featured at a time.
Display order relative to other versionsLower numbers appear first. If not specified, versions are ordered by publish date.
API Example: Creating a Version
Updating Versions
You can update version metadata after creation:version_title- Display nameversion_body- Changelogstatus- Version statusfeatured- Featured statusordering- Display orderloaders- Supported loaders (requires re-validation)- Loader fields (game versions, etc.)
Adding Files to Existing Versions
Add additional files to a version:data- JSON with optionalfile_typesmap- File fields - The actual files to upload
Version Channels
Use release channels to manage different release tracks:Release
Stable, production-ready versions:- Recommended for most users
- Should be well-tested
- Default channel for downloads
Beta
Preview versions for testing:- May have known issues
- Users opt-in to beta versions
- Good for gathering feedback
Alpha
Experimental early versions:- Potentially unstable
- For brave testers only
- May have breaking changes
Users can filter by channel when browsing versions. Consider using semantic versioning with pre-release tags (e.g.,
1.0.0-beta.1).Deleting Versions
Versions can be deleted if:- You have
DELETE_VERSIONpermission - The version is not the only version of the project
Notifications
When you publish a new version:- All project followers receive a notification
- Notifications include project and version IDs
- Users can customize their notification preferences
Best Practices
- Use semantic versioning - Makes it clear what type of changes are included
- Write detailed changelogs - Help users understand what’s new
- Test before release - Use beta/alpha channels for untested changes
- Mark dependencies - Help users install required mods
- Support multiple versions - Release for current and recent game versions
- Feature important versions - Highlight your recommended version
- Archive old versions - Clean up very outdated releases
Troubleshooting
Common issues: File already exists- The file hash matches an existing file in another project
- This prevents duplicate uploads across Modrinth
- Required field missing for selected loader
- Check required fields:
GET /v3/tag/loader
- File format is invalid or corrupted
- File contains detected security issues
- Contact moderators if you believe this is incorrect
- You don’t have
UPLOAD_VERSIONpermission - Ask a project owner to grant you permissions
