> ## Documentation Index
> Fetch the complete documentation index at: https://docs.autosend.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Inbound Email API

> Receive incoming emails on AutoSend through webhooks, then read, parse, or reply to them programmatically with the Inbound Email API.

export const AUTOSEND_PATHS = {
  dashboard: 'https://autosend.com/dashboard',
  apiKey: 'https://autosend.com/account/api-key',
  faqs: 'https://autosend.com/faq',
  marketingEmails: 'https://autosend.com/marketing-emails',
  webhooks: 'https://autosend.com/webhooks',
  composeByAutoSend: 'https://autosend.com/compose',
  emailActivity: 'https://autosend.com/email-activities',
  team: 'https://autosend.com/settings/team',
  pricing: 'https://autosend.com/pricing',
  verifyEmail: 'https://autosend.com/compose/email-builder?template=verify-email',
  welcomeEmail: 'https://autosend.com/compose/email-builder?template=welcome-email',
  productUpdate: 'https://autosend.com/compose/email-builder?template=product-update',
  newsletter: 'https://autosend.com/compose/email-builder?template=newsletter',
  automations: 'https://autosend.com/automations',
  globalSuppressions: 'https://autosend.com/suppressions/global',
  signup: 'https://autosend.com/signup',
  domains: 'https://autosend.com/settings/domains',
  smtpKey: 'https://autosend.com/settings/smtp',
  logoKit: 'https://asend.email/logo',
  contactsPage: 'https://autosend.com/contacts/list-and-segments',
  accountBilling: 'https://autosend.com/account/billing',
  accountUsage: 'https://autosend.com/account/usage',
  terms: 'https://autosend.com/legal/terms',
  inbound: 'https://autosend.com/email-activities/inbound'
};

export const APP_PATHS = {
  home: '/',
  quickstart: '/quickstart',
  domainConfiguration: '/domain',
  apiReference: '/api-reference',
  sendEmail: '/api-reference/mails/send',
  bulkSendEmail: '/api-reference/mails/bulk',
  upsertContactApiRef: '/api-reference/contacts/upsert-contact',
  transactional: '/transactional-emails',
  emailActivity: '/transactional-emails/email-activity',
  emailTemplates: '/transactional-emails/email-templates',
  sendingEmail: '/quickstart/email-using-api',
  transactionalTroubleshooting: '/transactional-emails/troubleshooting',
  marketing: '/marketing-emails',
  campaigns: '/marketing-emails/campaigns',
  contacts: '/marketing-emails/contacts',
  contactsIntroduction: '/marketing-emails/contacts/introduction',
  contactsImportCsv: '/marketing-emails/contacts/import-csv',
  contactsLists: '/marketing-emails/contacts/lists',
  contactsSegments: '/marketing-emails/contacts/segments',
  contactsCustomFields: '/marketing-emails/contacts/contact-properties',
  contactsContactProperties: '/marketing-emails/contacts/contact-properties',
  createContactPropertyApiRef: '/api-reference/contact-properties/create',
  listContactPropertiesApiRef: '/api-reference/contact-properties/list',
  getContactPropertyApiRef: '/api-reference/contact-properties/get-by-name',
  deleteContactPropertyApiRef: '/api-reference/contact-properties/delete',
  sender: '/marketing-emails/sender',
  unsubscribeGroups: '/others/unsubscribe-groups',
  webhookIntroduction: '/others/webhooks/introduction',
  webhookEventType: '/others/webhooks/event-type',
  webhookRetries: '/others/webhooks/retries',
  webhookVerifyRequests: '/others/webhooks/verify-requests',
  dynamicTemplates: '/dynamic-templates',
  guides: '/guides',
  sitemap: '/sitemap.xml',
  team: '/others/team',
  automations: '/automations',
  events: '/automations/events',
  sendEventApi: '/api-reference/events/send-event',
  smtpIntroduction: '/quickstart/smtp',
  betterAuth: '/guides/better-auth',
  convexGuide: '/guides/convex',
  templateVariables: '/transactional-emails/variables',
  suppressions: '/others/suppressions',
  rateLimit: '/api-reference/rate-limit',
  nodejsSdk: '/sdk/nodejs',
  smtpIntegrationGuides: '/guides/smtp',
  apiKeys: '/api-keys',
  encryptedPayloads: '/others/encrypted-payloads',
  apiReferenceIntroduction: '/api-reference/introduction',
  lovableGuide: '/ai/integrations/lovable',
  aiIntroduction: '/ai/introduction',
  aiSkills: '/ai/skills',
  aiMcpServer: '/ai/mcp-server',
  aiLovable: '/ai/integrations/lovable',
  aiBolt: '/ai/integrations/bolt',
  aiV0: '/ai/integrations/v0',
  aiReplit: '/ai/integrations/replit',
  mcpClaude: '/ai/mcp-clients/claude',
  mcpCursor: '/ai/mcp-clients/cursor',
  mcpCopilot: '/ai/mcp-clients/copilot',
  mcpWindsurf: '/ai/mcp-clients/windsurf',
  mcpCodex: '/ai/mcp-clients/codex',
  mcpAntigravity: '/ai/mcp-clients/antigravity',
  mcpChatgpt: '/ai/mcp-clients/chatgpt',
  mcpRaycast: '/ai/mcp-clients/raycast',
  domainWarmup: '/marketing-emails/domain-warmup',
  projects: '/projects',
  createAutomationApi: '/api-reference/automations/create-automation',
  migrationSendgrid: '/migration/sendgrid',
  migrationResend: '/migration/resend',
  auth0CustomAction: '/guides/auth0-custom-action',
  accountBilling: '/others/account/billing',
  accountUsage: '/others/account/usage',
  inboundIntroduction: '/inbound/introduction',
  listInboundMessagesApi: '/api-reference/inbound-emails/list-messages',
  getInboundMessageApi: '/api-reference/inbound-emails/get-message',
  downloadInboundAttachmentApi: '/api-reference/inbound-emails/download-attachment',
  replyToInboundMessageApi: '/api-reference/inbound-emails/reply-to-message',
  wikiDailySendingLimit: '/wiki/daily-sending-limit'
};

