NOTICEAPI
Pricing
Sign inGet API key
Product
OverviewSend, receive, and operate emailTransactional emailReliable receipts, resets, and alertsMarketing emailCampaigns, audiences, and lifecycleAutomationsAudience-triggered sequencesTemplatesStore, render, and sendReceivingRoute replies into your applicationSMS — coming soonJoin the private-preview listMCP serverLet a coding agent operate email
Solutions
AgenciesKeep every client project organizedSaaS teamsLifecycle email without tool sprawlIndie buildersA production path that starts at $0AI-assisted developmentScoped access for coding agents
Developers
DocumentationBuild and operate your email pathQuickstartSend your first customer emailAPI referenceRequests, responses, and errorsSDKTyped Node.js integrationAgents and MCPBound every agent to its jobIntegrationsFramework and product guidesSimulatorTest outcomes without real delivery
Pricing
Sign inGet API key

Email comes in.
Your app takes over.

Verify a receiving subdomain and turn every message into a signed email.received event. Fetch the body or an attachment only when the workflow needs it.

Get an API keyRead the receiving guide
  • Signed webhooks
  • Fetch on demand
  • Paid plans
Inbound messageSigned
[email protected]to [email protected]10:42 AM
SubjectRe: Invoice

Thanks — the signed copy is attached. Let me know if anything else is needed.

invoice.pdfapplication/pdf · 48 KBatt_123
email.receivedrx_0f83…
Webhook firstBodies on demandOne signature pathProject attributed

Metadata first

The webhook is small on purpose.

Route the message from the event: sender, recipients, subject, receiving address, and attachment metadata. The full MIME body stays out of your handler until your workflow asks for it.

Read the webhook guide
Signed with x-noticeapi-*Attachment metadata, not file bytes
email.received
{
  "type": "email.received",
  "emailId": "rx_0f83...",
  "messageId": "<[email protected]>",
  "from": "[email protected]",
  "to": ["[email protected]"],
  "subject": "Re: Invoice",
  "receivedFor": ["[email protected]"],
  "receivedAt": "2026-07-03T18:04:14.000Z",
  "attachments": [
    { "id": "att_123", "filename": "invoice.pdf", "contentType": "application/pdf", "size": 48213 }
  ],
  "accountId": "..."
}

Mailbox-shaped input

API-shaped output.

NoticeAPI takes the message off the wire, parses it, stores it, and hands your app a clean event it can route.

  1. 01CaptureMX receives the message

    Point a verified receiving subdomain at NoticeAPI and accept mail for any address on it.

  2. 02ParseMIME becomes structured data

    Headers, text, HTML, envelope recipients, and attachment metadata are parsed and stored.

  3. 03Emitemail.received is signed

    A small metadata-first event reaches your webhook as soon as the message lands.

  4. 04FetchYour app pulls what it needs

    Bodies, headers, and raw attachment bytes stay one authenticated request away.

Fetch on demand

Pull the details only when the workflow needs them.

Use a scoped key to retrieve the stored message, list its attachments, or download one file. Every resource stays attributed to the project that owns the receiving domain.

GET received email
curl https://www.noticeapi.com/api/v1/receiving/emails/rx_0f83... \
  -H "Authorization: Bearer ntc_xxxxxxxxxxxxxxxxxxxx"
ResourceUse it when
List received emailGET /api/v1/receiving/emails

Find the recent messages attributed to the active project.

Fetch the messageGET /api/v1/receiving/emails/:id

Read headers, HTML, text, envelope recipients, and attachment metadata.

List attachmentsGET /api/v1/receiving/emails/:id/attachments

Inspect ids, filenames, content types, and sizes before downloading.

Download one fileGET /api/v1/receiving/emails/:id/attachments/:attachmentId

Retrieve the raw bytes with the stored MIME content type.

Verified receiving domains

Give every inbound workflow its own address space.

Add a dedicated subdomain such as reply.example.com, publish the ownership TXT and MX records, then verify DNS. Any address on that domain can become a route into your application.

  • Domains are owned by one project
  • Sending and receiving status stay independent
  • Existing mailbox MX can remain untouched
Configure a receiving domain
reply.example.comVerified
OwnershipTXT recordVerified
Inbound routeMX recordVerified
Keep normal mail where it is.Use a dedicated subdomain so your existing mailbox MX records stay untouched.

Built for app workflows

Inbound email without an inbox somebody has to watch.

This is API-based receiving for software workflows. Use a mailbox provider when people need IMAP, POP3, webmail, or a shared inbox.

Reply handling

Route replies back to the record, conversation, or workflow that created the original message.

Ticket intake

Turn support@ or help@ into structured requests your application can triage.

Form responses

Receive a customer response without polling a mailbox or maintaining an SMTP server.

Document ingestion

Inspect attachment metadata, then download only the files your workflow intends to keep.

Ready to receive?

Turn the next reply into an app event.

Start with a verified receiving subdomain, connect one signed webhook, and fetch only what the workflow needs.

Get your API keyRead the receiving guide
NOTICEAPI

One email API. Every project.

Get API key Read the quickstart

Product

Transactional emailMarketing emailAutomationsTemplatesReceiving APIProjectsPricing

Solutions

AgenciesSaaS teamsIndie buildersAI-assisted buildersCompare Resend

Developers

DocumentationQuickstartAPI referenceNode SDKAgents and MCPReact EmailSimulator

Operate

WebhooksSuppressionsDeliverability autopilotMultiple domainsGuidesTrust centerContact
© 2026 NoticeAPITransactional + marketing email
Acceptable usePrivacyTerms