Skip to main content

Overview

The Manifest endpoint provides the complete RaidHub manifest, which contains definitions for all activities and versions tracked in the RaidHub database. This is a foundational endpoint that returns all the metadata needed to interpret other API responses, including activity names, version types, raid categorizations, and visual assets.
This endpoint is cached for 30 seconds to optimize performance.

Endpoint

curl https://api.raidhub.io/manifest \
  -H "X-API-Key: YOUR_API_KEY"

Request

Method: GET URL: /manifest Parameters: None

Response

The response includes all activity and version definitions, along with categorized lists of raids and their characteristics.

Response Fields

hashes
object
required
A mapping of Bungie.net activity hashes to RaidHub activityId and versionId. Each key is a uint32 hash from Bungie’s API.
activityDefinitions
object
required
A mapping of each RaidHub activityId to its complete definition. Keys are activity IDs as strings.
versionDefinitions
object
required
A mapping of each RaidHub versionId to its definition. Versions represent difficulty modes like Normal, Master, Prestige, or specific encounter variants.
listedRaidIds
array
required
Array of activity IDs for all raids, ordered from newest to oldest. Sunset raids are listed at the end.
sunsetRaidIds
array
required
Array of activity IDs for raids that have been removed from the game (vaulted content).
prestigeRaidIds
array
required
Array of activity IDs for raids that had a prestige difficulty mode.
masterRaidIds
array
required
Array of activity IDs for raids that have a master difficulty mode available.
contestRaidIds
array
required
Array of activity IDs for raids that had contest mode enabled at launch.
resprisedRaidIds
array
required
Array of activity IDs for raids that were reprised from Destiny 1 to Destiny 2.
resprisedChallengeVersionIds
array
required
Array of version IDs that represent challenge modes for reprised raids.
pantheonIds
array
required
Array of activity IDs for Pantheon activities.
versionsForActivity
object
required
A mapping of activity IDs to arrays of version IDs available for that activity. Keys are activity IDs as strings.
rankingTiers
array
required
Array of ranking tier definitions used for player performance classifications.
feats
array
required
Array of feat (modifier/challenge) definitions available in raids.
splashUrls
object
required
A mapping of activity IDs to arrays of splash image URLs hosted on the RaidHub CDN.

Example Response

{
  "minted": "2026-03-03T23:45:12.000Z",
  "success": true,
  "response": {
    "hashes": {
      "2122313384": {
        "activityId": 9,
        "versionId": 1
      },
      "3881495763": {
        "activityId": 9,
        "versionId": 4
      }
    },
    "activityDefinitions": {
      "9": {
        "id": 9,
        "name": "Vault of Glass",
        "path": "vaultofglass",
        "isSunset": false,
        "isRaid": true,
        "releaseDate": "2021-05-22T00:00:00.000Z",
        "dayOneEnd": "2021-05-23T00:00:00.000Z",
        "contestEnd": "2021-05-23T00:00:00.000Z",
        "weekOneEnd": "2021-05-25T00:00:00.000Z",
        "milestoneHash": 1888320892,
        "splashSlug": "vog"
      }
    },
    "versionDefinitions": {
      "1": {
        "id": 1,
        "name": "Standard",
        "path": "normal",
        "associatedActivityId": null,
        "isChallengeMode": false
      },
      "4": {
        "id": 4,
        "name": "Master",
        "path": "master",
        "associatedActivityId": null,
        "isChallengeMode": false
      }
    },
    "listedRaidIds": [14, 13, 12, 11, 10, 9, 8, 7],
    "sunsetRaidIds": [1, 2, 3, 4, 5, 6],
    "prestigeRaidIds": [1, 2, 3, 4, 5],
    "masterRaidIds": [8, 9, 10, 11, 12, 13],
    "contestRaidIds": [7, 8, 9, 10, 11, 12, 13, 14],
    "resprisedRaidIds": [7, 9, 11],
    "resprisedChallengeVersionIds": [78, 79, 80],
    "pantheonIds": [101],
    "versionsForActivity": {
      "9": [1, 4, 78, 79, 80]
    },
    "rankingTiers": [
      {
        "minPercentile": 0.95,
        "tierName": "Gold",
        "tierColor": "text-yellow-500"
      },
      {
        "minPercentile": 0.75,
        "tierName": "Silver",
        "tierColor": "text-gray-400"
      }
    ],
    "feats": [
      {
        "hash": 3809790115,
        "skullHash": 3809790115,
        "name": "Arc Surge",
        "shortName": "Arc",
        "description": "Arc damage from all sources increased.",
        "shortDescription": "Arc damage increased",
        "iconPath": "/img/misc/missing_icon_d2.png",
        "modifierPowerContribution": 0
      }
    ],
    "splashUrls": {
      "9": [
        {
          "slug": "vog",
          "size": "medium",
          "fileName": "medium.jpg",
          "fileFormat": "jpg",
          "path": "content/splash/vog/medium.jpg",
          "url": "https://cdn.raidhub.io/content/splash/vog/medium.jpg"
        }
      ]
    }
  }
}

Use Cases

Resolving Activity Names

The manifest allows you to convert activity IDs from other endpoints into human-readable names:
const manifest = await fetchManifest();
const activityId = 9;
const activityName = manifest.response.activityDefinitions[activityId].name;
// "Vault of Glass"

Converting Bungie Hashes

When working with Bungie.net API data, use the hashes mapping to identify RaidHub activities:
const bungieHash = 2122313384;
const { activityId, versionId } = manifest.response.hashes[bungieHash];
// activityId: 9, versionId: 1 (Vault of Glass Normal)

Filtering Active Raids

Display only currently active (non-sunset) raids:
const activeRaids = manifest.response.listedRaidIds
  .filter(id => !manifest.response.sunsetRaidIds.includes(id))
  .map(id => manifest.response.activityDefinitions[id]);

Loading Raid Images

Retrieve splash images for raid selection screens:
const activityId = 9;
const images = manifest.response.splashUrls[activityId];
const mediumImage = images.find(img => img.size === 'medium');
// Use mediumImage.url in your UI

Checking Raid Features

Determine if a raid has specific features or modes:
const activityId = 9;
const hasMaster = manifest.response.masterRaidIds.includes(activityId);
const hadContest = manifest.response.contestRaidIds.includes(activityId);
const isReprised = manifest.response.resprisedRaidIds.includes(activityId);

Caching Recommendations

The manifest data changes infrequently (typically only when new content is released). Consider caching the manifest response in your application with a TTL of 5-10 minutes to reduce API calls and improve performance.
// Example caching pattern
let cachedManifest = null;
let cacheTime = null;
const CACHE_TTL = 5 * 60 * 1000; // 5 minutes

async function getManifest() {
  const now = Date.now();
  if (cachedManifest && cacheTime && (now - cacheTime) < CACHE_TTL) {
    return cachedManifest;
  }
  
  cachedManifest = await fetchManifest();
  cacheTime = now;
  return cachedManifest;
}

Build docs developers (and LLMs) love