...

API Documentation

Access your Protect the Pod data programmatically. Authenticated endpoints for your pools, drafts, decks, and picks.

Authentication

Checking login status...

Include your token as a header in authenticated requests:

Authorization: Bearer YOUR_TOKEN

Rate Limiting

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.

Draft Log Public

GET/api/public/draft-log/:shareId

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.

Path Parameters

ParameterTypeDescription
shareIdstringThe draft share ID (from the draft URL)

Example

curl "https://protectthepod.com/api/public/draft-log/abc123"

Response

{
  "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"
      }
    ]
  }
}

Fields

FieldDescription
idUnique card ID (primary key from CMS)
numberSet-number identifier (e.g. JTL-42) — display only, not a unique key
titleCard name
subtitleCard subtitle, or null
treatmentNormal, Foil, Hyperspace, Hyperspace Foil, or Showcase
leaderPicksAlways 3 per seat (leader draft rounds 1-3)

Error Codes

  • 400 Draft is not complete yet
  • 403 Draft log is not public
  • 404 Draft not found
  • 429 Rate limit exceeded

Your Pools

GET/api/me/pools

Returns a list of your sealed and draft pools with summary info.

Query Parameters

ParameterTypeDescription
typestringFilter by pool type: sealed, draft, chaos_sealed, etc.
limitnumberMax results (default 50, max 100)
offsetnumberPagination offset (default 0)

Example

curl "https://protectthepod.com/api/me/pools?limit=10" \
  -H "Authorization: Bearer YOUR_TOKEN"

Response

{
  "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
  }
}

Pool Detail

GET/api/me/pools/:shareId

Returns the full card list and deck for one of your pools.

Example

curl "https://protectthepod.com/api/me/pools/abc123" \
  -H "Authorization: Bearer YOUR_TOKEN"

Response

{
  "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": [ ... ]
    }
  }
}

Your Drafts

GET/api/me/drafts

Returns a list of draft pods you have participated in.

Query Parameters

ParameterTypeDescription
statusstringFilter by status: complete, waiting, drafting, building
limitnumberMax results (default 50, max 100)
offsetnumberPagination offset (default 0)

Example

curl "https://protectthepod.com/api/me/drafts?status=complete" \
  -H "Authorization: Bearer YOUR_TOKEN"

Response

{
  "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"
      }
    ]
  }
}

Draft Picks

GET/api/me/drafts/:shareId/picks

Returns your individual card picks from a draft, in order.

Example

curl "https://protectthepod.com/api/me/drafts/abc123/picks" \
  -H "Authorization: Bearer YOUR_TOKEN"

Response

{
  "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"
      }
    ]
  }
}

Your Decks

GET/api/me/decks

Returns your built decks with leader, base, main deck, and sideboard.

Example

curl "https://protectthepod.com/api/me/decks" \
  -H "Authorization: Bearer YOUR_TOKEN"

Response

{
  "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"
      }
    ]
  }
}

Common Error Codes

  • 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