The AutoSend Inbound Email API lets your application receive incoming emails programmatically. When a message lands on one of your receiving domains, AutoSend fires an `email.received` webhook carrying the message metadata (message ID, sender, recipients, subject, receiving domain, and threading). Your application then calls a structured REST endpoint with that message ID to fetch the full message, including headers, plain text and HTML bodies, attachments, and verdicts. Use it to build support inboxes, parse customer replies, route email into internal tools, or store conversations alongside the rest of your data.

<Info>
  Jump straight to the [Inbound Emails API reference](/api-reference/inbound-emails/list-messages)
  for endpoints, request schemas, and response samples.
</Info>

## How the Inbound Email API works

<Steps>
  <Step titleSize="h3" title="Subscribe to the email.received event">
    Create a new webhook or reuse an existing one, and subscribe it to the `email.received` event. You can set this up from the <a href={AUTOSEND_PATHS.webhooks}>Webhooks</a> section of the dashboard. See the <a href={APP_PATHS.webhookIntroduction}>Webhooks introduction</a> if you need a refresher on creating endpoints.
  </Step>

  <Step titleSize="h3" title="Receive an inbound notification">
    When an email arrives on one of your receiving domains, AutoSend delivers an `email.received` webhook to your endpoint. The payload includes the message ID, sender, recipient, subject, receiving domain, and threading metadata. See the full payload in the <a href={APP_PATHS.webhookEventType}>event types reference</a>.
  </Step>

  <Step titleSize="h3" title="Fetch the full message via API">
    Use the message ID from the webhook payload to fetch the complete structured JSON, including headers, text and HTML bodies, attachments metadata, and verdicts, via the <a href={APP_PATHS.getInboundMessageApi}>Get Message</a> endpoint.
  </Step>
</Steps>

