Public API

A typed, documented read API. The desktop app, CLI/MCP, and third parties all consume it. All reads are cacheable at the edge. Authed writes require a bearer token.

Endpoints

GET/api/mods?q=&category=&loader_types=&side=&platforms=&game_version=&tags=&dedicated_server_only=&include_nsfw=&sort=&page=&page_size=

Search mods with faceted filters. Returns { mods, total, page, page_size, facets }.

GET/api/mods/{idOrSlug}

Mod detail: metadata, compatibility, author.

GET/api/mods/{idOrSlug}/files?include_old=1

List a mod's files grouped by category with scan + analysis status.

GET/api/mods/{idOrSlug}/compatibility?game_version=&platform=

Compatibility verdict for a mod against a game version + platform. The headline feature.

GET/api/mods/{idOrSlug}/reviews?page=

Paginated star ratings + written reviews.

GET/api/mods/{idOrSlug}/bugs?page=

Paginated bug reports.

GET/api/categories

All categories.

GET/api/game-versions

The current Palworld game version. Production currently exposes only 1.0.

GET/api/authors/{handle}

Author profile + their mods.

GET/api/collections/{idOrSlug}

Collection detail with pinned versions + load order.

GET/api/landing?section=trending|hot|newest|recently_updated|most_endorsed|editors_picks

Curated landing sections.

GET/feed?category=&game_version=

RSS feed of latest and updated mods.

GET/api/download/{fileId}

Record a download, redirect to signed R2 URL. Only clean files.

Compatibility verdict

The compatibility endpoint returns one of four verdicts:

  • compatible - explicitly supports your game version + platform.
  • likely_broken - its newest supported version predates yours.
  • unknown - no game versions declared.
  • incompatible - platform or side mismatch.

TypeScript client

Use @palmods/api-client for typed access:

import { PalModsClient } from '@palmods/api-client';
const client = new PalModsClient({ baseUrl: 'https://palmods.gg/api' });
const result = await client.checkCompatibility('stack-size-x50', {
  game_version: '1.0',
  platform: 'steam',
});
console.log(result.verdict); // 'compatible' | 'likely_broken' | ...

Back to docs