Skip to main content

Get Waitlist Members

Retrieve a paginated list of people who signed up for one waitlist.

Signups are returned newest first. The waitlist must belong to this store and its product must still exist — otherwise the response is 404, not an empty page. Omitting joined_from and joined_to applies no date window. joined_at is the original signup time and does not change when the same email signs up again.

Request​

GET /waitlists/{id}/members

Path Parameters​

ParameterTypeRequiredDescription
idstringYesWaitlist UUID.

Query Parameters​

ParameterTypeRequiredDefaultDescription
pageintegerNo1Page number for pagination.
per_pageintegerNo10Items per page (min: 1, max: 100).
sortstringNo-joined_atSort field: joined_at or full_name. Prefix with - for descending. full_name sorts alphabetically by the full name. A signup without both a first and a last name sorts last in either direction.
querystringNo—A valid email matches email exactly. Anything else is a partial match on full_name. A signup with only a first name or only a last name is not found by a name search, even though full_name can still show that one name.
joined_fromstringNo—Only signups whose joined_at is on or after this date (inclusive), YYYY-MM-DD. No date window when omitted.
joined_tostringNo—Only signups whose joined_at is on or before this date (inclusive), YYYY-MM-DD. No date window when omitted.

Omitting a filter or passing it empty means no filter on that field. A present but unparseable value returns 400 (see Bad Request). That includes a malformed waitlist id, a malformed date, an out-of-range per_page, or an unknown sort field. The query search term is free text and is always accepted.

Ordering: Signups default to joined_at descending (newest signup first) unless sort is supplied. Equal values are ordered most recently joined first.

Counting matches: every response includes the filtered total in pagination.total. To get only a count, request per_page=1 with your filters and read pagination.total.

Example Request​

curl -X GET "https://cart.easy.tools/api/v1/waitlists/550e8400-e29b-41d4-a716-446655440000/members" \
-H "Authorization: Bearer YOUR_API_TOKEN"

Response​

Success Response (200)​

Returns a paginated list of signups for the Workshop waitlist. A signup with no answers returns "custom_field_answers": {}.

{
"items": [
{
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"email": "ada@example.com",
"first_name": "Ada",
"last_name": "Lovelace",
"full_name": "Ada Lovelace",
"terms_accepted": true,
"joined_at": "2026-09-01T11:00:00+00:00",
"custom_field_answers": {
"company": "Analytical Engines",
"newsletter": true
}
}
],
"pagination": {
"current_page": 1,
"total_pages": 1,
"per_page": 10,
"total": 1
}
}

Response Fields​

Field reference: Waitlist Member object.

FieldTypeNullableDescription
idstringNoSignup UUID.
emailstringNoSignup email.
first_namestringYesFirst name. Null when the signup did not include one.
last_namestringYesLast name. Null when the signup did not include one.
full_namestringYesFirst and last name joined with a space, trimmed. Null only when both names are empty.
terms_acceptedbooleanNoWhether the signup accepted the terms.
joined_atstringNoWhen the person first signed up (ISO 8601).
custom_field_answersobjectNoAnswers submitted with the signup, keyed by the custom field name. {} when there are no answers.

Pagination Object​

FieldTypeDescription
current_pageintegerCurrent page number.
total_pagesintegerTotal number of pages.
per_pageintegerEffective page size (echoes the per_page request parameter).
totalintegerTotal number of signups matching the applied filters, across all pages.

Error Responses​

Bad Request (400)​

Returned when id is not a UUID. A present but unparseable filter uses the same shape as Get Waitlists: Invalid value for '<field>': '<value>'.

{
"message": "Invalid waitlist ID"
}

Not Found Error (404)​

Returned when the waitlist does not exist in this store, or its product no longer exists. A waitlist that exists and has no matching signups returns 200 with "items": [].

{
"message": "Waitlist with ID 8d5c2e19-4f76-4a3b-9c14-1e6b55a40d3f not found"
}

Unauthorized Error (401)​

{
"message": "Unauthenticated."
}

Forbidden Error (403)​

Returned when your API key has not been granted access to the requested store.

{
"message": "You do not have API access to the requested store."
}

Rate Limit Error (429 Too Many Requests)​

Returned when you exceed the rate limit. The Retry-After response header gives the number of seconds to wait.

{
"message": "Too many requests. Please retry after 60 seconds."
}