<Tip>
  To browse every inbound message your project has received, open the [Email Activity > Inbound tab](https://autosend.com/email-activities/inbound) in the dashboard.
</Tip>

***

## Receiving domains

Every project comes with a default receiving domain. You can also enable Inbound on a custom domain if you need email to arrive at an address you control.

### Default receiving domain

Each project is provisioned with a unique receiving subdomain in the form `{prefix}@{uniquesubdomain}.autosend.email`. You pick any prefix and immediately start receiving email at that address. **No DNS setup is required**.

<Frame>
  <img src="https://mintcdn.com/autosend-13920f5c/-B7sGs0WJTw0HK66/images/inbound/default-receiving-domain.png?fit=max&auto=format&n=-B7sGs0WJTw0HK66&q=85&s=b988de00f663d716fe7e54dff1494a5e" alt="Default receiving domain configuration in AutoSend" width="2872" height="1846" data-path="images/inbound/default-receiving-domain.png" />
</Frame>

<Tip>
  The default receiving domain is the fastest way to get started and is the recommended option for
  most projects.
</Tip>

### Use your own domain

You can also enable Inbound on a domain you've already verified for sending on AutoSend, or add a brand-new domain. Follow the MX record instructions shown in the dashboard to point incoming mail to AutoSend.

<Frame>
  <img src="https://mintcdn.com/autosend-13920f5c/-B7sGs0WJTw0HK66/images/inbound/custom-receiving-domain.png?fit=max&auto=format&n=-B7sGs0WJTw0HK66&q=85&s=0cffc76e2729105660e36c5e9a15a5c6" alt="Enabling Inbound for a custom domain in AutoSend" width="2878" height="1846" data-path="images/inbound/custom-receiving-domain.png" />
</Frame>

<Warning>
  If your domain is already serving inboxes through Gmail, Outlook, or another mail provider, you
  cannot also use it for receiving on AutoSend. MX records can only point to one provider at a time.
  To work around this, set up [email forwarding](https://support.google.com/mail/answer/10957) from
  your existing mail provider to your AutoSend default receiving address.
</Warning>

***

## Reading and replying to messages

Once an `email.received` webhook fires, you can use the Inbound Emails API to read the full message, download attachments, and reply in the same thread.

<Columns cols={2}>
  <Card title="List messages" icon="https://mintcdn.com/autosend-13920f5c/BvBuJTZLIsxccP1g/icons/list-message.svg?fit=max&auto=format&n=BvBuJTZLIsxccP1g&q=85&s=e7d5a8bef9510520a5887a1e57630da8" href={APP_PATHS.listInboundMessagesApi} width="24" height="24" data-path="icons/list-message.svg">
    Paginate, filter, and search messages received on your project's inbound-enabled domains.
  </Card>

  <Card title="Get a message" icon="https://mintcdn.com/autosend-13920f5c/BvBuJTZLIsxccP1g/icons/get-a-message.svg?fit=max&auto=format&n=BvBuJTZLIsxccP1g&q=85&s=93eb767e612fe48839c035d7290de4fb" href={APP_PATHS.getInboundMessageApi} width="24" height="24" data-path="icons/get-a-message.svg">
    Fetch a single message with full body, headers, attachments metadata, and threading.
  </Card>

  <Card title="Download attachment" icon="https://mintcdn.com/autosend-13920f5c/BvBuJTZLIsxccP1g/icons/download-attachment.svg?fit=max&auto=format&n=BvBuJTZLIsxccP1g&q=85&s=c428758f93f5e5482d994b0e6ae42ecf" href={APP_PATHS.downloadInboundAttachmentApi} width="24" height="24" data-path="icons/download-attachment.svg">
    Download a single attachment by its zero-based index.
  </Card>

  <Card title="Reply to a message" icon="https://mintcdn.com/autosend-13920f5c/BvBuJTZLIsxccP1g/icons/reply-to-a-message.svg?fit=max&auto=format&n=BvBuJTZLIsxccP1g&q=85&s=934ea0b85e2fc79dafc03a9075b2da14" href={APP_PATHS.replyToInboundMessageApi} width="24" height="24" data-path="icons/reply-to-a-message.svg">
    Send a threaded reply via In-Reply-To and References headers using a verified sending domain.
  </Card>
</Columns>

***

## Common use cases

* **AI agent inbox**: Pair Inbound with the AutoSend sending API to give your AI agents a fully two-way email address. Your agents can both send outbound messages and receive replies in the same project, enabling real email conversations driven by an LLM.
* **Support portal or helpdesk**: Route customer replies into your ticketing system and let agents respond from a unified inbox.
* **CRM email logging**: Capture incoming emails as activities on the matching contact, lead, or deal record.
* **Applicant tracking system (ATS)**: Parse candidate replies to recruiting outreach and attach them to the right pipeline stage.
* **Custom email client or inbox**: Build a fully featured mailbox without running your own mail server, MX records, or IMAP plumbing.

***

## Frequently asked questions

<AccordionGroup>
  <Accordion title="Can I receive emails using an API?">
    Yes. The AutoSend Inbound Email API delivers incoming messages to your application in two steps.
    First, an `email.received` webhook notifies you when a new email arrives on one of your
    receiving domains. Second, a REST endpoint returns the full structured message, including
    headers, plain text and HTML bodies, attachments, and threading metadata.
  </Accordion>

  <Accordion title="Which AutoSend plan do I need to use the Inbound Email API?">
    The Inbound Email API is available on the **Starter 10k** plan and above. Free and trial plans
    do not include inbound receiving. Upgrade your project from the Billing page to enable it.
  </Accordion>

  <Accordion title="How do I receive incoming emails on AutoSend?">
    Pick or enable a receiving domain in the dashboard, create a webhook subscribed to the
    `email.received` event, and call the <a href={APP_PATHS.getInboundMessageApi}>Get Message</a>{' '}
    endpoint with the message ID from the webhook payload to fetch the full email.
  </Accordion>

  <Accordion title="Do I need a custom domain to use the Inbound Email API?">
    No. Every project is provisioned with a default receiving domain in the form `{prefix}@ 		{uniquesubdomain}.autosend.email` and you can start receiving email immediately without any DNS
    setup. You can also enable Inbound on a verified custom domain when you need email to arrive at
    an address you control.
  </Accordion>

  <Accordion title="Can I reply to inbound emails through the API?">
    Yes. Use the <a href={APP_PATHS.replyToInboundMessageApi}>Reply to Message</a> endpoint to send
    a threaded reply. AutoSend sets the `In-Reply-To` and `References` headers automatically so the
    reply lands in the same conversation in the recipient's inbox.
  </Accordion>

  <Accordion title="How do I parse attachments from an inbound email?">
    The <a href={APP_PATHS.getInboundMessageApi}>Get Message</a> response includes attachment
    metadata for every message. Download the binary content of a specific attachment by its
    zero-based index via the{' '}
    <a href={APP_PATHS.downloadInboundAttachmentApi}>Download Attachment</a> endpoint.
  </Accordion>
</AccordionGroup>

***

## Related resources

<Columns cols={2}>
  <Card title="email.received event" icon="https://mintcdn.com/autosend-13920f5c/nx_wYfWx3qeZwg1C/icons/event-types.svg?fit=max&auto=format&n=nx_wYfWx3qeZwg1C&q=85&s=7e37cf26e7cf6375a72cf73483295f3f" href={`${APP_PATHS.webhookEventType}#email-received`} width="24" height="24" data-path="icons/event-types.svg">
    Full webhook payload reference for inbound notifications.
  </Card>

  <Card title="Webhooks introduction" icon="https://mintcdn.com/autosend-13920f5c/nx_wYfWx3qeZwg1C/icons/webhook.svg?fit=max&auto=format&n=nx_wYfWx3qeZwg1C&q=85&s=14ad6675c71731ac04f786559a813ee1" href={APP_PATHS.webhookIntroduction} width="24" height="24" data-path="icons/webhook.svg">
    Set up a webhook endpoint and verify requests.
  </Card>

  <Card title="Manage Inbound" icon="https://mintcdn.com/autosend-13920f5c/nx_wYfWx3qeZwg1C/icons/at-sign.svg?fit=max&auto=format&n=nx_wYfWx3qeZwg1C&q=85&s=b0580da3edef364b2dee3ce4b1387771" href={AUTOSEND_PATHS.inbound} width="24" height="24" data-path="icons/at-sign.svg">
    Configure receiving domains and view incoming messages in the dashboard.
  </Card>

  <Card title="Domains" icon="https://mintcdn.com/autosend-13920f5c/nx_wYfWx3qeZwg1C/icons/domain.svg?fit=max&auto=format&n=nx_wYfWx3qeZwg1C&q=85&s=9393f9f9b0f7029e6ba8acf2bc09d864" href={AUTOSEND_PATHS.domains} width="24" height="24" data-path="icons/domain.svg">
    Verify a domain or add a new one to use with Inbound.
  </Card>
</Columns>


## Related topics

- [Changelog](/changelog.md)
- [What is AutoSend?](/index.md)
- [Event Types](/others/webhooks/event-type.md)
- [Webhooks](/others/webhooks/introduction.md)
- [AutoSend Node.js SDK](/sdk/nodejs.md)
