Curse Subscriptions API
The Subscriptions API from Curse — 5 operation(s) for subscriptions.
The Subscriptions API from Curse — 5 operation(s) for subscriptions.
openapi: 3.0.0
info:
title: CurseForge Core Categories Subscriptions 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: Subscriptions
paths:
/v1/users/me/mods/subscriptions:
get:
tags:
- Subscriptions
description: Get the current user's subscribed mods for the given game key
operationId: Get Mods Subscriptions
parameters:
- 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: 1
- 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: 2
- name: gameId
in: query
schema:
type: integer
format: int32
nullable: true
x-position: 3
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Search Mods Response'
'500':
description: ''
'403':
description: ''
'405':
description: ''
/v1/users/me/mods/subscriptions/ids:
get:
tags:
- Subscriptions
description: Get the current user's subscribed mods for the given game key
operationId: Get Mods Subscriptions2
parameters:
- 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: 1
- 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: 2
- name: gameId
in: query
schema:
type: integer
format: int32
nullable: true
x-position: 3
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Search Mods Response'
'500':
description: ''
'403':
description: ''
'405':
description: ''
/v1/users/me/mods/subscriptions/subscribe:
post:
tags:
- Subscriptions
summary: ''
operationId: Add a list of mod ids to the user's subscribed mods
requestBody:
x-name: request
content:
application/json:
schema:
$ref: '#/components/schemas/SubscribeModIdsRequestBody'
required: true
x-position: 1
responses:
'500':
description: ''
'400':
description: ''
/v1/users/me/mods/subscriptions/subscribe/{modId}:
post:
tags:
- Subscriptions
summary: ''
operationId: Add a mod id to the user's subscribed mods
parameters:
- name: modId
in: path
required: true
schema:
type: integer
format: int32
x-position: 1
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Get Mod Response'
'500':
description: ''
'403':
description: ''
'405':
description: ''
'404':
description: ''
'400':
description: ''
/v1/users/me/mods/subscriptions/unsubscribe/{modId}:
post:
tags:
- Subscriptions
summary: ''
operationId: Remove a mod id from the user's subscribed mods
parameters:
- name: modId
in: path
required: true
schema:
type: integer
format: int32
x-position: 1
responses:
'200':
description: ''
content:
application/octet-stream:
schema:
type: string
format: binary
'500':
description: ''
'403':
description: ''
'405':
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
RatingDetails:
type: object
additionalProperties: false
properties:
rating:
type: number
format: decimal
nullable: true
totalRatings:
type: integer
format: int32
nullable: true
positiveRatings:
type: integer
format: int32
nullable: true
score:
$ref: '#/components/schemas/RatingScore'
FileHash:
type: object
additionalProperties: false
properties:
value:
type: string
algo:
$ref: '#/components/schemas/HashAlgo'
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
SubscribeModIdsRequestBody:
type: object
additionalProperties: false
properties:
modIds:
type: array
items:
type: integer
format: int32
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'
ModAuthor:
type: object
additionalProperties: false
properties:
id:
type: integer
format: int32
name:
type: string
url:
type: string
avatarUrl:
type: string
SocialLinkType:
type: integer
description: '1 = Mastodon
2 = Discord
3 = Website
4 = Facebook
5 = Twitter
6 = Instagram
7 = Patreon
8 = Twitch
9 = Reddit
10 = Youtube
11 = TikTok
12 = Pinterest
13 = Github
14 = Bsky
15 = Paypal
16 = PaypalHosted
17 = GithubSponsors
18 = Kofi
19 = BuyMeACoffee'
x-enumNames:
- Mastodon
- Discord
- Website
- Facebook
- Twitter
- Instagram
- Patreon
- Twitch
- Reddit
- Youtube
- TikTok
- Pinterest
- Github
- Bsky
- Paypal
- PaypalHosted
- GithubSponsors
- Kofi
- BuyMeACoffee
enum:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
FileModule:
type: object
additionalProperties: false
properties:
name:
type: string
fingerprint:
type: integer
format: int64
ModAsset:
type: object
additionalProperties: false
properties:
id:
type: integer
format: int32
modId:
type: integer
format: int32
title:
type: string
description:
type: string
thumbnailUrl:
type: string
url:
type: string
HashAlgo:
type: integer
description: '1 = Sha1
2 = Md5'
x-enumNames:
- Sha1
- Md5
enum:
- 1
- 2
Search Mods Response:
type: object
additionalProperties: false
properties:
data:
type: array
description: The response data
items:
$ref: '#/components/schemas/Mod'
pagination:
description: The response pagination information
$ref: '#/components/schemas/Pagination'
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
format: int32
totalCount:
type: integer
description: The total number of items available by the request
format: int64
FileIndex:
type: object
additionalProperties: false
properties:
gameVersion:
type: string
fileId:
type: integer
format: int32
filename:
type: string
releaseType:
$ref: '#/components/schemas/FileReleaseType'
gameVersionTypeId:
type: integer
format: int32
nullable: true
modLoader:
nullable: true
$ref: '#/components/schemas/ModLoaderType'
SortableGameVersion:
type: object
additionalProperties: false
properties:
gameVersionName:
type: string
description: Original version name (e.g. 1.5b)
gameVersionPadded:
type: string
description: Used for sorting (e.g. 0000000001.0000000005)
gameVersion:
type: string
description: game version clean name (e.g. 1.5)
gameVersionReleaseDate:
type: string
description: Game version release date
format: date-time
gameVersionTypeId:
type: integer
description: Game version type id
format: int32
nullable: true
ModLoaderType:
type: integer
description: '0 = Any
1 = Forge
2 = Cauldron
3 = LiteLoader
4 = Fabric
5 = Quilt
6 = NeoForge'
x-enumNames:
- Any
- Forge
- Cauldron
- LiteLoader
- Fabric
- Quilt
- NeoForge
enum:
- 0
- 1
- 2
- 3
- 4
- 5
- 6
CookerInfo:
type: object
additionalProperties: false
properties:
cookerVersion:
type: string
cookerRevision:
type: string
AffiliationServiceType:
type: integer
description: 1 = Bisect
x-enumNames:
- Bisect
enum:
- 1
FileStatus:
type: integer
description: '1 = Processing
2 = ChangesRequired
3 = UnderReview
4 = Approved
5 = Rejected
6 = MalwareDetected
7 = Deleted
8 = Archived
9 = Testing
10 = Released
11 = ReadyForReview
12 = Deprecated
13 = Baking
14 = AwaitingPublishing
15 = FailedPublishing'
x-enumNames:
- Processing
- ChangesRequired
- UnderReview
- Approved
- Rejected
- MalwareDetected
- Deleted
- Archived
- Testing
- Released
- ReadyForReview
- Deprecated
- Baking
- AwaitingPublishing
- FailedPublishing
enum:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
Category:
type: object
additionalProperties: false
properties:
id:
type: integer
description: The category id
format: int32
gameId:
type: integer
description: The game id related to the category
format: int32
name:
type: string
description: Category name
slug:
type: string
description: The category slug as it appear in the URL
url:
type: string
description: The category URL
iconUrl:
type: string
description: URL for the category icon
dateModified:
type: string
description: Last modified date of the category
format: date-time
isClass:
type: boolean
description: A top level category for other categories
nullable: true
classId:
type: integer
description: The class id of the category, meaning - the class of which this category is under
format: int32
nullable: true
parentCategoryId:
type: integer
description: The parent category for this category
format: int32
nullable: true
displayIndex:
type: integer
description: The display index for this category
format: int32
nullable: true
FileReleaseType:
type: integer
description: '1 = Release
2 = Beta
3 = Alpha'
x-enumNames:
- Release
- Beta
- Alpha
enum:
- 1
- 2
- 3
GalleryItemType:
type: integer
description: '0 = None
1 = Screenshot
2 = EmbeddedVideo'
x-enumNames:
- None
- Screenshot
- EmbeddedVideo
enum:
- 0
- 1
- 2
ServerAffiliation:
type: object
additionalProperties: false
properties:
isEnabled:
type: boolean
isDefaultBanner:
type: boolean
hasDiscount:
type: boolean
affiliationService:
$ref: '#/components/schemas/AffiliationServiceType'
defaultBannerCustomTitle:
type: string
customImageUrl:
type: string
affiliationLink:
type: string
SocialLink:
type: object
additionalProperties: false
properties:
type:
$ref: '#/components/schemas/SocialLinkType'
url:
type: string
ModStatus:
type: integer
description: '1 = New
2 = ChangesRequired
3 = UnderSoftReview
4 = Approved
5 = Rejected
6 = ChangesMade
7 = Inactive
8 = Abandoned
9 = Deleted
10 = UnderReview'
x-enumNames:
- New
- ChangesRequired
- UnderSoftReview
- Approved
- Rejected
- ChangesMade
- Inactive
- Abandoned
- Deleted
- UnderReview
enum:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
ClientFeaturedProjectTag:
type: integer
description: '0 = None
1 = Sponsored
2 = HiddenGem
3 = Popular'
x-enumNames:
- None
- Sponsored
- HiddenGem
- Popular
enum:
- 0
- 1
- 2
- 3
GalleryItem:
type: object
additionalProperties: false
properties:
description:
type: string
isFeatured:
type: boolean
displayIndex:
type: integer
format: int32
nullable: true
title:
type: string
url:
type: string
thumbnailUrl:
type: string
type:
$ref: '#/components/schemas/GalleryItemType'
FileDependency:
type: object
additionalProperties: false
properties:
modId:
type: integer
format: int32
relationType:
$ref: '#/components/schemas/FileRelationType'
FileRelationType:
type: integer
description: '1 = EmbeddedLibrary
2 = OptionalDependency
3 = RequiredDependency
4 = Tool
5 = Incompatible
6 = Include'
x-enumNames:
- EmbeddedLibrary
- OptionalDependency
- RequiredDependency
- Tool
- Incompatible
- Include
enum:
- 1
- 2
- 3
- 4
- 5
- 6
Get Mod Response:
type: object
additionalProperties: false
properties:
data:
description: The response data
$ref: '#/components/schemas/Mod'
securitySchemes:
API_KEY:
type: apiKey
description: <br/>The API key can be generated in the CurseForge for Studios [developer console](https://console.curseforge.com/).
name: x-api-key
in: header
x-generator: NSwag v13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v11.0.0.0))