Home Items Users Tools Settings
Reference

API

Public read-only API. All endpoints return JSON and are cached for 60 seconds unless noted. Please credit ps99rap if you're using the API's.

Base URL https://ps99rap.com
Items
GET /api/items

Returns all tracked items with their current data.

Object mapping item ID -> item object (name, rap, exists, category, modifiers, ...)
GET /api/items/bulk

Returns rap and exists for a list of item IDs.

ids query Comma-separated item IDs required
Object mapping item ID -> { rap, exists }
GET /api/items/rap_histories

Returns RAP history for multiple items.

ids query Comma-separated item IDs required
last query Number of most recent data points to return. Defaults to 0 (all).
Object mapping item ID -> [[timestamp, rap], ...]
GET /api/items/exists_histories

Returns exists (supply) history for multiple items.

ids query Comma-separated item IDs required
last query Number of most recent data points to return. Defaults to 0 (all).
Object mapping item ID -> [[timestamp, exists], ...]
GET /api/items/exists_rates

Returns the current exists growth rate (per hour) for all items that have one.

Object mapping item ID -> rate (number, exists/hr)
GET /api/search

Returns the full search index. Useful for autocomplete.

Object mapping item ID -> name string
GET /api/meta

Returns tier and variant metadata for items that have it. Omits items with no special tier or variant.

Object mapping item ID -> { t?: 'huge'|'titanic'|'gargantuan', v?: 'shiny'|'golden'|'rainbow'|'shiny_golden'|'shiny_rainbow' }
GET /api/item/{base_id}

Returns full data for a single item.

base_id path Item ID, e.g. Huge_Cat required
{ success, data: item object }
GET /api/item/{base_id}/rap_history

Returns full RAP history for a single item.

base_id path Item ID required
{ success, data: [[timestamp, rap], ...] }
GET /api/item/{base_id}/exists_history

Returns full exists (supply) history for a single item.

base_id path Item ID required
{ success, data: [[timestamp, exists], ...] }
GET /api/item/{base_id}/variants

Returns all variants of an item (regular, golden, rainbow, shiny) or tiers if applicable.

base_id path Base item ID without variant prefix required
{ success, data: [item objects], kind: 'variants'|'tiers' }
Market
GET /api/market

Returns time-series data for market-wide stats: market cap, total/huge/titanic/gargantuan exists and index histories.

{ market_cap_history, total_exists_history, huge_exists_history, titanic_exists_history, gargantuan_exists_history, huge_index_history, titanic_index_history, gargantuan_index_history } - each [[timestamp, value], ...]
GET /api/movers

Returns the top RAP and exists movers per item category over the past 24 hours.

Object with category keys, each containing rap and exists arrays of top movers
GET /api/tier_rates

Returns the linear regression exists growth rate (per hour) for Huge, Titanic, and Gargantuan tiers based on recent history.

{ huge: number|null, titanic: number|null, gargantuan: number|null }
Enchants
GET /api/enchants

Returns all enchants with RAP, power, diminishing threshold, empowered boost, and category.

Object mapping enchant ID -> { name, rap, power, diminish_power_threshold, empowered_boost, internal_category }
Tools
GET /api/eggs

Returns all eggs with their pet pools and estimated hatch percentages derived from exists counts.

Object mapping egg ID -> { name, pets: [[pet_id, weight, estimated_pct], ...], ... }
GET /api/get/exclusive-daycare

Returns all Huge, Titanic, and Gargantuan items with rap, exists, normal_exists, variant, and type - used for daycare cost calculations.

Array of { id, name, rap, exists, normal_exists, variant, type }
Meta
GET /api/changelog

Returns the full site changelog.

Array of update objects { date, items: [string, ...] }
GET /api/timeline

Returns all non-variant items grouped by their creation date.

Object mapping date string (YYYY-MM-DD) -> [{ id, name, category, thumbnail }, ...]
Live
GET /api/live/stream

Server-Sent Events stream for live exists change events. Sends an init event with recent history on connect, then pushes new events as they arrive. Sends a ping every 25 seconds to keep the connection alive.

SSE stream. Init event: { type: 'init', events: [...], count: number }. Live event: { type: 'event', ... }. Keepalive: { type: 'ping' }