Clerk Waitlist Entries API

Manage waitlist entries.

Operations 6

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

GET /waitlist_entries List waitlist entries · List All Waitlist Entries #
Ask an LLM
“Who is on the waitlist for my app?”
“Can I filter the waitlist to only pending or rejected entries?”
Tell an agent
List all waitlist entries.
Show waitlist entries with status {status}.
POST /waitlist_entries Add an email to the waitlist · Create a Waitlist Entry #
Ask an LLM
“How do I add someone to my app's waitlist from the backend?”
“What happens if an email is already on the waitlist?”
Tell an agent
Add {email_address} to the waitlist.
Put {email_address} on the waitlist without a confirmation email: notify {notify}.
POST /waitlist_entries/bulk Add many emails to the waitlist · Create Multiple Waitlist Entries #
Ask an LLM
“How do I import a list of signups onto the waitlist in one call?”
“Does bulk waitlist creation send confirmation emails by default?”
Tell an agent
Add this list of email addresses to the waitlist in bulk.
Bulk-create waitlist entries for these signups without notifying them.
DELETE /waitlist_entries/{waitlist_entry_id} Delete a pending waitlist entry · Delete a Pending Waitlist Entry #
Ask an LLM
“How do I remove someone from the waitlist who is still pending?”
“Can I delete a waitlist entry that has not been invited yet?”
Tell an agent destructive · confirm first
Delete waitlist entry {waitlist_entry_id}.
Remove pending entry {waitlist_entry_id} from the waitlist.
POST /waitlist_entries/{waitlist_entry_id}/invite Invite someone off the waitlist · Invite a Waitlist Entry #
Ask an LLM
“How do I let a waitlisted person in by sending them an invite?”
“Can I invite a waitlist entry even if they already have an invitation?”
Tell an agent
Invite waitlist entry {waitlist_entry_id}.
Send an invite to waitlisted {waitlist_entry_id}, ignoring existing invites: {ignore_existing}.
POST /waitlist_entries/{waitlist_entry_id}/reject Reject a waitlist entry · Reject a Waitlist Entry #
Ask an LLM
“How do I turn down someone on the waitlist?”
“Can I mark a waitlist entry as rejected instead of deleting it?”
Tell an agent destructive · confirm first
Reject waitlist entry {waitlist_entry_id}.
Decline the waitlisted signup {waitlist_entry_id}.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/clerk-com:clerk-com-waitlist-entries-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

clerk-com-waitlist-entries-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Clerk Backend Waitlist Entries API
  x-logo:
    url: https://clerk.com/_next/image?url=%2Fimages%2Fclerk-logo.svg&w=96&q=75
    altText: Clerk docs
    href: https://clerk.com/docs
  contact:
    email: support@clerk.com
    name: Clerk Platform Team
    url: https://clerk.com/support
  description: 'The Clerk REST Backend API, meant to be accessed by backend servers.


    ### Versions


    When the API changes in a way that isn''t compatible with older versions, a new version is released.

    Each version is identified by its release date, e.g. `2025-04-10`. For more information, please see Clerk API Versions.


    Please see https://clerk.com/docs for more information.'
  version: '2025-11-10'
  termsOfService: https://clerk.com/terms
  license:
    name: MIT
    url: https://github.com/clerk/openapi-specs/blob/main/LICENSE
servers:
- url: https://api.clerk.com/v1
security:
- bearerAuth: []
tags:
- name: Waitlist Entries
  description: Manage waitlist entries.
