Curse Mods API
The Mods API from Curse — 19 operation(s) for mods.
The Mods API from Curse — 19 operation(s) for mods.
openapi: 3.0.0
info:
title: CurseForge Core Categories Mods API
description: All endpoints use the same base URL - [https://api.curseforge.com](https://api.curseforge.com)
version: v1
servers:
- url: https://api.curseforge.com
security:
- API_KEY: []
tags:
- name: Mods
paths:
/v1/mods/search:
get:
tags:
- Mods
description: Get all mods that match the search criteria.
operationId: Search Mods
parameters:
- name: gameId
in: query
required: true
description: Filter by game id.
schema:
type: integer
format: int32
x-position: 1
- name: classId
in: query
description: Filter by section id (discoverable via Categories)
schema:
type: integer
format: int32
x-position: 2
- name: categoryId
in: query
description: Filter by category id
schema:
type: integer
format: int32
x-position: 3
- name: categoryIds
in: query
description: "Filter by a list of category ids - this will override categoryId\ncategoryIds=[1,2,3...]\n \nThe maximum allowed category ids per query is 10"
schema:
type: string
x-position: 4
- name: gameVersion
in: query
description: Filter by game version string
schema:
type: string
x-position: 5
- name: gameVersions
in: query
description: "Filter by a list of game version strings - this will override\ngameVersion\n \ngameVersions=[\"1.19.1\", \"1.19.2\", \"1.20.1\" ...]\n \nThe maximum allowed category ids per query is 4"
schema:
type: string
x-position: 6
- name: searchFilter
in: query
description: Filter by free text search in the mod name and author
schema:
type: string
x-position: 7
- name: sortField
in: query
description: Filter by ModsSearchSortField enumeration
schema:
$ref: '#/components/schemas/ModsSearchSortField'
x-position: 8
- name: sortOrder
in: query
description: '''asc'' if sort is in ascending order, ''desc'' if sort is in descending order'
schema:
$ref: '#/components/schemas/SortOrder'
x-position: 9
- name: modLoaderType
in: query
description: Filter only mods associated to a given modloader (Forge, Fabric ...). Must be coupled with gameVersion.
schema:
nullable: true
$ref: '#/components/schemas/ModLoaderType'
x-position: 10
- name: modLoaderTypes
in: query
description: "Filter by a list of mod loader types - this will override modLoaderType\nmodLoaderTypes=[Forge, Fabric, ...]\n \nMax values = 5"
schema:
type: string
x-position: 11
- name: gameVersionTypeId
in: query
description: Filter only mods that contain files tagged with versions of the given gameVersionTypeId
schema:
type: integer
format: int32
nullable: true
x-position: 12
- name: authorId
in: query
description: Filter only mods that the given authorId is a member of.
schema:
type: integer
format: int32
nullable: true
x-position: 13
- name: primaryAuthorId
in: query
description: Filter only mods that the given primaryAuthorId is the owner of.
schema:
type: integer
format: int32
nullable: true
x-position: 14
- name: PremiumType
in: query
description: Filter only mods that are Premium or not.
schema:
$ref: '#/components/schemas/ModPremiumTypeEnum'
x-position: 15
- name: slug
in: query
description: Filter by slug (coupled with classId will result in a unique result).
schema:
type: string
x-position: 16
- name: clientCompatible
in: query
description: 'When set to true, will filter out any mod that doesn''t have a default
file that is compatible with the client. This is usually due to a bad
file structure of the file (which might cause unexpected behaviours on
the user''s machine - such as overriding other mods installed).'
schema:
type: boolean
x-position: 17
- name: modsSearchEnhancedFeatures
in: query
description: Bitwise number with values from ModsSearchEnhancedFeatures
schema:
type: integer
format: int64
x-position: 18
- name: index
in: query
description: 'A zero based index of the first item to include in the response, the limit is: (index + pageSize <= 10,000).'
schema:
type: integer
format: int32
x-position: 19
- name: pageSize
in: query
description: The number of items to include in the response, the default/maximum value is 50.
schema:
type: integer
format: int32
x-position: 20
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResponseWithPaginationOfListOfModDto'
'500':
description: ''
'400':
description: ''
/v1/mods/app-search:
post:
tags:
- Mods
operationId: App Mods Search
requestBody:
x-name: request
content:
application/json:
schema:
$ref: '#/components/schemas/SearchModsPostRequest'
required: true
x-position: 1
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Search Mods Response'
'500':
description: ''
'400':
description: ''
/v1/mods/{modId}:
get:
tags:
- Mods
description: Get a single mod.
operationId: Get Mod
parameters:
- name: modId
in: path
required: true
description: The mod id
schema:
type: integer
format: int32
x-position: 1
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResponseOfModDto'
'500':
description: ''
'404':
description: ''
/v1/mods/get-mods-by-ids:
post:
tags:
- Mods
description: Get a list of mods belonging the the same game.
operationId: Get Mods
requestBody:
x-name: requestBody
description: Request body containing an array of mod ids, mod ids must belong to the same game.
content:
application/json:
schema:
$ref: '#/components/schemas/GetExpandedModsByIdsListRequestBody'
required: true
x-position: 1
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResponseOfListOfModDto'
'500':
description: ''
'400':
description: ''
/v1/mods:
post:
tags:
- Mods
description: Get a list of mods belonging the the same game.
operationId: Get Mods2
requestBody:
x-name: requestBody
description: Request body containing an array of mod ids, mod ids must belong to the same game.
content:
application/json:
schema:
$ref: '#/components/schemas/GetExpandedModsByIdsListRequestBody'
required: true
x-position: 1
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResponseOfListOfModDto'
'500':
description: ''
'400':
description: ''
/v1/mods/featured:
post:
tags:
- Mods
description: Get a list of featured, popular and recently updated mods.
operationId: Get Featured Mods
requestBody:
x-name: filter
description: Match results for a game and exclude specific mods
content:
application/json:
schema:
$ref: '#/components/schemas/GetFeaturedModsRequestBody'
required: true
x-position: 1
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResponseOfFeaturedModsResponseOfModDto'
'500':
description: ''
'400':
description: ''
'404':
description: ''
/v1/mods/{modId}/description:
get:
tags:
- Mods
description: Get the full description of a mod in HTML format.
operationId: Get Mod Description
parameters:
- name: modId
in: path
required: true
description: The mod id
schema:
type: integer
format: int32
x-position: 1
- name: raw
in: query
schema:
type: boolean
x-position: 2
- name: stripped
in: query
schema:
type: boolean
x-position: 3
- name: markup
in: query
schema:
type: boolean
x-position: 4
- name: lang
in: query
schema:
type: string
default: en
x-position: 5
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/String Response'
'500':
description: ''
'404':
description: ''
/v1/mods/app-highlights:
get:
tags:
- Mods
operationId: Mods_GetAppModHighlights
parameters:
- name: gameId
in: query
schema:
type: integer
format: int32
x-position: 1
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResponseOfAppHighlightsResponse'
'404':
description: ''
/v1/mods/highlights:
post:
tags:
- Mods
operationId: Get Mod Highlights
requestBody:
x-name: body
content:
application/json:
schema:
$ref: '#/components/schemas/GetHighlightsFeaturedRequest'
required: true
x-position: 1
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResponseOfHomepageHighlightsResponse'
'500':
description: ''
/v3/mods/highlights:
post:
tags:
- Mods
operationId: Get Mod Highlights2
requestBody:
x-name: body
content:
application/json:
schema:
$ref: '#/components/schemas/GetHighlightsFeaturedRequest'
required: true
x-position: 1
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResponseOfHomepageHighlightsResponse2'
'500':
description: ''
/v3/mods:
get:
tags:
- Mods
operationId: Mods_GetById
parameters:
- name: modId
in: query
schema:
type: integer
format: int32
x-position: 1
responses:
'200':
description: ''
content:
application/octet-stream:
schema:
type: string
format: binary
/v2/mods/app-highlights:
get:
tags:
- Mods
operationId: Mods_GetAppModHighlights2
parameters:
- name: gameId
in: query
schema:
type: integer
format: int32
x-position: 1
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResponseOfAppHighlightsResponse2'
'404':
description: ''
/v2/mods/highlights:
post:
tags:
- Mods
operationId: Get Mod Highlights22
requestBody:
x-name: body
content:
application/json:
schema:
$ref: '#/components/schemas/GetHighlightsFeaturedRequest'
required: true
x-position: 1
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResponseOfHomepageHighlightsResponse3'
'500':
description: ''
/v2/mods/search:
get:
tags:
- Mods
description: Get all mods that match the search criteria.
operationId: Search Mods2
parameters:
- name: gameId
in: query
required: true
description: Filter by game id.
schema:
type: integer
format: int32
x-position: 1
- name: classId
in: query
description: Filter by section id (discoverable via Categories)
schema:
type: integer
format: int32
x-position: 2
- name: categoryId
in: query
description: Filter by category id
schema:
type: integer
format: int32
x-position: 3
- name: categoryIds
in: query
description: "Filter by a list of category ids - this will override categoryId\ncategoryIds=[1,2,3...]\n \nThe maximum allowed category ids per query is 10"
schema:
type: string
x-position: 4
- name: gameVersion
in: query
description: Filter by game version string
schema:
type: string
x-position: 5
- name: gameVersions
in: query
description: "Filter by a list of game version strings - this will override\ngameVersion\n \ngameVersions=[\"1.19.1\", \"1.19.2\", \"1.20.1\" ...]\n \nThe maximum allowed category ids per query is 4"
schema:
type: string
x-position: 6
- name: searchFilter
in: query
description: Filter by free text search in the mod name and author
schema:
type: string
x-position: 7
- name: sortField
in: query
description: Filter by ModsSearchSortField enumeration
schema:
$ref: '#/components/schemas/ModsSearchSortField'
x-position: 8
- name: sortOrder
in: query
description: '''asc'' if sort is in ascending order, ''desc'' if sort is in descending order'
schema:
$ref: '#/components/schemas/SortOrder'
x-position: 9
- name: modLoaderType
in: query
description: Filter only mods associated to a given modloader (Forge, Fabric ...). Must be coupled with gameVersion.
schema:
nullable: true
$ref: '#/components/schemas/ModLoaderType'
x-position: 10
- name: modLoaderTypes
in: query
description: "Filter by a list of mod loader types - this will override modLoaderType\nmodLoaderTypes=[Forge, Fabric, ...]\n \nMax values = 5"
schema:
type: string
x-position: 11
- name: gameVersionTypeId
in: query
description: Filter only mods that contain files tagged with versions of the given gameVersionTypeId
schema:
type: integer
format: int32
nullable: true
x-position: 12
- name: authorId
in: query
description: Filter only mods that the given authorId is a member of.
schema:
type: integer
format: int32
nullable: true
x-position: 13
- name: primaryAuthorId
in: query
description: Filter only mods that the given primaryAuthorId is the owner of.
schema:
type: integer
format: int32
nullable: true
x-position: 14
- name: PremiumType
in: query
description: Filter only mods that are Premium or not.
schema:
$ref: '#/components/schemas/ModPremiumTypeEnum'
x-position: 15
- name: slug
in: query
description: Filter by slug (coupled with classId will result in a unique result).
schema:
type: string
x-position: 16
- name: clientCompatible
in: query
description: 'When set to true, will filter out any mod that doesn''t have a default
file that is compatible with the client. This is usually due to a bad
file structure of the file (which might cause unexpected behaviours on
the user''s machine - such as overriding other mods installed).'
schema:
type: boolean
x-position: 17
- name: modsSearchEnhancedFeatures
in: query
description: Bitwise number with values from ModsSearchEnhancedFeatures
schema:
type: integer
format: int64
x-position: 18
- name: index
in: query
description: 'A zero based index of the first item to include in the response, the limit is: (index + pageSize <= 10,000).'
schema:
type: integer
format: int32
x-position: 19
- name: pageSize
in: query
description: The number of items to include in the response, the default/maximum value is 50.
schema:
type: integer
format: int32
x-position: 20
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Search Mods Response'
'500':
description: ''
'400':
description: ''
/v2/mods/community-picks-candidates:
post:
tags:
- Mods
operationId: Mods_GetCommunityPicksCandidates
requestBody:
x-name: request
content:
application/json:
schema:
$ref: '#/components/schemas/CommunityPicksCandidatesRequests'
required: true
x-position: 1
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Search Mods Response'
'404':
description: ''
/v2/mods/app-search:
post:
tags:
- Mods
operationId: App Mods Search2
requestBody:
x-name: request
content:
application/json:
schema:
$ref: '#/components/schemas/SearchModsPostRequest'
required: true
x-position: 1
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Search Mods Response'
'500':
description: ''
'400':
description: ''
/v2/mods/{modId}:
get:
tags:
- Mods
description: Get a single mod.
operationId: Get Mod2
parameters:
- name: modId
in: path
required: true
description: The mod id
schema:
type: integer
format: int32
x-position: 1
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Get Mod Response'
'500':
description: ''
'404':
description: ''
/v2/mods/get-mods-by-ids:
post:
tags:
- Mods
description: Get a list of mods belonging the the same game.
operationId: Get Mods22
requestBody:
x-name: requestBody
description: Request body containing an array of mod ids, mod ids must belong to the same game.
content:
application/json:
schema:
$ref: '#/components/schemas/GetExpandedModsByIdsListRequestBody'
required: true
x-position: 1
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResponseOfListOfModDto2'
'500':
description: ''
'400':
description: ''
/v2/mods/featured:
post:
tags:
- Mods
description: Get a list of featured, popular and recently updated mods.
operationId: Get Featured Mods2
requestBody:
x-name: filter
description: Match results for a game and exclude specific mods
content:
application/json:
schema:
$ref: '#/components/schemas/GetFeaturedModsRequestBody'
required: true
x-position: 1
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResponseOfFeaturedModsResponseOfModDto2'
'500':
description: ''
'400':
description: ''
'404':
description: ''
components:
schemas:
File:
type: object
additionalProperties: false
properties:
id:
type: integer
description: The file id
format: int32
gameId:
type: integer
description: The game id related to the mod that this file belongs to
format: int32
modId:
type: integer
description: The mod id
format: int32
isAvailable:
type: boolean
description: Whether the file is available to download
displayName:
type: string
description: Display name of the file
fileName:
type: string
description: Exact file name
releaseType:
description: The file release type
$ref: '#/components/schemas/FileReleaseType'
fileStatus:
description: Status of the file
$ref: '#/components/schemas/FileStatus'
hashes:
type: array
description: The file hash (i.e. md5 or sha1)
items:
$ref: '#/components/schemas/FileHash'
fileDate:
type: string
description: The file timestamp
format: date-time
fileLength:
type: integer
description: The file length in bytes
format: int64
downloadCount:
type: integer
description: The number of downloads for the file
format: int64
fileSizeOnDisk:
type: integer
description: The file's size on disk
format: int64
nullable: true
downloadUrl:
type: string
description: The file download URL
gameVersions:
type: array
description: List of game versions this file is relevant for
items:
type: string
sortableGameVersions:
type: array
description: Metadata used for sorting by game versions
items:
$ref: '#/components/schemas/SortableGameVersion'
dependencies:
type: array
description: List of dependencies files
items:
$ref: '#/components/schemas/FileDependency'
exposeAsAlternative:
type: boolean
nullable: true
parentProjectFileId:
type: integer
format: int32
nullable: true
alternateFileId:
type: integer
format: int32
nullable: true
isServerPack:
type: boolean
nullable: true
serverPackFileId:
type: integer
format: int32
nullable: true
isEarlyAccessContent:
type: boolean
nullable: true
earlyAccessEndDate:
type: string
format: date-time
nullable: true
fileFingerprint:
type: integer
format: int64
modules:
type: array
items:
$ref: '#/components/schemas/FileModule'
cookingInfo:
$ref: '#/components/schemas/CookerInfo'
ModLinks:
type: object
additionalProperties: false
properties:
websiteUrl:
type: string
wikiUrl:
type: string
issuesUrl:
type: string
sourceUrl:
type: string
ApiResponseOfHomepageHighlightsResponse3:
type: object
additionalProperties: false
properties:
data:
description: The response data
$ref: '#/components/schemas/HomepageHighlightsResponse3'
RatingScore:
type: integer
description: '0 = NotEnoughReviews
1 = OverwhelminglyPositive
2 = VeryPositive
3 = Positive
4 = MostlyPositive
5 = Mixed
6 = MostlyNegative
7 = Negative
8 = VeryNegative
9 = OverwhelminglyNegative'
x-enumNames:
- NotEnoughReviews
- OverwhelminglyPositive
- VeryPositive
- Positive
- MostlyPositive
- Mixed
- MostlyNegative
- Negative
- VeryNegative
- OverwhelminglyNegative
enum:
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
HighlightsModDto:
type: object
additionalProperties: false
properties:
id:
type: integer
format: int32
logo:
$ref: '#/components/schemas/ModAsset'
name:
type: string
authors:
type: array
items:
$ref: '#/components/schemas/ModAuthor'
ratingDetails:
$ref: '#/components/schemas/RatingDetails'
downloadCount:
type: integer
format: int64
fileSize:
type: integer
format: int64
nullable: true
Mod:
type: object
additionalProperties: false
properties:
id:
type: integer
description: The mod id
format: int32
gameId:
type: integer
description: The game id this mod is for
format: int32
name:
type: string
description: The name of the mod
slug:
type: string
description: The mod slug that would appear in the URL
links:
description: Relevant links for the mod such as Issue tracker and Wiki
$ref: '#/components/schemas/ModLinks'
summary:
type: string
description: Mod summary
status:
description: Current mod status
$ref: '#/components/schemas/ModStatus'
downloadCount:
type: integer
description: Number of downloads for the mod
format: int64
isFeatured:
type: boolean
description: Whether the mod is included in the featured mods list
primaryCategoryId:
type: integer
description: The main category of the mod as it was chosen by the mod author
format: int32
categories:
type: array
description: List of categories that this mod is related to
items:
$ref: '#/components/schemas/Category'
classId:
type: integer
description: The class id this mod belongs to
format: int32
nullable: true
authors:
type: array
description: List of the mod's authors
items:
$ref: '#/components/schemas/ModAuthor'
logo:
description: The mod's logo asset
$ref: '#/components/schemas/ModAsset'
screenshots:
type: array
description: List of screenshots assets
items:
$ref: '#/components/schemas/ModAsset'
videos:
type: array
description: List of videos assets
items:
$ref: '#/components/schemas/ModAsset'
mainFileId:
type: integer
description: The id of the main file of the mod
format: int32
latestFiles:
type: array
description: List of latest files of the mod
items:
$ref: '#/components/schemas/File'
latestFilesIndexes:
type: array
description: List of file related details for the latest files of the mod
items:
$ref: '#/components/schemas/FileIndex'
latestEarlyAccessFilesIndexes:
type: array
description: List of file related details for the latest early access files of the mod
items:
$ref: '#/components/schemas/FileIndex'
dateCreated:
type: string
description: The creation date of the mod
format: date-time
dateModified:
type: string
description: The last time the mod was modified
format: date-time
dateReleased:
type: string
description: The release date of the mod
format: date-time
dateLastReleasedFile:
type: string
description: The last file release date
format: date-time
nullable: true
allowModDistribution:
type: boolean
description: Is mod allowed to be distributed
nullable: true
gamePopularityRank:
type: integer
description: The mod popularity rank for the game
format: int32
isAvailable:
type: boolean
description: Is the mod available for search. This can be false when a mod is experimental, in a deleted state or has only alpha files
hasCommentsEnabled:
type: boolean
description: Does the mod enable comments
nullable: true
thumbsUpCount:
type: integer
description: The mod's thumbs up count
format: int32
ratingDetails:
description: The mod's Rating Details
$ref: '#/components/schemas/RatingDetails'
serverAffiliation:
description: The mod's server affiliation details
$ref: '#/components/schemas/ServerAffiliation'
socialLinks:
type: array
description: The mod's social links
items:
$ref: '#/components/schemas/SocialLink'
galleryItems:
type: array
description: The mod's gallery items
items:
$ref: '#/components/schemas/GalleryItem'
featuredProjectTag:
$ref: '#/components/schemas/ClientFeaturedProjectTag'
ApiResponseWithPaginationOfListOfModDto:
type: object
additionalProperties: false
properties:
data:
type: array
description: The response data
items:
$ref: '#/components/schemas/ModDto'
pagination:
description: The response pagination information
$ref: '#/components/schemas/Pagination'
FileModule:
type: object
additionalProperties: false
properties:
name:
type: string
fingerprint:
type: integer
format: int64
HashAlgo:
type: integer
description: '1 = Sha1
2 = Md5'
x-enumNames:
- Sha1
- Md5
enum:
- 1
- 2
Pagination:
type: object
additionalProperties: false
properties:
index:
type: integer
description: A zero based index of the first item that is included in the response
format: int32
pageSize:
type: integer
description: The requested number of items to be included in the response
format: int32
resultCount:
type: integer
description: The actual number of items that were included in the response
# --- truncated at 32 KB (65 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/curse/refs/heads/main/openapi/curse-mods-api-openapi.yml