---
title: "Email Intake"
method: POST
path: "/v1/intake/email"
---

# Email Intake

`POST /v1/intake/email`

## Request

- Base URL: `https://api.storyflo.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.storyflo.com/v1/intake/email`
- Auth: none declared

Inbound email handler — story@storyflo.com forwarded payloads.

Auth: ``X-Storyflo-Email-Token`` header OR ``?token=`` query param
MUST match ``EMAIL_INTAKE_TOKEN`` in the env. Header preferred; query
param exists for inbound providers (e.g. Postmark) whose UI doesn't
expose custom-header config reliably.

Behavior: extracts URLs from text/html, fetches each, parses title +
body, inserts as Articles under the canonical ``storyflo-sends``
publisher, enqueues render-jobs.

## Query parameters

- `token` string, nullable

## Headers

- `x-storyflo-email-token` string, nullable

## Request body

- EmailIntakeRequest: Generic shape that accepts both lowercase (`from`, `text`, `html`) and Postmark's capitalized payload (`From`, `TextBody`, `HtmlBody`) without any transform. Mailgun / ImprovMX / ForwardEmail fit the lowercase form or can be mapped in their console with a 3-line template.
  - `from` string, required
  - `to` string, nullable
  - `subject` string, nullable
  - `text` string, nullable
  - `html` string, nullable
  - `headers` object[], nullable

## Response `202`

Successful Response

- object

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/storyflo/apis/storyflo-inference-router.md) · [All operations](https://skmtc.dev/storyflo/apis/storyflo-inference-router/llms.txt) · [OpenAPI document](https://skmtc.dev/storyflo/apis/storyflo-inference-router/revisions/c3a1a735ac7a?raw)