paths:
  /waitlist_entries:
    get:
      operationId: ListWaitlistEntries
      x-speakeasy-group: waitlistEntries
      x-speakeasy-name-override: list
      summary: List All Waitlist Entries
      description: 'Retrieve a list of waitlist entries for the instance.

        Entries are ordered by creation date in descending order by default.

        Supports filtering by email address or status and pagination with limit and offset parameters.'
      tags:
      - Waitlist Entries
      parameters:
      - $ref: '#/components/parameters/LimitParameter'
      - $ref: '#/components/parameters/OffsetParameter'
      - in: query
        name: query
        description: Filter waitlist entries by `email_address` or `id`
        required: false
        schema:
          type: string
      - in: query
        name: status
        description: Filter waitlist entries by their status
        required: false
        schema:
          type: string
          enum:
          - pending
          - invited
          - completed
          - rejected
      - in: query
        name: order_by
        required: false
        description: 'Specify the order of results. Supported values are:

          - `created_at`

          - `email_address`

          - `invited_at`


          Use `+` for ascending or `-` for descending order. Defaults to `-created_at`.'
        schema:
          type: string
          default: -created_at
      responses:
        '200':
          $ref: '#/components/responses/WaitlistEntries'
    post:
      operationId: CreateWaitlistEntry
      x-speakeasy-group: waitlistEntries
      x-speakeasy-name-override: create
      summary: Create a Waitlist Entry
      description: 'Creates a new waitlist entry for the given email address.

        If the email address is already on the waitlist, no new entry will be created and the existing waitlist entry will be returned.'
      tags:
      - Waitlist Entries
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                email_address:
                  type: string
                  description: The email address to add to the waitlist
                notify:
                  type:
                  - boolean
                  - 'null'
                  description: 'Optional flag which denotes whether a confirmation email should be sent to the given email address.

                    Defaults to `true`.'
                  default: true
              required:
              - email_address
      responses:
        '200':
          $ref: '#/components/responses/WaitlistEntry'
        '400':
          $ref: '#/components/responses/ClerkErrors'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
  /waitlist_entries/bulk:
    post:
      operationId: CreateBulkWaitlistEntries
      x-speakeasy-group: waitlistEntries
      x-speakeasy-name-override: bulkCreate
      summary: Create Multiple Waitlist Entries
      description: 'Creates multiple waitlist entries for the provided email addresses.

        You can choose whether to send confirmation emails by setting the `notify` parameter to `true` or `false` for each entry.

        If the `notify` parameter is omitted, it defaults to `true`.


        If an email address is already on the waitlist, no new entry will be created and the existing waitlist entry will be returned.

        Duplicate email addresses within the same request are not allowed.


        This endpoint is limited to a maximum of 50 entries per API call. If you need to add more entries, please make multiple requests.'
      tags:
      - Waitlist Entries
      requestBody:
        description: Required parameters
        content:
          application/json:
            schema:
              type: array
              minItems: 1
              maxItems: 50
              items:
                type: object
                additionalProperties: false
                properties:
                  email_address:
                    type: string
                    format: email
                    description: The email address to add to the waitlist
                  notify:
                    type:
                    - boolean
                    - 'null'
                    description: 'Optional flag which denotes whether a confirmation email should be sent to the given email address.

                      Defaults to `true`.'
                    default: true
                required:
                - email_address
      responses:
        '200':
          $ref: '#/components/responses/WaitlistEntry.List'
        '400':
          $ref: '#/components/responses/ClerkErrors'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
  /waitlist_entries/{waitlist_entry_id}:
    delete:
      operationId: DeleteWaitlistEntry
      x-speakeasy-group: waitlistEntries
      x-speakeasy-name-override: delete
      summary: Delete a Pending Waitlist Entry
      description: Delete a pending waitlist entry.
      tags:
      - Waitlist Entries
      parameters:
      - name: waitlist_entry_id
        in: path
        description: The ID of the waitlist entry to delete
        required: true
        schema:
          type: string
      responses:
        '200':
          $ref: '#/components/responses/DeletedObject'
        '400':
          $ref: '#/components/responses/ClerkErrors'
        '404':
          $ref: '#/components/responses/ResourceNotFound'
        '409':
          $ref: '#/components/responses/Conflict'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
  /waitlist_entries/{waitlist_entry_id}/invite:
    post:
      operationId: InviteWaitlistEntry
      x-speakeasy-group: waitlistEntries
      x-speakeasy-name-override: invite
      summary: Invite a Waitlist Entry
      description: Send an invite to the email address in a waitlist entry.
      tags:
      - Waitlist Entries
      parameters:
      - name: waitlist_entry_id
        in: path
        description: The ID of the waitlist entry to invite
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                ignore_existing:
                  type:
                  - boolean
                  - 'null'
                  description: Whether an invitation should be created if there is already an existing invitation for this email address, or it's claimed by another user.
                  default: false
      responses:
        '200':
          $ref: '#/components/responses/WaitlistEntry'
        '400':
          $ref: '#/components/responses/ClerkErrors'
        '404':
          $ref: '#/components/responses/ResourceNotFound'
        '409':
          $ref: '#/components/responses/Conflict'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
  /waitlist_entries/{waitlist_entry_id}/reject:
    post:
      operationId: RejectWaitlistEntry
      x-speakeasy-group: waitlistEntries
      x-speakeasy-name-override: reject
      summary: Reject a Waitlist Entry
      description: Reject a waitlist entry.
      tags:
      - Waitlist Entries
      parameters:
      - name: waitlist_entry_id
        in: path
        description: The ID of the waitlist entry to reject
        required: true
        schema:
          type: string
      responses:
        '200':
          $ref: '#/components/responses/WaitlistEntry'
        '400':
          $ref: '#/components/responses/ClerkErrors'
        '404':
          $ref: '#/components/responses/ResourceNotFound'
        '409':
          $ref: '#/components/responses/Conflict'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
