Access your Protect the Pod data programmatically. Authenticated endpoints for your pools, drafts, decks, and picks.
Checking login status...
Include your token as a header in authenticated requests:
Authorization: Bearer YOUR_TOKEN
All API endpoints are rate limited to 60 requests per minute per IP address.
When rate limited, you will receive a 429 response with a Retry-After header.
Returns anonymized draft pick data for a completed draft that has been made public by the host. Player identities are replaced with seat numbers for privacy. No authentication required.
| Parameter | Type | Description |
|---|---|---|
shareId | string | The draft share ID (from the draft URL) |
curl "https://protectthepod.com/api/public/draft-log/abc123"
{
"data": {
"draft": {
"setCode": "JTL",
"setName": "Jump to Lightspeed",
"totalSeats": 4,
"startedAt": "2026-01-01T00:00:00.000Z",
"completedAt": "2026-01-01T01:30:00.000Z"
},
"leaderPicks": [
{
"seat": 1,
"leaderRound": 1,
"id": "19476",
"number": "JTL-1",
"title": "Asajj Ventress",
"subtitle": "I Work Alone",
"rarity": "Rare",
"type": "Leader",
"aspects": ["Vigilance", "Villainy"],
"cost": 6,
"treatment": "Normal"
}
],
"picks": [
{
"seat": 1,
"packNumber": 1,
"pickInPack": 1,
"pickNumber": 1,
"id": "19542",
"number": "JTL-42",
"title": "Han Solo",
"subtitle": "Worth the Risk",
"rarity": "Rare",
"type": "Unit",
"aspects": ["Cunning", "Heroism"],
"cost": 5,
"treatment": "Normal"
}
]
}
}| Field | Description |
|---|---|
id | Unique card ID (primary key from CMS) |
number | Set-number identifier (e.g. JTL-42) — display only, not a unique key |
title | Card name |
subtitle | Card subtitle, or null |
treatment | Normal, Foil, Hyperspace, Hyperspace Foil, or Showcase |
leaderPicks | Always 3 per seat (leader draft rounds 1-3) |
400 Draft is not complete yet403 Draft log is not public404 Draft not found429 Rate limit exceededReturns a list of your sealed and draft pools with summary info.
| Parameter | Type | Description |
|---|---|---|
type | string | Filter by pool type: sealed, draft, chaos_sealed, etc. |
limit | number | Max results (default 50, max 100) |
offset | number | Pagination offset (default 0) |
curl "https://protectthepod.com/api/me/pools?limit=10" \ -H "Authorization: Bearer YOUR_TOKEN"
{
"data": {
"pools": [
{
"shareId": "abc123",
"setCode": "JTL",
"setName": "Jump to Lightspeed",
"poolType": "sealed",
"name": "JTL Sealed 01/15/2026",
"cardCount": 96,
"leaderName": "Han Solo",
"baseName": "Echo Base",
"mainDeckCount": 30,
"createdAt": "2026-01-15T00:00:00.000Z"
}
],
"total": 42
}
}Returns the full card list and deck for one of your pools.
curl "https://protectthepod.com/api/me/pools/abc123" \ -H "Authorization: Bearer YOUR_TOKEN"
{
"data": {
"shareId": "abc123",
"setCode": "JTL",
"poolType": "sealed",
"cards": [
{ "id": "19542", "cardId": "JTL-042", "name": "Han Solo", "rarity": "Rare", ... }
],
"deck": {
"leader": { "id": "19476", "cardId": "JTL-001", "name": "Luke Skywalker", ... },
"base": { "id": "19580", "cardId": "JTL-080", "name": "Echo Base", ... },
"mainDeck": [ ... ],
"sideboard": [ ... ]
}
}
}Returns a list of draft pods you have participated in.
| Parameter | Type | Description |
|---|---|---|
status | string | Filter by status: complete, waiting, drafting, building |
limit | number | Max results (default 50, max 100) |
offset | number | Pagination offset (default 0) |
curl "https://protectthepod.com/api/me/drafts?status=complete" \ -H "Authorization: Bearer YOUR_TOKEN"
{
"data": {
"drafts": [
{
"shareId": "xyz789",
"setCode": "JTL",
"setName": "Jump to Lightspeed",
"status": "complete",
"playerCount": 4,
"isHost": true,
"poolShareId": "abc123",
"name": "Friday Draft",
"leaderName": "Han Solo",
"baseName": "Echo Base",
"mainDeckCount": 30,
"createdAt": "2026-01-15T00:00:00.000Z",
"completedAt": "2026-01-15T01:30:00.000Z"
}
]
}
}Returns your individual card picks from a draft, in order.
curl "https://protectthepod.com/api/me/drafts/abc123/picks" \ -H "Authorization: Bearer YOUR_TOKEN"
{
"data": {
"draft": {
"shareId": "xyz789",
"setCode": "JTL",
"setName": "Jump to Lightspeed",
"status": "complete",
"startedAt": "2026-01-15T00:00:00.000Z",
"completedAt": "2026-01-15T01:30:00.000Z"
},
"leaderPicks": [
{
"leaderRound": 1,
"id": "19476",
"number": "JTL-1",
"title": "Asajj Ventress",
"subtitle": "I Work Alone",
"rarity": "Rare",
"type": "Leader",
"aspects": ["Vigilance", "Villainy"],
"cost": 6,
"treatment": "Normal"
}
],
"picks": [
{
"packNumber": 1,
"pickInPack": 1,
"pickNumber": 1,
"id": "19542",
"number": "JTL-42",
"title": "Han Solo",
"subtitle": "Worth the Risk",
"rarity": "Rare",
"type": "Unit",
"aspects": ["Cunning", "Heroism"],
"cost": 5,
"treatment": "Normal"
}
]
}
}Returns your built decks with leader, base, main deck, and sideboard.
curl "https://protectthepod.com/api/me/decks" \ -H "Authorization: Bearer YOUR_TOKEN"
{
"data": {
"decks": [
{
"poolShareId": "abc123",
"setCode": "JTL",
"setName": "Jump to Lightspeed",
"poolType": "sealed",
"leader": { "id": "19476", "cardId": "JTL-001", "name": "Luke Skywalker", ... },
"base": { "id": "19580", "cardId": "JTL-080", "name": "Echo Base", ... },
"deck": [ ... ],
"sideboard": [ ... ],
"builtAt": "2026-01-15T02:00:00.000Z"
}
]
}
}401 Authentication required (missing or invalid token)404 Resource not found (or not owned by you)429 Rate limit exceeded (60 req/min)500 Internal server error