Partner API

For Developers

Create and manage events on The Guest List from your own platform, and get webhooks as RSVPs come in. Built for partners like Mahjongers who want their creators to send guests to a Guest List RSVP page.

Authentication

Every request needs your partner API key as a bearer token. Keys are issued by The Guest List team — reach out to get one.

Authorization: Bearer glk_xxxxxxxxxxxxxxxxxxxxxxxx

Base URLs: https://theguestlist.social/api/partner and https://theguestlist.social/partner

Endpoints

POST/partner/events

Create a live or draft event. title is required; customSlug is normalized automatically.

Request body

{
  "title": "Sunday Mahjong Open Play",
  "description": "Beginner-friendly open play hosted by Jade Room.",
  "date": "2026-07-12",
  "time": "18:30",
  "timezone": "Asia/Kolkata",
  "location": "Jade Room Studio",
  "address": "Hyderabad, Telangana",
  "capacity": 16,
  "tables": { "count": 4, "seatsPerTable": 4 },
  "priceLabel": "Free RSVP",
  "creatorHandle": "jaderoom",
  "image": "https://example.com/cover.jpg",
  "category": "mahjong",
  "status": "live",
  "customSlug": "jaderoom-sunday-open-play",
  "source": "mahjongers",
  "waitlistEnabled": true,
  "customFields": [
    { "key": "mahjong_variant", "label": "Mahjong variant", "type": "select", "options": ["Chinese", "Riichi"] },
    { "key": "skill_level", "label": "Skill level", "type": "select", "options": ["Beginner", "Intermediate"] }
  ]
}

Response

{
  "eventId": "evt_123",
  "id": "evt_123",
  "slug": "jaderoom-sunday-open-play",
  "rsvpUrl": "https://theguestlist.social/e/jaderoom-sunday-open-play",
  "status": "live",
  "rsvpStatus": "open",
  "capacity": 16,
  "seatsAvailable": 16,
  "tables": { "tableCount": 4, "seatsPerTable": 4, "totalSeats": 16 }
}
PATCH/partner/events/:id

Update date, capacity, description, location, image, table setup, custom fields, or status.

Response

{
  "eventId": "evt_123",
  "status": "live",
  "rsvpStatus": "open",
  "capacity": 16,
  "seatsAvailable": 12
}
POST/partner/events/:id/publish

Marks a draft event live and allows RSVPs.

Response

{ "eventId": "evt_123", "status": "live", "rsvpStatus": "open" }
POST/partner/events/:id/unpublish

Marks an event draft. Draft partner events keep their RSVP URL but do not accept RSVPs.

Response

{ "eventId": "evt_123", "status": "draft", "rsvpStatus": "closed" }
POST/partner/events/:id/cancel

Cancels the event, blocks new RSVPs (410 Gone), and fires an event.cancelled webhook.

Response

{ "eventId": "evt_123", "status": "cancelled", "rsvpStatus": "cancelled" }
GET/partner/events/:id

Get RSVP URL, event status, capacity, table grouping, and creator mapping.

Response

{
  "eventId": "evt_123",
  "id": "evt_123",
  "slug": "jaderoom-sunday-open-play",
  "rsvpUrl": "https://theguestlist.social/e/jaderoom-sunday-open-play",
  "status": "live",
  "rsvpStatus": "open",
  "title": "Sunday Mahjong Open Play",
  "capacity": 16,
  "confirmed": 12,
  "waitlisted": 2,
  "seatsAvailable": 4,
  "priceLabel": "Free RSVP",
  "tables": { "tableCount": 4, "seatsPerTable": 4, "totalSeats": 16 },
  "full": false,
  "source": "mahjongers",
  "creatorHandle": "jaderoom"
}
GET/partner/events/:id/rsvps

List RSVP rows for the creator dashboard, including seat count and custom field answers.

Response

{
  "eventId": "evt_123",
  "status": "live",
  "rsvpStatus": "open",
  "confirmed": 12,
  "waitlisted": 2,
  "capacity": 16,
  "seatsAvailable": 4,
  "rsvps": [
    {
      "id": "rsvp_1",
      "name": "Ananya",
      "email": "ananya@example.com",
      "phone": "+91...",
      "seatCount": 1,
      "status": "confirmed",
      "answers": { "Mahjong variant": "Chinese", "Skill level": "Beginner" },
      "createdAt": "2026-07-01T10:00:00Z"
    }
  ]
}

Errors

Endpoints only return events/RSVPs created by your own API key — requesting another partner's event returns 404.

StatusMeaning
400Missing required field (e.g. title)
401Missing or invalid API key
404Event not found, or not owned by your key
410Event has been cancelled (public RSVP endpoint)
500Server error

Webhooks

If your key has a webhook URL configured, we POST JSON to it as RSVPs change, signed with your webhook secret:

X-Guestlist-Signature: sha256=<hmac-sha256 of the raw body, using your webhook secret>
EventFires when
rsvp.createdA guest RSVPs to your event
waitlist.joinedA guest joins the waitlist
rsvp.cancelledAn RSVP is removed
event.fullThe event reaches confirmed seat capacity
event.cancelledYou cancel the event via the API
guest.checked_inThe host checks a guest in at the door

Payload shape

{
  "type": "rsvp.created",
  "eventId": "evt_123",
  "creatorHandle": "jaderoom",
  "rsvp": {
    "id": "rsvp_1",
    "name": "Ananya",
    "email": "ananya@example.com",
    "phone": "+91...",
    "status": "confirmed",
    "seatCount": 1,
    "guestCount": 1
  }
}

(rsvp is omitted for event.full and event.cancelled.) Delivery is retried every 15 minutes for up to 5 attempts if your endpoint doesn't return a 2xx — make your handler idempotent.

Want a key?

Email hello@theguestlist.social to get a partner API key set up for your platform.