components:
  responses:
    WaitlistEntry.List:
      description: Array of waitlist entries
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/WaitlistEntry'
    WaitlistEntry:
      description: A Waitlist Entry
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/WaitlistEntry'
    WaitlistEntries:
      description: List of waitlist entries
      content:
        application/json:
          schema:
            type: object
            properties:
              data:
                type: array
                items:
                  $ref: '#/components/schemas/WaitlistEntry'
              total_count:
                type: integer
                description: Total number of waitlist entries
            required:
            - data
            - total_count
    Conflict:
      description: Conflict
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ClerkErrors'
    UnprocessableEntity:
      description: Invalid request parameters
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ClerkErrors'
    DeletedObject:
      description: Deleted Object
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DeletedObject'
    ResourceNotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ClerkErrors'
    ClerkErrors:
      description: Request was not successful
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ClerkErrors'
  schemas:
    DeletedObject:
      type: object
      additionalProperties: false
      properties:
        object:
          type: string
        id:
          type: string
        slug:
          type: string
        deleted:
          type: boolean
        external_id:
          type: string
      required:
      - object
      - deleted
    ClerkError:
      type: object
      properties:
        message:
          type: string
        long_message:
          type: string
        code:
          type: string
        meta:
          type: object
      required:
      - message
      - long_message
      - code
    Invitation:
      type: object
      additionalProperties: false
      properties:
        object:
          type: string
          enum:
          - invitation
        id:
          type: string
        email_address:
          type: string
          format: email
        public_metadata:
          type: object
          additionalProperties: true
        revoked:
          type: boolean
          example: false
        status:
          type: string
          enum:
          - pending
          - accepted
          - revoked
          - expired
          example: pending
        url:
          type: string
        expires_at:
          type:
          - integer
          - 'null'
          format: int64
          description: 'Unix timestamp of expiration.

            '
        created_at:
          type: integer
          format: int64
          description: 'Unix timestamp of creation.

            '
        updated_at:
          type: integer
          format: int64
          description: 'Unix timestamp of last update.

            '
      required:
      - object
      - id
      - email_address
      - public_metadata
      - status
      - created_at
      - updated_at
    WaitlistEntry:
      type: object
      additionalProperties: false
      properties:
        object:
          type: string
          enum:
          - waitlist_entry
        id:
          type: string
        email_address:
          type: string
          format: email
        status:
          type: string
          enum:
          - pending
          - invited
          - rejected
          - completed
          example: pending
        is_locked:
          type: boolean
          description: 'Indicates if the waitlist entry is locked. Locked entries are being processed in a batch action and are unavailable for other actions.

            '
        created_at:
          type: integer
          format: int64
          description: 'Unix timestamp of creation.

            '
        updated_at:
          type: integer
          format: int64
          description: 'Unix timestamp of last update.

            '
        invitation:
          type:
          - object
          - 'null'
          allOf:
          - $ref: '#/components/schemas/Invitation'
      required:
      - object
      - id
      - email_address
      - status
      - created_at
      - updated_at
    ClerkErrors:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ClerkError'
        meta:
          type: object
        clerk_trace_id:
          type: string
      required:
      - errors
  parameters:
    LimitParameter:
      name: limit
      in: query
      description: 'Applies a limit to the number of results returned.

        Can be used for paginating the results together with `offset`.'
      required: false
      schema:
        type: integer
        default: 10
        minimum: 1
        maximum: 500
    OffsetParameter:
      name: offset
      in: query
      description: 'Skip the first `offset` results when paginating.

        Needs to be an integer greater or equal to zero.

        To be used in conjunction with `limit`.'
      required: false
      schema:
        type: integer
        default: 0
        minimum: 0
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Secret key, obtained under "API Keys" in the Clerk Dashboard.
      bearerFormat: sk_<environment>_<secret value>
externalDocs:
  url: https://clerk.com/docs
x-speakeasy-retries:
  strategy: backoff
  backoff:
    initialInterval: 500
    maxInterval: 60000
    maxElapsedTime: 3600000
    exponent: 1.5
  statusCodes:
  - 5XX
  retryConnectionErrors: true