---
title: "Send email from your platform-assigned {username}@<platform domain> to your verified email destinations, optionally a..."
method: POST
path: "/v1/email/send"
tags: ["email"]
---

# Send email from your platform-assigned {username}@<platform domain> to your verified email destinations, optionally a...

`POST /v1/email/send`

## Request

- Base URL: `https://api.kody.codes`
- URL: `https://api.kody.codes/v1/email/send`
- Auth: HTTP bearer

Send email from your platform-assigned {username}@<platform domain> to your verified email destinations, optionally attaching files (base64 content). Destinations expand the allowed to set; Kody is not an open relay. Omit `to` to use the default destination. Every explicit address must be the verified identity email or a verified extra destination; if any `to` is missing or unverified the whole send fails. With attachments, the whole message must fit the plan email_message_bytes cap. Use emailReply to answer stored inbound mail.

Org permission: `email:send`.

## Request body

- object
  - `to` union
    - string
    - string[]
  - `subject` string, required
  - `text` string
  - `html` string
  - `reply_to` string
  - `attachments` object[]
    - `filename` string, required
    - `content_type` string, required
    - `content_base64` string, required

## Response `200`

Success.

- object
  - `message` object, required
    - `id` string, required
    - `direction` 'inbound' | 'outbound', required
    - `inbox_id` string, nullable, required
    - `thread_id` string, nullable, required
    - `from_address` string, nullable, required
    - `envelope_from` string, nullable, required
    - `to_addresses` string[], required
    - `subject` string, nullable, required
    - `message_id_header` string, nullable, required
    - `processing_status` 'stored' | 'sent' | 'failed', required
    - `classification` 'accepted' | 'quarantined', required
    - `classification_reason` string, nullable, required
    - `provider_message_id` string, nullable, required
    - `delivery_status` 'delivered' | 'deferred' | 'bounced' | 'failed' | 'rejected' | 'complained', nullable, required
    - `delivery_status_at` string, nullable, required
    - `error` string, nullable, required
    - `received_at` string, nullable, required
    - `sent_at` string, nullable, required
    - `created_at` string, required
    - `updated_at` string, required
  - `provider_message_id` string, nullable, required
  - `status` string, required
  - `error` string, nullable, required

## Other responses

- `400`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `401`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `403`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `404`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `409`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `413`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `429`: Too many requests (edge IP/token limit) or an entitlement / plan-cap limit. Wait at least `Retry-After` seconds before retrying.
- `500`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `503`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `default`: Error envelope `{ "error": { "code", "message", "details"? } }`.

---

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