Browse & search
Paginated collections with character, series and tier filters.
/api/cards?q=Eula&limit=5/api/search?q=GenshinEULA ORG / DEVELOPER PLATFORM
An entire anime universe. One clean API.
Build card collections, character searches and random drops into your WhatsApp bot.

01 / THE TOOLKIT
Search, spawn, collect.
Everything your next bot needs.
Paginated collections with character, series and tier filters.
/api/cards?q=Eula&limit=5/api/search?q=GenshinFresh random cards on every request. Unique selections within each pack.
/api/random?tier=S/api/pack?count=5&tier=6Stable snapshot IDs, batch lookup, and direct original image URLs.
/api/card?id=YOUR_CARD_ID/api/image?id=YOUR_CARD_IDSeries lists, tier totals, health status and a full JSON export.
/api/series?q=Genshin/api/stats · /api/tiersQuery parameters q character or series text · series exact series · tier 1–6 or S · page starting at 1 · limit 1–100 · count pack size 1–20.
Other routes /api/cards/:id · /api/batch?ids=id1,id2 (up to 50) · /api/health · /api/download ↗
All routes accept GET. Responses include success; lists return results and pagination. Errors use 400, 404 or 405. Images are hosted on Shoob’s CDN; animation is not verified by this snapshot.
Browse /api/events for slugs and counts. Use /api/event-cards?event=summer, /api/event-search?q=Eula, /api/event-random?event=gala or /api/event-pack?event=halloween&count=5. Filter with event, tier, q and series; paginate with page and limit.
Lookup: /api/event-card?id=SHOOB_ID · Images: /api/event-image?id=SHOOB_ID · Totals: /api/event-stats · Tiers: /api/event-tiers?event=summer. Event IDs remain original Shoob IDs. Random cards and packs are fresh on each request.
CARD ARCHIVE / EXPLORE
02 / LIVE PLAYGROUND
// Choose an endpoint and send a request. // Your response will appear here.
03 / WHATSAPP INTEGRATION
Use your deployed API URL and send the returned image through Baileys. No live scraping in the request path.
Card JSON is loaded once per process. Lookup maps, tier pools and bounded search caching keep warm requests lightweight. Hosting cold starts and CDN downloads still affect delivery time.
const base = 'https://YOUR-API-DOMAIN';
const response = await fetch(
`${base}/api/random?tier=5`
);
const card = await response.json();
if (!response.ok || !card.success) {
throw new Error(card.error);
}
await sock.sendMessage(chatId, {
image: { url: card.image },
caption: `${card.name}\n` +
`${card.series} • Tier ${card.tier}`
});