Skip to content

Send us a guest list

POST /external/v1/guest-list-import adds names to one venue's guest list for one business date. It creates guest list entries only, not a reservation or a payment. It needs the guest-lists:write permission.

curl -X POST "https://production.speakeasygo.com/external/v1/guest-list-import?venueId=11111111-1111-4111-8111-111111111111&businessDate=2026-11-14" \
  -H "token: $SPEAKEASY_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 6f1c2a54-7b1e-4a53-9f55-1c6a0e8b2d11" \
  -d '[
    { "firstName": "Sam", "lastName": "Sample", "guests": { "total": 4 } },
    { "firstName": "Alex", "lastName": "Example", "guests": { "male": 2, "female": 3 }, "notes": "Birthday" }
  ]'

The request

Query parameter Meaning
venueId The venue, a UUID from GET /external/v1/venues
businessDate A date on the venue's calendar, YYYY-MM-DD. Not a UTC date.

A date has passed once the venue's next business day is about to start: the entries expire one minute before it. An expired date gets a 400 with GUEST_LIST_IMPORT_DATE_EXPIRED.

The body is a list of 1 to 250 entries, and at most 512 KiB.

Field Required Rules
firstName Yes Up to 100 characters, not blank
lastName Yes Up to 100 characters, not blank
guests Yes Either total (1 to 100), or male and female together, adding up to 1 to 100
notes No Up to 1,000 characters

Unknown fields in an entry are refused.

All or nothing. Every entry is checked first. If one fails, nothing is saved.

The answer

201 with one line per entry you sent. index counts from 0.

{
  "operationId": "7a1f3c9e-52b4-4f0a-9c55-0a6d1e7b3f21",
  "venueId": "11111111-1111-4111-8111-111111111111",
  "businessDate": "2026-11-14",
  "attribution": null,
  "createdCount": 2,
  "entries": [
    { "index": 0, "guestListEntryId": "0b6e7a1c-3c5d-4e2f-8a91-6d2f4b7c9e10" },
    { "index": 1, "guestListEntryId": "9c2d5f8a-1e3b-4a7c-b6d4-2f8e1c5a7b30" }
  ],
  "createdAt": "2026-11-05T12:00:00.000Z"
}

attribution shows the team member the entries are credited to, if your integration has one. See Team member credit.

Retries

Idempotency-Key is required. A retry with the same key and the same list gives you the first answer, and adds nothing. See Safe retries.

Errors

Status Code What it means
400 GUEST_LIST_IMPORT_VALIDATION_FAILED An entry or parameter is not valid. See errors.
400 GUEST_LIST_IMPORT_DATE_INVALID businessDate is not a real date
400 GUEST_LIST_IMPORT_DATE_EXPIRED That business date is over
400 GUEST_LIST_IMPORT_VENUE_CONFIGURATION_INVALID The venue is not set up for imports yet
403 GUEST_LIST_IMPORT_NOT_AUTHORIZED The credited team member is not active at this venue
404 GUEST_LIST_IMPORT_VENUE_NOT_FOUND Your key cannot reach this venue
413 The body is over 512 KiB
429 GUEST_LIST_IMPORT_REQUEST_RATE_LIMIT_EXCEEDED and others See Rate limits