QueueUp / docs

Subscribers

List your waitlist's subscribers and create new signups from your own backend.

The subscribers endpoints are the v1 surface of the customer API. List the people who joined a waitlist, or create a signup from your own server.

All requests require a Bearer key. See Authentication.

List subscribers

GET https://api.getqueueup.com/v1/api/waitlists/{waitlist_id}/subscribers

Required scope: subscribers:read.

Returns paginated subscribers for the named waitlist. Use this to sync to a CRM, build your own analytics dashboard, or back up data periodically.

Query params

ParamTypeDefaultNotes
pageinteger11-indexed.
limitinteger25Max 200.
qstringemptySubstring match against the email address (case-insensitive).

Response

200 OK
{
  "items": [
    {
      "id": "8401",
      "email": "[email protected]",
      "joined_at": "2026-05-03T18:30:12Z",
      "position": 42,
      "referral_code": "K7M9PX",
      "referral_count": 3
    }
  ],
  "total": 1024,
  "page": 1,
  "limit": 25
}
FieldTypeNotes
idstringStable id for this subscriber.
emailstringDisplay case preserved as submitted.
joined_atstringRFC 3339 timestamp.
positionintegerCurrent spot in line, computed live (not stored).
referral_codestringThe 6-character code minted for this subscriber. Empty when referrals are off on the waitlist.
referral_countintegerHow many other subscribers used this person’s code.

The hosted-status capability token is not included; use the panel’s Export CSV if you need it.

Errors

StatusWhen
403 insufficient_scopeKey doesn’t carry subscribers:read.
404 not_foundWaitlist doesn’t exist or is archived.

Create a subscriber

POST https://api.getqueueup.com/v1/api/waitlists/{waitlist_id}/subscribers

Required scope: subscribers:write.

Server-to-server signup. Use this when your own backend already knows it has a real user (e.g. a confirmed signup on your site, a row imported from another system).

This path skips three of the public endpoint’s anti-abuse checks: Origin allowlist, Challenge, and Proof of Work. The Bearer key already proves tenant identity, so requiring the visitor’s browser to solve a puzzle would be ceremony for ceremony’s sake. Other gates the operator turned on still apply: per-email throttle, MX verification, disposable-email blocklist, and (with the caveat below) geo restrictions.

Request body

{
  "email": "[email protected]",
  "referral_code": "K7M9PX",
  "client_country": "DE"
}
FieldTypeRequiredNotes
emailstringyesRFC 5322 syntax. Normalised server-side.
referral_codestringnoForwarded to the referral attribution system. Invalid or cross-waitlist codes are silently ignored.
client_countrystringnoISO 3166-1 alpha-2. The geo gate uses this when set. Without it, the gate falls back to the country of the immediate request peer (your server, on a server-to-server call), which is rarely what you want. Pass the visitor’s country here if geo rules are configured on the waitlist.

Response

202 Accepted
{
  "status": "accepted",
  "status_token": "9b1f4a32b...",
  "referral_code": "Q4M6PX",
  "status_url": "https://app.getqueueup.com/s/9b1f4a32b..."
}

The shape mirrors the public Subscribe endpoint so a single client can drive both. Empty status_token and referral_code mean the waitlist has referrals turned off.

Errors

StatusWhen
400 invalid_emailEmail failed RFC 5322 validation.
403 insufficient_scopeKey doesn’t carry subscribers:write.
404 not_foundWaitlist doesn’t exist or is archived.
429 rate_limit_exceededPer-key throttle exceeded.