---
title: "Email the quiz"
method: POST
path: "/quizzes/{id}/send"
tags: ["Delivery"]
---

# Email the quiz

`POST /quizzes/{id}/send`

## Request

- Base URL: `https://quizgen.dev/api/v1`
- URL: `https://quizgen.dev/api/v1/quizzes/{id}/send`
- Auth: HTTP bearer

Emails the quiz to a list of people (any account with a confirmed email — 403 email_not_confirmed otherwise; capped per month and per 24 hours — 402 plan_limit / 429 daily_send_limit). Max 100 recipients per call; duplicates are dropped. Each recipient gets a unique tracked link. This delivers real email immediately — confirm the list with the user first.

## Request body

- object
  - `channel` 'email': Optional, defaults to `email`. `sms` returns 400 `not_yet_available`.
  - `recipients` object[], required
    - `email` string, email, required
    - `name` string
  - `message` string: Optional note shown above the button.

## Response `200`

Send queued.

- OperationResult: Successful mutation result. Fields vary by operation and are documented on the endpoint.

## Other responses

- `400`: `not_yet_available` — `channel: "sms"` isn't live yet.
- `401`: Missing or invalid API key.
- `402`: The account is at a plan limit (e.g. live-quiz cap, or a paid-only feature on a free plan). Close/delete a quiz, drop the gated fields, or upgrade.
- `404`: No such quiz (or not yours).
- `409`: `quiz_closed` — reopen the quiz before sending.
- `422`: `invalid_recipients` or `invalid_channel`.
- `502`: No email could be delivered (every recipient failed).

---

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