> ## Documentation Index
> Fetch the complete documentation index at: https://docs.whop.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Waitlist Entry

A Waitlist Entry is a user's signup for a variant that requires seller approval. Joining doesn't grant a membership or charge a payment method; the seller approves or denies each signup.

Use the Waitlist Entries API to join a waitlist, read or cancel your own signups, and approve or deny the signups for accounts you operate.

## Endpoints

| Endpoint | Request |
| - | - |
| [List Waitlist Entries](/api-reference/beta/waitlist-entries/list-waitlist-entries) | <Badge color="blue" size="sm" stroke>GET</Badge> `/waitlist_entries` |
| [Retrieve Waitlist Entry](/api-reference/beta/waitlist-entries/retrieve-waitlist-entry) | <Badge color="blue" size="sm" stroke>GET</Badge> `/waitlist_entries/{id}` |
| [Create Waitlist Entry](/api-reference/beta/waitlist-entries/create-waitlist-entry) | <Badge color="green" size="sm" stroke>POST</Badge> `/waitlist_entries` |
| [Approve Waitlist Entry](/api-reference/beta/waitlist-entries/approve-waitlist-entry) | <Badge color="green" size="sm" stroke>POST</Badge> `/waitlist_entries/{id}/approve` |
| [Cancel Waitlist Entry](/api-reference/beta/waitlist-entries/cancel-waitlist-entry) | <Badge color="green" size="sm" stroke>POST</Badge> `/waitlist_entries/{id}/cancel` |
| [Deny Waitlist Entry](/api-reference/beta/waitlist-entries/deny-waitlist-entry) | <Badge color="green" size="sm" stroke>POST</Badge> `/waitlist_entries/{id}/deny` |
| [Approve All Waitlist Entries](/api-reference/beta/waitlist-entries/approve-all-waitlist-entries) | <Badge color="green" size="sm" stroke>POST</Badge> `/waitlist_entries/approve_all` |

## Attributes

<Columns cols={2}>
  <Column>
    <ResponseField name="id" type="string" required>
      The waitlist signup ID, prefixed `entry_`.
    </ResponseField>

    <ResponseField name="account_id" type="string" required>
      The seller account, prefixed `biz_`.
    </ResponseField>

    <ResponseField name="approval_failure_reason" type="string | null" required>
      Why the last approval attempt failed, or `null` when none has. `plan_unavailable` — the variant, product, or seller account was deleted. `already_member` — the user already has a membership on a one-per-user product. `checkout_failed` — checkout failed, usually a declined payment, and the signup was denied. `unknown` — another failure; retry. Cleared when approval is requeued.

      Available options: `plan_unavailable`, `already_member`, `checkout_failed`, `unknown`
    </ResponseField>

    <ResponseField name="buyer_account_id" type="string | null" required>
      The account the signup was submitted on behalf of, prefixed `biz_`, or `null`
      when the user signed up for themselves.
    </ResponseField>

    <ResponseField name="created_at" type="string" required>
      When this signup was submitted, as an ISO 8601 timestamp.
    </ResponseField>

    <ResponseField name="custom_field_responses" type="object[]" required>
      The buyer's answers to checkout questions.

      <Accordion title="Properties" defaultOpen={true}>
        <ResponseField name="id" type="string" required>
          The answer's ID, prefixed `cfrp_`.
        </ResponseField>

        <ResponseField name="answer" type="string" required>
          The buyer's answer.
        </ResponseField>

        <ResponseField name="question" type="string" required>
          The question shown when the signup was submitted.
        </ResponseField>
      </Accordion>
    </ResponseField>

    <ResponseField name="membership_id" type="string | null" required>
      The membership created for this signup, prefixed `mem_`, or `null` when there
      is none. Check the membership's status to determine access.
    </ResponseField>

    <ResponseField name="metadata" type="object" required>
      Custom key-value metadata associated with this signup.
    </ResponseField>

    <ResponseField name="plan_id" type="string" required>
      The variant this signup belongs to, prefixed `plan_`.
    </ResponseField>

    <ResponseField name="product_id" type="string | null" required>
      The product this signup belongs to, prefixed `prod_`, or `null` when the
      variant has no product.
    </ResponseField>

    <ResponseField name="status" type="string" required>
      The signup's current state. Approval runs asynchronously, so a signup stays `pending` until processing completes. `approved` alone does not prove an active membership; check `membership_id`.

      Available options: `pending`, `approved`, `denied`, `canceled`
    </ResponseField>

    <ResponseField name="updated_at" type="string" required>
      When this signup last changed, as an ISO 8601 timestamp.
    </ResponseField>

    <ResponseField name="user_id" type="string" required>
      The user who submitted this signup, prefixed `user_`.
    </ResponseField>
  </Column>

  <Column>
    <div className="api-resource-sticky-example">
      ```json WaitlistEntry theme={null}
      {
      	"id": "entry_xxxxxxxxxxxxxx",
      	"account_id": "biz_xxxxxxxxxxxxxx",
      	"product_id": "prod_xxxxxxxxxxxxxx",
      	"plan_id": "plan_xxxxxxxxxxxxxx",
      	"user_id": "user_xxxxxxxxxxxxxx",
      	"buyer_account_id": null,
      	"status": "approved",
      	"membership_id": "mem_xxxxxxxxxxxxxx",
      	"approval_failure_reason": null,
      	"custom_field_responses": [
      		{
      			"id": "cufi_xxxxxxxxxxxxxx",
      			"question": "What car do you drive?",
      			"answer": "2021 Tesla Model 3"
      		}
      	],
      	"metadata": {},
      	"created_at": "2026-09-12T10:15:00.000Z",
      	"updated_at": "2026-09-13T08:02:44.000Z"
      }
      ```
    </div>
  </Column>
</Columns>


## Related topics

- [Create Waitlist Entry](/api-reference/beta/waitlist-entries/create-waitlist-entry.md)
- [Retrieve Waitlist Entry](/api-reference/beta/waitlist-entries/retrieve-waitlist-entry.md)
- [List Waitlist Entries](/api-reference/beta/waitlist-entries/list-waitlist-entries.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.