---
title: "POST /v2/mods/app-search"
method: POST
path: "/v2/mods/app-search"
tags: ["Mods"]
---

# POST /v2/mods/app-search

`POST /v2/mods/app-search`

## Request body

- SearchModsPostRequest
  - `gameId` integer — Filter by game id.
  - `classId` integer — Filter by section id (discoverable via Categories)
  - `categoryId` integer — Filter by category id
  - `categoryIds` string — Filter by a list of category ids - this will override categoryId categoryIds=[1,2,3...] The maximum allowed category ids per query is 10
  - `gameVersion` string — Filter by game version string
  - `gameVersions` string — Filter by a list of game version strings - this will override gameVersion gameVersions=["1.19.1", "1.19.2", "1.20.1" ...] The maximum allowed category ids per query is 4
  - `searchFilter` string — Filter by free text search in the mod name and author
  - `sortField` 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 — 1 = Featured 2 = Popularity 3 = LastUpdated 4 = Name 5 = Author 6 = TotalDownloads 7 = Category 8 = GameVersion 9 = EarlyAccess 10 = FeaturedReleased 11 = ReleasedDate 12 = Rating 13 = Relevancy
  - `sortOrder` 'asc' | 'desc'
  - `modLoaderType` 0 | 1 | 2 | 3 | 4 | 5 | 6 — 0 = Any 1 = Forge 2 = Cauldron 3 = LiteLoader 4 = Fabric 5 = Quilt 6 = NeoForge
  - `modLoaderTypes` string — Filter by a list of mod loader types - this will override modLoaderType modLoaderTypes=[Forge, Fabric, ...] Max values = 5
  - `gameVersionTypeId` integer, nullable — Filter only mods that contain files tagged with versions of the given gameVersionTypeId
  - `authorId` integer, nullable — Filter only mods that the given authorId is a member of.
  - `primaryAuthorId` integer, nullable — Filter only mods that the given primaryAuthorId is the owner of.
  - `premiumType` 0 | 1 | 2 — 0 = All 1 = Premium 2 = Free
  - `slug` string — Filter by slug (coupled with classId will result in a unique result).
  - `clientCompatible` boolean — 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).
  - `excludeModIds` integer[]
  - `modsSearchEnhancedFeatures` integer — Bitwise number with values from ModsSearchEnhancedFeatures
  - `index` integer
  - `pageSize` integer

## Response `200`

