Documentation

Email delivery

Render a PDF and put it in someone's inbox in one request. Inkrun sends a branded email from your name with a download link that stays valid for 3 days — no attachment handling, no file hosting, no extra service to wire up.

Reports, proposals, invoices, release notes — most PDFs exist to be sent to someone. The sendEmail option closes that last step: instead of downloading the PDF and forwarding it yourself, Inkrun delivers it for you the moment the render finishes. It works from the REST API and from any connected AI assistant over MCP.

Paid featureEmail delivery is available on paid plans (Pro and up). On the free tier the request is still accepted and the PDF renders normally — the email is simply not sent, and the response carries a notice saying so. See Plans & the free tier.

What the recipient gets

A clean, Inkrun-branded email that is clearly from you, not from a robot:

  • The subject and heading carry your name — “Ada Lovelace sent you a PDF: Q2 Report”. The sender name is required, so a delivery is never anonymous.
  • An optional personal note from you, quoted at the top of the message.
  • A document card with the title and file size, and a Download PDF button (plus a plain fallback link).
  • A secure, presigned download link that expires after 3 days.
Why a link and not an attachment?Links keep the email light, pass attachment-size limits and spam filters, and expire — so a forwarded email doesn't hand out your document forever. The recipient clicks once and gets the exact PDF you rendered.

Send from the REST API

Add a sendEmail object to any POST /api/v1/render request:

bash
curl "https://inkrun.dev/api/v1/render" \
  -H "Authorization: Bearer $INKRUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "template": "quarterly-report",
    "title": "Q2 Report",
    "markdown": "# Q2 Revenue\n\nStrong quarter — up **12%** QoQ.",
    "sendEmail": {
      "to": "[email protected]",
      "senderName": "Ada Lovelace",
      "message": "Here is the report we discussed on Monday."
    }
  }'
FieldRequiredDescription
sendEmail.toyesRecipient email address.
sendEmail.senderNameyesWho the email says it's from (“Ada sent you a PDF”). 1–100 characters.
sendEmail.messagenoA personal note quoted in the email body. Up to 1000 characters.

The JSON response reports the outcome in an email field, next to the usual render fields:

json
{
  "id": "pdf_9f2a…",
  "status": "rendered",
  "size": 28211,
  "url": "https://…s3…?X-Amz-Signature=…",
  "stored": true,
  "email": { "sent": true, "to": "[email protected]" }
}

The url in the response stays short-lived as always — the 3-day link lives in the email. If you request the raw PDF instead (Accept: application/pdf), the outcome comes back in an x-email-sent response header.

Plans & the free tier

Email delivery is included in paid plans. On the free tier a sendEmail request is not an error: the PDF renders and is delivered to you exactly as usual, but the email to the recipient is skipped and the response says so —

json
{
  "id": "pdf_9f2a…",
  "status": "rendered",
  "size": 28211,
  "url": "https://…s3…?X-Amz-Signature=…",
  "stored": true,
  "email": {
    "sent": false,
    "to": "[email protected]",
    "skipped": "free_tier",
    "message": "Email delivery is a paid feature: the PDF rendered fine, but the email was not sent because this account is on the free tier. Upgrade to a paid plan to send PDFs by email."
  }
}

Check email.sent (or the x-email-sent header on the raw-PDF path) rather than assuming delivery. Over MCP the same situation comes back as a separate info block in the tool result, so your assistant will tell you the email was not sent and why. Upgrade in the dashboard to enable delivery.

Send from your AI assistant (MCP)

With Inkrun connected as an MCP server, just ask — the create_pdf tool accepts sendEmailTo, senderName and an optional emailMessage:

text
Turn these meeting notes into a PDF with the quarterly-report
template and email it to [email protected]. Sender name "Ada Lovelace",
note: "Here is the report we discussed on Monday."

The assistant renders the document, Inkrun emails it, and the tool result confirms the delivery — “Emailed to [email protected] (from Ada Lovelace) — the download link in the email is valid for 3 days.” This is the shortest path from “draft in chat” to “document in a stakeholder's inbox”.

On the free tier the tool call still succeeds and returns your download link, but instead of a confirmation the result carries an info block — “ℹ️ Email to [email protected] was NOT sent — free tier…” — so your assistant will tell you the recipient did not get an email and that a paid plan enables it.

Good to know

  • Paid plans only. Sending requires a paid subscription. Free-tier requests still render (and count against quota like any render) — the email is skipped with a notice instead of sent. See Plans & the free tier.
  • Link lifetime. The emailed download link is valid for 3 days. After that the recipient asks you for a fresh render (or you re-send).
  • One recipient per render. To reach several people, issue one render per recipient — each gets their own email and link.
  • Quota. A render with sendEmail counts as one render against your monthly quota, same as any other. The email itself is free.
  • Delivery never loses your PDF. If the mail provider hiccups after a successful render, the request still succeeds — you get the PDF/link as usual and email.sent: false with an error explaining why, so you can retry.
  • Bad requests fail fast. An invalid recipient address or a missing sender name is rejected with 400 before rendering — it never burns quota.
  • Self-hosting? Email delivery needs the deployment to have transactional email (RESEND_API_KEY + EMAIL_FROM) and S3-compatible storage configured; otherwise sendEmail requests return 400. On inkrun.dev this is always on.
Send responsiblyThe sender name you pass is shown to the recipient as who the document is from — use your own name or your company's. Deliveries are attributed to your account, and abuse (spam, impersonation) can lead to suspension.

Next steps

Inkrun © 2026