A developer-first API that extracts clean, typed JSON from emails, PDFs, and images. Schema-first, webhook-native, priced like an API.
curl https://api.mailframe.ai/v1/parse \ -H "Authorization: Bearer $MAILFRAME_KEY" \ -H "Content-Type: application/json" \ -d ' "raw_mime": "From: ...", "schema_id": "stripe-receipt"' # → "receipt_id": "pi_abc123", "amount_cents": 2999, "currency": "usd", "customer_email": "user@example.com"
Send documents however you want. Both paths converge to the same typed JSON.
Send raw MIME, PDF, or image via POST /v1/parse
with a schema. Get JSON back synchronously or async via webhook.
import { MailFrame } from "...";
const mf = new MailFrame({ apiKey: "..." });
const result = await mf.parse({
raw_mime: "From: receipt@stripe.com\n...",
schema_id: "stripe-receipt",
});
console.log(result.data);{
"receipt_id": "pi_abc123",
"amount_cents": 2999,
"currency": "usd",
"paid_at": "2026-05-21T17:30:00Z",
"customer_email": "user@example.com",
"description": "Subscription payment - Acme SaaS Inc.",
"card_last4": "4242",
"card_brand": "visa"
}
Get a unique parse@mailframe.ai inbox.
Forward any email - MailFrame extracts and delivers to your webhook. No API calls needed.
# 1. Get your inbox address
# parse@mailframe.ai
# 2. Create filter in Gmail Settings
Match: from:stripe.com
Do this: Forward to parse@mailframe.ai
# 3. MailFrame parses the email
# JSON delivered to your webhook
# That's it. Receipts arrive as JSON.{
"event": "parse.completed",
"parse_id": "parse_abc123",
"data": {
"receipt_id": "pi_abc",
"amount_cents": 2999,
"currency": "usd"
},
"_confidence": {
"receipt_id": 0.99,
"amount_cents": 0.95
},
"delivered_at": "2026-05-21T17:30:00Z"
}MailFrame does one thing well — extract structured data from any document and deliver it to your webhook.
Send raw MIME via POST /v1/parse, or forward emails to a unique inbox address. Both return the same typed JSON.
Define extraction schemas in JSON Schema — not a drag-and-drop wizard. Version-controlled, retry-on-failure, confidence-scored.
Signed HMAC-SHA256 payloads with exponential backoff retries. Dead-letter queue, replay from dashboard, per-tenant rate limiting.
Gemini 2.5 Flash-Lite defaults with automatic escalation on low confidence. Provider fallback ensures uptime. Cache hits skip the model entirely.
Not just email — upload PDFs and images too. A single schema works whether the source is an emailed receipt, a PDF, or a screenshot.
Pay per parse operation, not per seat. Metered billing via Stripe. Free tier: 100 docs/mo. Scale tier: $0.003/doc.
No-code email parsers target spreadsheet users. Enterprise AP automation targets accounting. RAG ingestion targets AI pipelines. Nobody targets app developers who just need typed JSON via webhook. MailFrame is that API.
Pay per parse operation. No per-seat fees. No hidden costs.
Side projects and evaluation
Small SaaS, one workflow
Production B2B integrations
High-volume parsing
Custom SLAs, dedicated infra
All plans include HMAC-signed webhooks, retry logic, and 30-day data retention.
Join the waitlist. We'll let you know when the API is live and send you early-access pricing.
No spam. No sharing your data. Just early access.