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
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Waitlist UUID. |
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
page | integer | No | 1 | Page number for pagination. |
per_page | integer | No | 10 | Items per page (min: 1, max: 100). |
sort | string | No | -joined_at | Sort 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. |
query | string | No | — | 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_from | string | No | — | Only signups whose joined_at is on or after this date (inclusive), YYYY-MM-DD. No date window when omitted. |
joined_to | string | No | — | 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.
| Field | Type | Nullable | Description |
|---|---|---|---|
id | string | No | Signup UUID. |
email | string | No | Signup email. |
first_name | string | Yes | First name. Null when the signup did not include one. |
last_name | string | Yes | Last name. Null when the signup did not include one. |
full_name | string | Yes | First and last name joined with a space, trimmed. Null only when both names are empty. |
terms_accepted | boolean | No | Whether the signup accepted the terms. |
joined_at | string | No | When the person first signed up (ISO 8601). |
custom_field_answers | object | No | Answers submitted with the signup, keyed by the custom field name. {} when there are no answers. |
Pagination Object
| Field | Type | Description |
|---|---|---|
current_page | integer | Current page number. |
total_pages | integer | Total number of pages. |
per_page | integer | Effective page size (echoes the per_page request parameter). |
total | integer | Total 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."
}