Query structured spec data via REST or MCP. Get exactly what your agent needs.
https://api.modrinth.com/v2
https://staging-api.modrinth.com/v2
/statistics
Expected response to a valid request
GET /statistics
/updates/{id|slug}/forge_updates.json
If you’re a Forge mod developer, your Modrinth mods have an automatically generated updates.json using the
Forge Update Checker.
The only setup is to insert the URL into the [[mods]] section of your mods.toml file as such:
[[mods]]
# the other stuff here - ID, version, display name, etc.
updateJSONURL = "https://api.modrinth.com/updates/{slug|ID}/forge_updates.json"
Replace {slug|id} with the slug or ID of your project.
Modrinth will handle the rest! When you update your mod, Forge will notify your users that their copy of your mod is out of date.
Make sure that the version format you use for your Modrinth releases is the same as the version format you use in your mods.toml.
If you use a format such as 1.2.3-forge or 1.2.3+1.19 with your Modrinth releases but your mods.toml only has 1.2.3,
the update checker may not function properly.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id|slug | path | optional | string | The ID or slug of the project |
Expected response to a valid request
Invalid request
GET /updates/{id|slug}/forge_updates.json
/notifications
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| ids | query | required | string | The IDs of the notifications |
Expected response to a valid request
Incorrect token scopes or no authorization to access the requested item(s)
The requested item(s) were not found or no authorization to access the requested item(s)
GET /notifications
/notification/{id}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | optional | string | The ID of the notification |
Expected response to a valid request
Incorrect token scopes or no authorization to access the requested item(s)
The requested item(s) were not found or no authorization to access the requested item(s)
GET /notification/{id}
/user/{id|username}/notifications
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id|username | path | optional | string | The ID or username of the user |
Expected response to a valid request
Incorrect token scopes or no authorization to access the requested item(s)
The requested item(s) were not found or no authorization to access the requested item(s)
GET /user/{id|username}/notifications
/projects
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| ids | query | optional | string | The IDs and/or slugs of the projects |
Expected response to a valid request
GET /projects
/project/{id|slug}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id|slug | path | optional | string | The ID or slug of the project |
Expected response to a valid request
The requested item(s) were not found or no authorization to access the requested item(s)
GET /project/{id|slug}
/project/{id|slug}/check
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id|slug | path | optional | string | The ID or slug of the project |
Expected response to a valid request
The requested item(s) were not found or no authorization to access the requested item(s)
GET /project/{id|slug}/check
/project/{id|slug}/dependencies
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id|slug | path | optional | string | The ID or slug of the project |
Expected response to a valid request
The requested item(s) were not found or no authorization to access the requested item(s)
GET /project/{id|slug}/dependencies
/projects_random
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| count | query | required | integer | The number of random projects to return |
Expected response to a valid request
Request was invalid, see given error
GET /projects_random
/search
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| query | query | optional | string | The query to search for |
| facets | query | optional | string | Facets are an essential concept for understanding how to filter out results. These are the most commonly used facet types:
Several others are also available for use, though these should not be used outside very specific use cases.
In order to then use these facets, you need a value to filter by, as well as an operation to perform on this value.
Examples:
You then join these strings together in arrays to signal ORAll elements in a single array are considered to be joined by OR statements. ANDSeparate arrays are considered to be joined by AND statements. |
| index | query | optional | string | The sorting method used for sorting search results |
| offset | query | optional | integer | The offset into the search. Skips this number of results |
| limit | query | optional | integer | The number of results returned by the search |
Expected response to a valid request
Request was invalid, see given error
GET /search
/tag/category
Gets an array of categories, their icons, and applicable project types
Expected response to a valid request
GET /tag/category
/tag/donation_platform
Gets an array of donation platforms and information about them
Expected response to a valid request
GET /tag/donation_platform
/tag/game_version
Gets an array of game versions and information about them
Expected response to a valid request
GET /tag/game_version
/tag/license/{id}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The license ID to get the text of |
Expected response to a valid request
Request was invalid, see given error
GET /tag/license/{id}
/tag/loader
Gets an array of loaders, their icons, and supported project types
Expected response to a valid request
GET /tag/loader
/tag/project_type
Gets an array of valid project types
Expected response to a valid request
GET /tag/project_type
/tag/report_type
Gets an array of valid report types
Expected response to a valid request
GET /tag/report_type
/tag/side_type
Gets an array of valid side types
Expected response to a valid request
GET /tag/side_type
/teams
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| ids | query | required | string | The IDs of the teams |
Expected response to a valid request
GET /teams
/project/{id|slug}/members
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id|slug | path | optional | string | The ID or slug of the project |
Expected response to a valid request
The requested item(s) were not found or no authorization to access the requested item(s)
GET /project/{id|slug}/members
/team/{id}/members
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | optional | string | The ID of the team |
Expected response to a valid request
GET /team/{id}/members
/threads
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| ids | query | required | string | The IDs of the threads |
Expected response to a valid request
The requested item(s) were not found or no authorization to access the requested item(s)
GET /threads
/report
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| count | query | optional | integer | — |
Expected response to a valid request
Incorrect token scopes or no authorization to access the requested item(s)
The requested item(s) were not found or no authorization to access the requested item(s)
GET /report
/report/{id}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | optional | string | The ID of the report |
Expected response to a valid request
Incorrect token scopes or no authorization to access the requested item(s)
The requested item(s) were not found or no authorization to access the requested item(s)
GET /report/{id}
/reports
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| ids | query | required | string | The IDs of the reports |
Expected response to a valid request
Incorrect token scopes or no authorization to access the requested item(s)
The requested item(s) were not found or no authorization to access the requested item(s)
GET /reports
/thread/{id}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | optional | string | The ID of the thread |
Expected response to a valid request
The requested item(s) were not found or no authorization to access the requested item(s)
GET /thread/{id}
/users
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| ids | query | required | string | The IDs of the users |
Expected response to a valid request
GET /users
/user
Expected response to a valid request
Incorrect token scopes or no authorization to access the requested item(s)
GET /user
/user/{id|username}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id|username | path | optional | string | The ID or username of the user |
Expected response to a valid request
The requested item(s) were not found or no authorization to access the requested item(s)
GET /user/{id|username}
/user/{id|username}/follows
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id|username | path | optional | string | The ID or username of the user |
Expected response to a valid request
Incorrect token scopes or no authorization to access the requested item(s)
The requested item(s) were not found or no authorization to access the requested item(s)
GET /user/{id|username}/follows
/user/{id|username}/payouts
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id|username | path | optional | string | The ID or username of the user |
Expected response to a valid request
Incorrect token scopes or no authorization to access the requested item(s)
The requested item(s) were not found or no authorization to access the requested item(s)
GET /user/{id|username}/payouts
/user/{id|username}/projects
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id|username | path | optional | string | The ID or username of the user |
Expected response to a valid request
The requested item(s) were not found or no authorization to access the requested item(s)
GET /user/{id|username}/projects
/version_file/{hash}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| hash | path | optional | string | The hash of the file, considering its byte content, and encoded in hexadecimal |
| algorithm | query | optional | string | The algorithm of the hash |
| multiple | query | optional | boolean | Whether to return multiple results when looking for this hash |
Expected response to a valid request
The requested item(s) were not found or no authorization to access the requested item(s)
GET /version_file/{hash}
/versions
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| ids | query | required | string | The IDs of the versions |
Expected response to a valid request
GET /versions
/project/{id|slug}/version
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id|slug | path | optional | string | The ID or slug of the project |
| loaders | query | optional | string | The types of loaders to filter for |
| game_versions | query | optional | string | The game versions to filter for |
| featured | query | optional | boolean | Allows to filter for featured or non-featured versions only |
Expected response to a valid request
The requested item(s) were not found or no authorization to access the requested item(s)
GET /project/{id|slug}/version
/project/{id|slug}/version/{id|number}
Please note that, if the version number provided matches multiple versions, only the oldest matching version will be returned.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id|slug | path | optional | string | The ID or slug of the project |
| id|number | path | required | string | The version ID or version number |
Expected response to a valid request
The requested item(s) were not found or no authorization to access the requested item(s)
GET /project/{id|slug}/version/{id|number}
/version/{id}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | optional | string | The ID of the version |
Expected response to a valid request
The requested item(s) were not found or no authorization to access the requested item(s)
GET /version/{id}
AuthError
{
"type": "object",
"required": [
"error",
"description"
],
"properties": {
"error": {
"type": "string",
"example": "unauthorized",
"description": "The name of the error"
},
"description": {
"type": "string",
"example": "Authentication Error: Invalid Authentication Credentials",
"description": "The contents of the error"
}
}
}
BaseProject
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"example": "my_project",
"description": "The slug of a project, used for vanity URLs. Regex: ```^[\\w!@$()`.+,\"\\-']{3,64}$```"
},
"title": {
"type": "string",
"example": "My Project",
"description": "The title or name of the project"
},
"categories": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"technology",
"adventure",
"fabric"
],
"description": "A list of the categories that the project has"
},
"client_side": {
"enum": [
"required",
"optional",
"unsupported"
],
"type": "string",
"example": "required",
"description": "The client side support of the project"
},
"description": {
"type": "string",
"example": "A short description",
"description": "A short description of the project"
},
"server_side": {
"enum": [
"required",
"optional",
"unsupported"
],
"type": "string",
"example": "optional",
"description": "The server side support of the project"
}
}
}
BaseVersion
{
"type": "object",
"properties": {
"name": {
"type": "string",
"example": "Version 1.0.0",
"description": "The name of this version"
},
"status": {
"enum": [
"listed",
"archived",
"draft",
"unlisted",
"scheduled",
"unknown"
],
"type": "string",
"example": "listed"
},
"loaders": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"fabric",
"forge"
],
"description": "The mod loaders that this version supports"
},
"featured": {
"type": "boolean",
"example": true,
"description": "Whether the version is featured or not"
},
"changelog": {
"type": "string",
"example": "List of changes in this version: ...",
"nullable": true,
"description": "The changelog for this version"
},
"dependencies": {
"type": "array",
"items": {
"$ref": "#/components/schemas/VersionDependency"
},
"description": "A list of specific versions of projects that this version depends on"
},
"version_type": {
"enum": [
"release",
"beta",
"alpha"
],
"type": "string",
"example": "release",
"description": "The release channel for this version"
},
"game_versions": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"1.16.5",
"1.17.1"
],
"description": "A list of versions of Minecraft that this version supports"
},
"version_number": {
"type": "string",
"example": "1.0.0",
"description": "The version number. Ideally will follow semantic versioning"
},
"requested_status": {
"enum": [
"listed",
"archived",
"draft",
"unlisted"
],
"type": "string",
"nullable": true
}
}
}
CategoryTag
{
"type": "object",
"required": [
"icon",
"name",
"project_type",
"header"
],
"properties": {
"icon": {
"type": "string",
"example": "<svg></svg>",
"description": "The SVG icon of a category"
},
"name": {
"type": "string",
"example": "adventure",
"description": "The name of the category"
},
"header": {
"type": "string",
"example": "resolutions",
"description": "The header under which the category should go"
},
"project_type": {
"type": "string",
"example": "mod",
"description": "The project type this category is applicable to"
}
}
}
CreatableProject
{
"allOf": [
{
"$ref": "#/components/schemas/ModifiableProject"
},
{
"type": "object",
"required": [
"project_type",
"slug",
"title",
"description",
"body",
"categories",
"client_side",
"server_side",
"license_id"
],
"properties": {
"is_draft": {
"type": "boolean",
"example": true,
"deprecated": true,
"description": "Whether the project should be saved as a draft instead of being sent to moderation for review. Deprecated - please always mark this as true."
},
"project_type": {
"enum": [
"mod",
"modpack"
],
"type": "string",
"example": "modpack"
},
"gallery_items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CreatableProjectGalleryItem"
},
"deprecated": true,
"description": "Gallery images to be uploaded with the created project. Deprecated - please upload gallery images after initial upload."
},
"initial_versions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/EditableVersion"
},
"deprecated": true,
"description": "A list of initial versions to upload with the created project. Deprecated - please upload version files after initial upload."
}
}
}
]
}
CreatableProjectGalleryItem
{
"type": "object",
"nullable": true,
"properties": {
"item": {
"type": "string",
"description": "The name of the multipart item where the gallery media is located"
},
"title": {
"type": "string",
"example": "My awesome screenshot!",
"nullable": true,
"description": "The title of the gallery image"
},
"featured": {
"type": "boolean",
"example": true,
"description": "Whether the image is featured in the gallery"
},
"ordering": {
"type": "integer",
"example": 0,
"description": "The order of the gallery image. Gallery images are sorted by this field and then alphabetically by title."
},
"description": {
"type": "string",
"example": "This awesome screenshot shows all of the blocks in my mod!",
"nullable": true,
"description": "The description of the gallery image"
}
}
}
CreatableReport
{
"type": "object",
"required": [
"report_type",
"item_id",
"item_type",
"body"
],
"properties": {
"body": {
"type": "string",
"example": "This is a reupload of my mod, AABBCCDD!",
"description": "The extended explanation of the report"
},
"item_id": {
"type": "string",
"example": "EEFFGGHH",
"description": "The ID of the item (project, version, or user) being reported"
},
"item_type": {
"enum": [
"project",
"user",
"version"
],
"type": "string",
"example": "project",
"description": "The type of the item being reported"
},
"report_type": {
"type": "string",
"example": "copyright",
"description": "The type of the report being sent"
}
}
}
CreatableVersion
{
"allOf": [
{
"$ref": "#/components/schemas/BaseVersion"
},
{
"type": "object",
"required": [
"file_parts",
"project_id",
"name",
"version_number",
"game_versions",
"version_type",
"loaders",
"featured",
"dependencies"
],
"properties": {
"file_parts": {
"type": "array",
"items": {
"type": "string"
},
"description": "An array of the multipart field names of each file that goes with this version"
},
"project_id": {
"type": "string",
"example": "AABBCCDD",
"description": "The ID of the project this version is for"
},
"primary_file": {
"type": "string",
"description": "The multipart field name of the primary file"
}
}
}
]
}
CreateProjectBody
{
"type": "object",
"required": [
"data"
],
"properties": {
"data": {
"$ref": "#/components/schemas/CreatableProject"
},
"icon": {
"enum": [
"*.png",
"*.jpg",
"*.jpeg",
"*.bmp",
"*.gif",
"*.webp",
"*.svg",
"*.svgz",
"*.rgb"
],
"type": "string",
"format": "binary",
"description": "Project icon file"
}
}
}
CreateVersionBody
{
"type": "object",
"required": [
"data"
],
"properties": {
"data": {
"$ref": "#/components/schemas/CreatableVersion"
}
}
}
DonationPlatformTag
{
"type": "object",
"required": [
"short",
"name"
],
"properties": {
"name": {
"type": "string",
"example": "Buy Me a Coffee",
"description": "The full name of the donation platform"
},
"short": {
"type": "string",
"example": "bmac",
"description": "The short identifier of the donation platform"
}
}
}
EditableFileType
{
"type": "object",
"required": [
"algorithm",
"hash",
"file_type"
],
"properties": {
"hash": {
"type": "string",
"example": "aaaabbbbccccddddeeeeffffgggghhhhiiiijjjj",
"description": "The hash of the file you're editing"
},
"algorithm": {
"type": "string",
"example": "sha1",
"description": "The hash algorithm of the hash specified in the hash field"
},
"file_type": {
"enum": [
"required-resource-pack",
"optional-resource-pack"
],
"type": "string",
"example": "required-resource-pack",
"nullable": true,
"description": "The hash algorithm of the file you're editing"
}
}
}
EditableProject
{
"allOf": [
{
"$ref": "#/components/schemas/ModifiableProject"
},
{
"type": "object",
"properties": {
"moderation_message": {
"type": "string",
"nullable": true,
"description": "The title of the moderators' message for the project"
},
"moderation_message_body": {
"type": "string",
"nullable": true,
"description": "The body of the moderators' message for the project"
}
}
}
]
}
EditableUser
{
"type": "object",
"required": [
"username"
],
"properties": {
"bio": {
"type": "string",
"example": "My short biography",
"description": "A description of the user"
},
"name": {
"type": "string",
"example": "My User",
"nullable": true,
"description": "The user's display name"
},
"email": {
"type": "string",
"format": "email",
"nullable": true,
"description": "The user's email (only displayed if requesting your own account). Requires `USER_READ_EMAIL` PAT scope."
},
"username": {
"type": "string",
"example": "my_user",
"description": "The user's username"
},
"payout_data": {
"$ref": "#/components/schemas/UserPayoutData"
}
}
}
EditableVersion
{
"allOf": [
{
"$ref": "#/components/schemas/BaseVersion"
},
{
"type": "object",
"properties": {
"file_types": {
"type": "array",
"items": {
"$ref": "#/components/schemas/EditableFileType"
},
"description": "A list of file_types to edit"
},
"primary_file": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"sha1",
"aaaabbbbccccddddeeeeffffgggghhhhiiiijjjj"
],
"description": "The hash format and the hash of the new primary file"
}
}
}
]
}
ForgeUpdateCheckerPromos
{
"type": "object",
"properties": {
"{version}-latest": {
"type": "string",
"description": "The latest mod version for `{version}`. Shows versions with the `alpha` and `beta` version types."
},
"{version}-recommended": {
"type": "string",
"description": "The mod version that is recommended for `{version}`. Excludes versions with the `alpha` and `beta` version types."
}
},
"description": "A list of the recommended and latest versions for each Minecraft release"
}
ForgeUpdates
{
"type": "object",
"properties": {
"promos": {
"$ref": "#/components/schemas/ForgeUpdateCheckerPromos"
},
"homepage": {
"type": "string",
"example": "https://modrinth.com",
"description": "A link to the mod page"
}
},
"description": "Mod version information that can be consumed by Forge's update checker"
}
GalleryImage
{
"type": "object",
"nullable": true,
"required": [
"url",
"featured",
"created"
],
"properties": {
"url": {
"type": "string",
"example": "https://cdn.modrinth.com/data/AABBCCDD/images/009b7d8d6e8bf04968a29421117c59b3efe2351a.png",
"description": "The URL of the gallery image"
},
"title": {
"type": "string",
"example": "My awesome screenshot!",
"nullable": true,
"description": "The title of the gallery image"
},
"created": {
"type": "string",
"format": "ISO-8601",
"description": "The date and time the gallery image was created"
},
"featured": {
"type": "boolean",
"example": true,
"description": "Whether the image is featured in the gallery"
},
"ordering": {
"type": "integer",
"example": 0,
"description": "The order of the gallery image. Gallery images are sorted by this field and then alphabetically by title."
},
"description": {
"type": "string",
"example": "This awesome screenshot shows all of the blocks in my mod!",
"nullable": true,
"description": "The description of the gallery image"
}
}
}
GameVersionTag
{
"type": "object",
"required": [
"version",
"version_type",
"date",
"major"
],
"properties": {
"date": {
"type": "string",
"format": "ISO-8601",
"description": "The date of the game version release"
},
"major": {
"type": "boolean",
"example": true,
"description": "Whether or not this is a major version, used for Featured Versions"
},
"version": {
"type": "string",
"example": "1.18.1",
"description": "The name/number of the game version"
},
"version_type": {
"enum": [
"release",
"snapshot",
"alpha",
"beta"
],
"type": "string",
"example": "release",
"description": "The type of the game version"
}
}
}
GetLatestVersionFromHashBody
{
"type": "object",
"required": [
"loaders",
"game_versions"
],
"properties": {
"loaders": {
"type": "array",
"items": {
"type": "string",
"example": [
"fabric"
]
}
},
"game_versions": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"1.18",
"1.18.1"
]
}
}
}
GetLatestVersionsFromHashesBody
{
"allOf": [
{
"$ref": "#/components/schemas/HashList"
},
{
"type": "object",
"required": [
"loaders",
"game_versions"
],
"properties": {
"loaders": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"fabric"
]
},
"game_versions": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"1.18",
"1.18.1"
]
}
}
}
]
}
HashList
{
"type": "object",
"required": [
"hashes",
"algorithm"
],
"properties": {
"hashes": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"ea0f38408102e4d2efd53c2cc11b88b711996b48d8922f76ea6abf731219c5bd1efe39ddf9cce77c54d49a62ff10fb685c00d2e4c524ab99d20f6296677ab2c4",
"925a5c4899affa4098d997dfa4a4cb52c636d539e94bc489d1fa034218cb96819a70eb8b01647a39316a59fcfe223c1a8c05ed2e2ae5f4c1e75fa48f6af1c960"
]
},
"algorithm": {
"enum": [
"sha1",
"sha512"
],
"type": "string",
"example": "sha512"
}
},
"description": "A list of hashes and the algorithm used to create them"
}
HashVersionMap
{
"type": "object",
"description": "A map from hashes to versions",
"additionalProperties": {
"$ref": "#/components/schemas/Version"
}
}
InvalidInputError
{
"type": "object",
"required": [
"error",
"description"
],
"properties": {
"error": {
"type": "string",
"example": "invalid_input",
"description": "The name of the error"
},
"description": {
"type": "string",
"example": "Error while parsing multipart payload",
"description": "The contents of the error"
}
}
}
License
{
"type": "object",
"properties": {
"body": {
"type": "string",
"example": "Insert the entire text of the LGPL-3.0 here..."
},
"title": {
"type": "string",
"example": "GNU Lesser General Public License v3.0 or later"
}
},
"description": "A full license"
}
LicenseTag
{
"type": "object",
"required": [
"short",
"name"
],
"properties": {
"name": {
"type": "string",
"example": "GNU Lesser General Public License v3",
"description": "The full name of the license"
},
"short": {
"type": "string",
"example": "lgpl-3",
"description": "The short identifier of the license"
}
},
"description": "A short overview of a license"
}
LoaderTag
{
"type": "object",
"required": [
"icon",
"name",
"supported_project_types"
],
"properties": {
"icon": {
"type": "string",
"example": "<svg></svg>",
"description": "The SVG icon of a loader"
},
"name": {
"type": "string",
"example": "fabric",
"description": "The name of the loader"
},
"supported_project_types": {
"type": "array",
"items": {
"type": "string",
"description": "The project type"
},
"example": [
"mod",
"modpack"
],
"description": "The project types that this loader is applicable to"
}
}
}
ModeratorMessage
{
"type": "object",
"example": null,
"nullable": true,
"deprecated": true,
"properties": {
"body": {
"type": "string",
"nullable": true,
"description": "The longer body of the message that a moderator has left for the project"
},
"message": {
"type": "string",
"description": "The message that a moderator has left for the project"
}
},
"description": "A message that a moderator sent regarding the project"
}
ModifiableProject
{
"allOf": [
{
"$ref": "#/components/schemas/NonSearchProject"
},
{
"type": "object",
"properties": {
"license_id": {
"type": "string",
"example": "LGPL-3.0-or-later",
"description": "The SPDX license ID of a project"
},
"license_url": {
"type": "string",
"nullable": true,
"description": "The URL to this license"
}
}
}
]
}
ModifyTeamMemberBody
{
"properties": {
"role": {
"type": "string",
"example": "Contributor"
},
"ordering": {
"type": "integer",
"example": 0,
"description": "The order of the team member."
},
"permissions": {
"type": "integer",
"format": "bitfield",
"example": 127,
"description": "The user's permissions in bitfield format\n\nIn order from first to tenth bit, the bits are:\n- UPLOAD_VERSION\n- DELETE_VERSION\n- EDIT_DETAILS\n- EDIT_BODY\n- MANAGE_INVITES\n- REMOVE_MEMBER\n- EDIT_MEMBER\n- DELETE_PROJECT\n- VIEW_ANALYTICS\n- VIEW_PAYOUTS\n"
},
"payouts_split": {
"type": "integer",
"example": 100,
"description": "The split of payouts going to this user. The proportion of payouts they get is their split divided by the sum of the splits of all members."
}
}
}
NonSearchProject
{
"allOf": [
{
"$ref": "#/components/schemas/BaseProject"
},
{
"type": "object",
"properties": {
"body": {
"type": "string",
"example": "A long body describing my project in detail",
"description": "A long form description of the project"
},
"status": {
"enum": [
"approved",
"archived",
"rejected",
"draft",
"unlisted",
"processing",
"withheld",
"scheduled",
"private",
"unknown"
],
"type": "string",
"example": "approved",
"description": "The status of the project"
},
"wiki_url": {
"type": "string",
"example": "https://github.com/my_user/my_project/wiki",
"nullable": true,
"description": "An optional link to the project's wiki page or other relevant information"
},
"issues_url": {
"type": "string",
"example": "https://github.com/my_user/my_project/issues",
"nullable": true,
"description": "An optional link to where to submit bugs or issues with the project"
},
"source_url": {
"type": "string",
"example": "https://github.com/my_user/my_project",
"nullable": true,
"description": "An optional link to the source code of the project"
},
"discord_url": {
"type": "string",
"example": "https://discord.gg/AaBbCcDd",
"nullable": true,
"description": "An optional invite link to the project's discord"
},
"donation_urls": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ProjectDonationURL"
},
"description": "A list of donation links for the project"
},
"requested_status": {
"enum": [
"approved",
"archived",
"unlisted",
"private",
"draft"
],
"type": "string",
"nullable": true,
"description": "The requested status when submitting for review or scheduling the project for release"
},
"additional_categories": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"technology",
"adventure",
"fabric"
],
"description": "A list of categories which are searchable but non-primary"
}
}
}
]
}
Notification
{
"type": "object",
"required": [
"id",
"user_id",
"title",
"text",
"link",
"read",
"created",
"actions"
],
"properties": {
"id": {
"type": "string",
"example": "UUVVWWXX",
"description": "The id of the notification"
},
"link": {
"type": "string",
"example": "mod/AABBCCDD/version/IIJJKKLL",
"description": "A link to the related project or version"
},
"read": {
"type": "boolean",
"example": false,
"description": "Whether the notification has been read or not"
},
"text": {
"type": "string",
"example": "The project, My Project, has released a new version: 1.0.0",
"description": "The body text of the notification"
},
"type": {
"enum": [
"project_update",
"team_invite",
"status_change",
"moderator_message"
],
"type": "string",
"example": "project_update",
"nullable": true,
"description": "The type of notification"
},
"title": {
"type": "string",
"example": "**My Project** has been updated!",
"description": "The title of the notification"
},
"actions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/NotificationAction"
},
"description": "A list of actions that can be performed"
},
"created": {
"type": "string",
"format": "ISO-8601",
"description": "The time at which the notification was created"
},
"user_id": {
"type": "string",
"example": "EEFFGGHH",
"description": "The id of the user who received the notification"
}
}
}
NotificationAction
{
"type": "object",
"properties": {
"title": {
"type": "string",
"example": "Accept",
"description": "The friendly name for this action"
},
"action_route": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"POST",
"team/{id}/join"
],
"description": "The HTTP code and path to request in order to perform this action."
}
},
"description": "An action that can be performed on a notification"
}
NotificationsGetMultipleResponse
{
"type": "array",
"items": {
"$ref": "#/components/schemas/Notification"
}
}
NotificationsGetUserNotificationsResponse
{
"type": "array",
"items": {
"$ref": "#/components/schemas/Notification"
}
}
PatchProjectsBody
{
"type": "object",
"properties": {
"wiki_url": {
"type": "string",
"example": "https://github.com/my_user/my_project/wiki",
"nullable": true,
"description": "An optional link to the projects' wiki page or other relevant information"
},
"categories": {
"type": "array",
"items": {
"type": "string"
},
"description": "Set all of the categories to the categories specified here"
},
"issues_url": {
"type": "string",
"example": "https://github.com/my_user/my_project/issues",
"nullable": true,
"description": "An optional link to where to submit bugs or issues with the projects"
},
"source_url": {
"type": "string",
"example": "https://github.com/my_user/my_project",
"nullable": true,
"description": "An optional link to the source code of the projects"
},
"discord_url": {
"type": "string",
"example": "https://discord.gg/AaBbCcDd",
"nullable": true,
"description": "An optional invite link to the projects' discord"
},
"donation_urls": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ProjectDonationURL"
},
"description": "Set all of the donation links to the donation links specified here"
},
"add_categories": {
"type": "array",
"items": {
"type": "string"
},
"description": "Add all of the categories specified here"
},
"add_donation_urls": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ProjectDonationURL"
},
"description": "Add all of the donation links specified here"
},
"remove_categories": {
"type": "array",
"items": {
"type": "string"
},
"description": "Remove all of the categories specified here"
},
"remove_donation_urls": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ProjectDonationURL"
},
"description": "Remove all of the donation links specified here"
},
"additional_categories": {
"type": "array",
"items": {
"type": "string"
},
"description": "Set all of the additional categories to the categories specified here"
},
"add_additional_categories": {
"type": "array",
"items": {
"type": "string"
},
"description": "Add all of the additional categories specified here"
},
"remove_additional_categories": {
"type": "array",
"items": {
"type": "string"
},
"description": "Remove all of the additional categories specified here"
}
}
}
Project
{
"allOf": [
{
"$ref": "#/components/schemas/NonSearchProject"
},
{
"$ref": "#/components/schemas/ServerRenderedProject"
},
{
"type": "object",
"required": [
"id",
"team",
"published",
"updated",
"followers",
"title",
"description",
"categories",
"client_side",
"server_side",
"slug",
"body",
"status"
],
"properties": {
"id": {
"type": "string",
"example": "AABBCCDD",
"description": "The ID of the project, encoded as a base62 string"
},
"team": {
"type": "string",
"example": "MMNNOOPP",
"description": "The ID of the team that has ownership of this project"
},
"queued": {
"type": "string",
"format": "ISO-8601",
"nullable": true,
"description": "The date the project's status was submitted to moderators for review"
},
"gallery": {
"type": "array",
"items": {
"$ref": "#/components/schemas/GalleryImage"
},
"description": "A list of images that have been uploaded to the project's gallery"
},
"license": {
"$ref": "#/components/schemas/ProjectLicense"
},
"loaders": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"forge",
"fabric",
"quilt"
],
"description": "A list of all of the loaders supported by the project"
},
"updated": {
"type": "string",
"format": "ISO-8601",
"description": "The date the project was last updated"
},
"approved": {
"type": "string",
"format": "ISO-8601",
"nullable": true,
"description": "The date the project's status was set to an approved status"
},
"body_url": {
"type": "string",
"default": null,
"example": null,
"nullable": true,
"deprecated": true,
"description": "The link to the long description of the project. Always null, only kept for legacy compatibility."
},
"versions": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"IIJJKKLL",
"QQRRSSTT"
],
"description": "A list of the version IDs of the project (will never be empty unless `draft` status)"
},
"followers": {
"type": "integer",
"description": "The total number of users following the project"
},
"published": {
"type": "string",
"format": "ISO-8601",
"description": "The date the project was published"
},
"game_versions": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"1.19",
"1.19.1",
"1.19.2",
"1.19.3"
],
"description": "A list of all of the game versions supported by the project"
},
"moderator_message": {
"$ref": "#/components/schemas/ModeratorMessage"
}
}
}
]
}
ProjectDependencyList
{
"type": "object",
"properties": {
"projects": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Project"
},
"description": "Projects that the project depends upon"
},
"versions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Version"
},
"description": "Versions that the project depends upon"
}
}
}
ProjectDonationURL
{
"type": "object",
"properties": {
"id": {
"type": "string",
"example": "patreon",
"description": "The ID of the donation platform"
},
"url": {
"type": "string",
"example": "https://www.patreon.com/my_user",
"description": "The URL of the donation platform and user"
},
"platform": {
"type": "string",
"example": "Patreon",
"description": "The donation platform this link is to"
}
}
}
ProjectIdentifier
{
"type": "object",
"properties": {
"id": {
"type": "string",
"example": "AABBCCDD"
}
}
}
ProjectLicense
{
"type": "object",
"properties": {
"id": {
"type": "string",
"example": "LGPL-3.0-or-later",
"description": "The SPDX license ID of a project"
},
"url": {
"type": "string",
"nullable": true,
"description": "The URL to this license"
},
"name": {
"type": "string",
"example": "GNU Lesser General Public License v3 or later",
"description": "The long name of a license"
}
},
"description": "The license of the project"
}
ProjectResult
{
"allOf": [
{
"$ref": "#/components/schemas/ServerRenderedProject"
},
{
"type": "object",
"required": [
"slug",
"title",
"description",
"client_side",
"server_side",
"project_id",
"author",
"versions",
"follows",
"date_created",
"date_modified",
"license"
],
"properties": {
"author": {
"type": "string",
"example": "my_user",
"description": "The username of the project's author"
},
"follows": {
"type": "integer",
"description": "The total number of users following the project"
},
"gallery": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"https://cdn.modrinth.com/data/AABBCCDD/images/009b7d8d6e8bf04968a29421117c59b3efe2351a.png",
"https://cdn.modrinth.com/data/AABBCCDD/images/c21776867afb6046fdc3c21dbcf5cc50ae27a236.png"
],
"description": "All gallery images attached to the project"
},
"license": {
"type": "string",
"example": "MIT",
"description": "The SPDX license ID of a project"
},
"versions": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"1.8",
"1.8.9"
],
"description": "A list of the minecraft versions supported by the project"
},
"project_id": {
"type": "string",
"example": "AABBCCDD",
"description": "The ID of the project"
},
"date_created": {
"type": "string",
"format": "ISO-8601",
"description": "The date the project was added to search"
},
"date_modified": {
"type": "string",
"format": "ISO-8601",
"description": "The date the project was last modified"
},
"latest_version": {
"type": "string",
"example": "1.8.9",
"description": "The latest version of minecraft that this project supports"
},
"featured_gallery": {
"type": "string",
"nullable": true,
"description": "The featured gallery image of the project"
},
"display_categories": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"technology",
"fabric"
],
"description": "A list of the categories that the project has which are not secondary"
}
}
}
]
}
ProjectsChangeProjectIconRequest
{
"type": "string",
"format": "binary"
}
ProjectsChangeProjectIconRequest1
{
"type": "string",
"format": "binary"
}
ProjectsChangeProjectIconRequest2
{
"type": "string",
"format": "binary"
}
ProjectsChangeProjectIconRequest3
{
"type": "string",
"format": "binary"
}
ProjectsChangeProjectIconRequest4
{
"type": "string",
"format": "binary"
}
ProjectsChangeProjectIconRequest5
{
"type": "string",
"format": "binary"
}
ProjectsChangeProjectIconRequest6
{
"type": "string",
"format": "binary"
}
ProjectsChangeProjectIconRequest7
{
"type": "string",
"format": "binary"
}
| Version | Endpoints | Schemas | Ingested | Status |
|---|---|---|---|---|
| v2.7.0/15cf3fc | 76 | 91 | 2026-05-11 | current |
| v2.7.0/15cf3fc | 76 | 91 | 2026-04-20 | |
| v2.7.0/15cf3fc | 76 | 91 | 2026-04-16 |