Inbound Emails API

List, read, update, reply to, and delete inbound emails received at your configured addresses.

GET /v1/inbound

List all inbound emails for your organization, newest first.

ParameterTypeDefaultDescription
limitinteger50Results per page (max 100)
offsetinteger0Offset for pagination
statusstring-Filter by status: new, read, replied, archived
cURL
curl https://api.yoursend.dev/v1/inbound?status=new \
  -H "Authorization: Bearer ys_live_..."
Response
{
  "emails": [
    {
      "id": "50d4a4d6-...",
      "from_address": "customer@gmail.com",
      "to_address": "support@yourdomain.com",
      "subject": "Need help with my order",
      "status": "new",
      "spam_verdict": "PASS",
      "virus_verdict": "PASS",
      "spf_verdict": "PASS",
      "dkim_verdict": "PASS",
      "dmarc_verdict": "PASS",
      "address_id": "2f4a3d16-...",
      "created_at": "2026-03-20T04:01:45Z"
    }
  ],
  "total": 1,
  "limit": 50,
  "offset": 0
}

GET /v1/inbound/:id

Get a single inbound email by ID, including full content and headers.

cURL
curl https://api.yoursend.dev/v1/inbound/50d4a4d6-... \
  -H "Authorization: Bearer ys_live_..."

PUT /v1/inbound/:id

Update an email's status, assignment, or notes.

FieldTypeDescription
statusstringnew | read | replied | archived
assigned_tostringUser ID or name to assign the email to
notesstringInternal notes about the email
cURL
curl -X PUT https://api.yoursend.dev/v1/inbound/50d4a4d6-... \
  -H "Authorization: Bearer ys_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "status": "read", "notes": "Customer asking about order #1234" }'

POST /v1/inbound/:id/reply

Send a reply to an inbound email. The reply is sent from the inbound address that received the original email.

FieldTypeRequiredDescription
htmlstring*HTML body of the reply (* either html or text required)
textstring*Plain text body of the reply
subjectstringNoSubject line (defaults to "Re: [original subject]")
cURL
curl -X POST https://api.yoursend.dev/v1/inbound/50d4a4d6-.../reply \
  -H "Authorization: Bearer ys_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "html": "<p>Thanks for reaching out! We\'ll look into this right away.</p>",
    "subject": "Re: Need help with my order"
  }'
SDK
await ys.inbound.reply('50d4a4d6-...', {
  html: '<p>Thanks for reaching out!</p>',
});

GET /v1/inbound/:id/replies

List all replies sent for an inbound email.

cURL
curl https://api.yoursend.dev/v1/inbound/50d4a4d6-.../replies \
  -H "Authorization: Bearer ys_live_..."
Response
{
  "replies": [
    {
      "id": "abc123-...",
      "from_address": "support@yourdomain.com",
      "to_address": "customer@gmail.com",
      "subject": "Re: Need help with my order",
      "html": "<p>Thanks for reaching out!</p>",
      "ses_message_id": "010f019d...",
      "created_at": "2026-03-20T05:00:00Z"
    }
  ]
}

DELETE /v1/inbound/:id

Permanently delete an inbound email.

cURL
curl -X DELETE https://api.yoursend.dev/v1/inbound/50d4a4d6-... \
  -H "Authorization: Bearer ys_live_..."

Email Object

Full shape of an inbound email object:

FieldTypeDescription
idstringUnique email ID
from_addressstringSender email address
to_addressstringRecipient inbound address
subjectstringEmail subject line
statusstringnew | read | replied | archived
address_idstringID of the matched inbound address
assigned_tostring | nullAssigned team member
notesstring | nullInternal notes
spam_verdictstringPASS or FAIL
virus_verdictstringPASS or FAIL
spf_verdictstringPASS, FAIL, or NONE
dkim_verdictstringPASS, FAIL, or NONE
dmarc_verdictstringPASS, FAIL, or NONE
raw_contentstringFull raw email content (MIME)
created_atstringISO 8601 timestamp