- SearchModsResponse
  - `data` Mod[] — The response data
    - `id` integer — The mod id
    - `gameId` integer — The game id this mod is for
    - `name` string — The name of the mod
    - `slug` string — The mod slug that would appear in the URL
    - `links` ModLinks
      - `websiteUrl` string
      - `wikiUrl` string
      - `issuesUrl` string
      - `sourceUrl` string
    - `summary` string — Mod summary
    - `status` 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 — 1 = New 2 = ChangesRequired 3 = UnderSoftReview 4 = Approved 5 = Rejected 6 = ChangesMade 7 = Inactive 8 = Abandoned 9 = Deleted 10 = UnderReview
    - `downloadCount` integer — Number of downloads for the mod
    - `isFeatured` boolean — Whether the mod is included in the featured mods list
    - `primaryCategoryId` integer — The main category of the mod as it was chosen by the mod author
    - `categories` Category[] — List of categories that this mod is related to
      - `id` integer — The category id
      - `gameId` integer — The game id related to the category
      - `name` string — Category name
      - `slug` string — The category slug as it appear in the URL
      - `url` string — The category URL
      - `iconUrl` string — URL for the category icon
      - `dateModified` string, date-time — Last modified date of the category
      - `isClass` boolean, nullable — A top level category for other categories
      - `classId` integer, nullable — The class id of the category, meaning - the class of which this category is under
      - `parentCategoryId` integer, nullable — The parent category for this category
      - `displayIndex` integer, nullable — The display index for this category
    - `classId` integer, nullable — The class id this mod belongs to
    - `authors` ModAuthor[] — List of the mod's authors
      - `id` integer
      - `name` string
      - `url` string
      - `avatarUrl` string
    - `logo` ModAsset
      - `id` integer
      - `modId` integer
      - `title` string
      - `description` string
      - `thumbnailUrl` string
      - `url` string
    - `screenshots` ModAsset[] — List of screenshots assets
      - `id` integer
      - `modId` integer
      - `title` string
      - `description` string
      - `thumbnailUrl` string
      - `url` string
    - `videos` ModAsset[] — List of videos assets
      - `id` integer
      - `modId` integer
      - `title` string
      - `description` string
      - `thumbnailUrl` string
      - `url` string
    - `mainFileId` integer — The id of the main file of the mod
    - `latestFiles` File[] — List of latest files of the mod
      - `id` integer — The file id
      - `gameId` integer — The game id related to the mod that this file belongs to
      - `modId` integer — The mod id
      - `isAvailable` boolean — Whether the file is available to download
      - `displayName` string — Display name of the file
      - `fileName` string — Exact file name
      - `releaseType` 1 | 2 | 3 — 1 = Release 2 = Beta 3 = Alpha
      - `fileStatus` 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 — 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
      - `hashes` FileHash[] — The file hash (i.e. md5 or sha1)
        - `value` string
        - `algo` 1 | 2 — 1 = Sha1 2 = Md5
      - `fileDate` string, date-time — The file timestamp
      - `fileLength` integer — The file length in bytes
      - `downloadCount` integer — The number of downloads for the file
      - `fileSizeOnDisk` integer, nullable — The file's size on disk
      - `downloadUrl` string — The file download URL
      - `gameVersions` string[] — List of game versions this file is relevant for
      - `sortableGameVersions` SortableGameVersion[] — Metadata used for sorting by game versions
        - `gameVersionName` string — Original version name (e.g. 1.5b)
        - `gameVersionPadded` string — Used for sorting (e.g. 0000000001.0000000005)
        - `gameVersion` string — game version clean name (e.g. 1.5)
        - `gameVersionReleaseDate` string, date-time — Game version release date
        - `gameVersionTypeId` integer, nullable — Game version type id
      - `dependencies` FileDependency[] — List of dependencies files
        - `modId` integer
        - `relationType` 1 | 2 | 3 | 4 | 5 | 6 — 1 = EmbeddedLibrary 2 = OptionalDependency 3 = RequiredDependency 4 = Tool 5 = Incompatible 6 = Include
      - `exposeAsAlternative` boolean, nullable
      - `parentProjectFileId` integer, nullable
      - `alternateFileId` integer, nullable
      - `isServerPack` boolean, nullable
      - `serverPackFileId` integer, nullable
      - `isEarlyAccessContent` boolean, nullable
      - `earlyAccessEndDate` string, date-time, nullable
      - `fileFingerprint` integer
      - `modules` FileModule[]
        - `name` string
        - `fingerprint` integer
      - `cookingInfo` CookerInfo
        - `cookerVersion` string
        - `cookerRevision` string
    - `latestFilesIndexes` FileIndex[] — List of file related details for the latest files of the mod
      - `gameVersion` string
      - `fileId` integer
      - `filename` string
      - `releaseType` 1 | 2 | 3 — 1 = Release 2 = Beta 3 = Alpha
      - `gameVersionTypeId` integer, nullable
      - `modLoader` 0 | 1 | 2 | 3 | 4 | 5 | 6 — 0 = Any 1 = Forge 2 = Cauldron 3 = LiteLoader 4 = Fabric 5 = Quilt 6 = NeoForge
    - `latestEarlyAccessFilesIndexes` FileIndex[] — List of file related details for the latest early access files of the mod
      - `gameVersion` string
      - `fileId` integer
      - `filename` string
      - `releaseType` 1 | 2 | 3 — 1 = Release 2 = Beta 3 = Alpha
      - `gameVersionTypeId` integer, nullable
      - `modLoader` 0 | 1 | 2 | 3 | 4 | 5 | 6 — 0 = Any 1 = Forge 2 = Cauldron 3 = LiteLoader 4 = Fabric 5 = Quilt 6 = NeoForge
    - `dateCreated` string, date-time — The creation date of the mod
    - `dateModified` string, date-time — The last time the mod was modified
    - `dateReleased` string, date-time — The release date of the mod
    - `dateLastReleasedFile` string, date-time, nullable — The last file release date
    - `allowModDistribution` boolean, nullable — Is mod allowed to be distributed
    - `gamePopularityRank` integer — The mod popularity rank for the game
    - `isAvailable` boolean — 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` boolean, nullable — Does the mod enable comments
    - `thumbsUpCount` integer — The mod's thumbs up count
    - `ratingDetails` RatingDetails
      - `rating` number, nullable
      - `totalRatings` integer, nullable
      - `positiveRatings` integer, nullable
      - `score` 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 — 0 = NotEnoughReviews 1 = OverwhelminglyPositive 2 = VeryPositive 3 = Positive 4 = MostlyPositive 5 = Mixed 6 = MostlyNegative 7 = Negative 8 = VeryNegative 9 = OverwhelminglyNegative
    - `serverAffiliation` ServerAffiliation
      - `isEnabled` boolean
      - `isDefaultBanner` boolean
      - `hasDiscount` boolean
      - `affiliationService` 1 — 1 = Bisect
      - `defaultBannerCustomTitle` string
      - `customImageUrl` string
      - `affiliationLink` string
    - `socialLinks` SocialLink[] — The mod's social links
      - `type` 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 — 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
      - `url` string
    - `galleryItems` GalleryItem[] — The mod's gallery items
      - `description` string
      - `isFeatured` boolean
      - `displayIndex` integer, nullable
      - `title` string
      - `url` string
      - `thumbnailUrl` string
      - `type` 0 | 1 | 2 — 0 = None 1 = Screenshot 2 = EmbeddedVideo
    - `featuredProjectTag` 0 | 1 | 2 | 3 — 0 = None 1 = Sponsored 2 = HiddenGem 3 = Popular
  - `pagination` Pagination
    - `index` integer — A zero based index of the first item that is included in the response
    - `pageSize` integer — The requested number of items to be included in the response
    - `resultCount` integer — The actual number of items that were included in the response
    - `totalCount` integer — The total number of items available by the request

## Other responses

- `400`
- `500`

---

[API](https://skmtc.dev/curseforge/apis/curseforge-core-api.md) · [All operations](https://skmtc.dev/curseforge/apis/curseforge-core-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/curseforge/curseforge-core-api/revisions/7c05a23c8394/schema)
