---
title: "Invite one waitlist entry by email (admin)"
method: POST
path: "/api/admin/waitlist/{id}/invite"
---

# Invite one waitlist entry by email (admin)

`POST /api/admin/waitlist/{id}/invite`

## Request

- Base URL: `https://www.toma.com`
- URL: `https://www.toma.com/api/admin/waitlist/{id}/invite`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `better-auth.session_token`

Toma staff only (a verified @toma.so or @toma.com address). Emails the entry the caller's own invitation link, and marks it invited; the shared allowance and duplicate protection apply; repeats do not resend. Same as the invite_from_waitlist MCP tool.

## Path parameters

- `id` string, required

## Response `200`

The invitation link and whether the email went out.

- WaitlistInvitation
  - `entry` WaitlistEntry, required
    - `entryPreference` 'post' | 'work' | 'both', nullable, required: What you would like to do on Toma
    - `details` string, nullable, required
    - `category` string, nullable, required
    - `campaign` string, nullable, required
    - `submissions` WaitlistSubmission[], required
      - `id` string, required
      - `entryPreference` 'post' | 'work' | 'both', required
      - `details` string, required
      - `preview` object, nullable, required
        - `title` string, required
        - `budget` integer, required
      - `category` string, nullable, required
      - `campaign` string, nullable, required
      - `createdAt` string, date-time, required
      - `confirmedAt` string, date-time, nullable, required
      - `card` object, nullable, required
        - `brand` string, nullable, required
        - `last4` string, nullable, required
    - `hasMoreSubmissions` boolean, required
    - `id` string, required
    - `email` string, required
    - `status` 'waiting' | 'invited' | 'joined', required
    - `createdAt` string, date-time, required
    - `invitedAt` string, date-time, nullable, required
    - `invitedBy` object, nullable, required: The staff member whose link was sent; null until invited.
      - `id` string, required
      - `name` string, required
    - `memberId` string, nullable, required: The member this email became; null until they accept an invitation.
  - `link` string, uri, required
  - `emailed` boolean, required: True only for a new send. False when already invited or email isn't configured.
  - `alreadyInvited` boolean, required: An invitation already exists; no new email was sent.

## Other responses

- `401`: No valid session or API key.
- `403`: Not Toma staff.
- `404`: No waitlist entry has that id.
- `409`: They already joined, the allowance is exhausted, the link is turned off, or an invitation is in progress.
- `503`: Email delivery failed. No invitation was used.

---

[API](https://skmtc.dev/toma/apis/toma-api.md) - [All operations](https://skmtc.dev/toma/apis/toma-api/llms.txt) - [OpenAPI document](https://skmtc.dev/toma/apis/toma-api/revisions/b4e56e1db5a2?raw)
