# List drafts

Source: https://docs.maylee.app/api-reference/drafts/list-drafts

`GET https://api.maylee.app/api/v1/drafts`

Scope: `read`.

The most recent drafts of the workspace, up to `limit`. Not paginated.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `limit` | query | integer | no | Page size. Values above 200 are clamped. From 1 to 200. Default: `50`. |

## Example request

```bash
curl -X GET "https://api.maylee.app/api/v1/drafts" \
  -H "Authorization: Bearer $MAYLEE_KEY"
```

## Responses

### 200

The workspace drafts.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `items` | array of Email | yes |  |
| `items[].attachments` | array of Attachment | no | Metadata only. |
| `items[].bcc` | array of EmailAddress | no | Present here, absent from list items. |
| `items[].cc` | array of EmailAddress | no |  |
| `items[].date` | string (date-time) | no |  |
| `items[].folderId` | string | no | Folder the email lives in. |
| `items[].from` | EmailAddress | no |  |
| `items[].hasAttachments` | boolean | no |  |
| `items[].id` | string | no | Maylee id of the email. |
| `items[].inReplyTo` | string or null | no | RFC `In-Reply-To` header. |
| `items[].isAutoForward` | boolean | no | Sent automatically by an auto-forward rule. |
| `items[].isAutoReply` | boolean | no | Sent automatically by Maylee's auto-reply. |
| `items[].isDraft` | boolean | no |  |
| `items[].isRead` | boolean | no |  |
| `items[].isStarred` | boolean | no |  |
| `items[].labels` | array of string | no | Labels as known by the provider (for example Gmail's `INBOX` or `IMPORTANT`), not Maylee labels. |
| `items[].mailboxId` | string | no | Mailbox the email lives in. |
| `items[].messageId` | string | no | RFC `Message-ID` header. Needed to reply in the thread. |
| `items[].references` | array of string | no | RFC `References` header. |
| `items[].scheduledSendAt` | string (date-time) or null | no | For a scheduled draft: when it will be sent. `null` otherwise. |
| `items[].scheduledStatus` | string or null | no | For a scheduled draft: its sending state. `null` otherwise. |
| `items[].snippet` | string | no | Short text preview. |
| `items[].subject` | string | no |  |
| `items[].threadId` | string or null | no | Provider conversation id, when the provider has one. |
| `items[].to` | array of EmailAddress | no |  |
| `items[].waitingForReply` | boolean | no | On an email you sent: Maylee estimates that it still expects an answer. |

```json
{
  "items": [
    {
      "attachments": [],
      "bcc": [],
      "cc": [],
      "date": "2026-08-25T14:05:40.000Z",
      "folderId": "cmfd9z8y7x6w5v4u3t2s1r0q",
      "from": {
        "email": "contact@your-company.com",
        "name": null
      },
      "hasAttachments": false,
      "id": "cmdr1a2b3c4d5e6f7g8h9i0j",
      "inReplyTo": "<CAF3k9x1@mail.example.com>",
      "isAutoForward": false,
      "isAutoReply": false,
      "isDraft": true,
      "isRead": true,
      "isStarred": false,
      "labels": [
        "\\Draft"
      ],
      "mailboxId": "cmbx1a2b3c4d5e6f7g8h9i0j",
      "messageId": "draft-5f0c2b1e-8a7d-4f3e-9c61-2d4b7a9e0f13@local",
      "references": [
        "<CAF3k9x1@mail.example.com>"
      ],
      "scheduledSendAt": null,
      "scheduledStatus": null,
      "snippet": "Hello Jane, here is the quote you asked for.",
      "subject": "Re: Quote request",
      "threadId": "18c2f5a9e7b1d3c4",
      "to": [
        {
          "email": "client@acme.com",
          "name": "Jane Client"
        }
      ],
      "waitingForReply": false
    }
  ]
}
```

### 401

Missing, malformed, revoked or expired API key.

### 403

Key lacks the required scope, or outbound sending is not enabled on it.

### 429

Per-minute rate limit (`RATE_LIMIT_EXCEEDED`) or monthly quota (`QUOTA_EXCEEDED`) exhausted.

Errors use the format `{ "code", "error", "details" }`: see [Errors](/errors.md).
