Skip to main content
POST
/
api
/
webhook
/
inbox-drop
Inbox Drop ingress — inbound email payload from provider adapter
curl --request POST \
  --url https://your-instance.example.com/api/webhook/inbox-drop \
  --header 'Content-Type: application/json' \
  --data '
{
  "organizationId": "64a1b2c3d4e5f60012345678",
  "userId": "64a1b2c3d4e5f60012345679",
  "emailData": {
    "from": "alex.nguyen@example.com",
    "to": [
      "inbound+org-64a1b@inbound.tetherai.ca"
    ],
    "subject": "Maple Court availability",
    "body": "Hi — could you confirm the corner unit is still listed?"
  },
  "metadata": {
    "receivedAt": "2026-05-20T15:04:01.135Z",
    "source": "sendgrid_inbound"
  }
}
'
{
  "success": true,
  "matchedCount": 1
}

Documentation Index

Fetch the complete documentation index at: https://docs.tetherai.ca/llms.txt

Use this file to discover all available pages before exploring further.

Body

application/json

Internal-service request body sent by inbound-email adapters (SendGrid, etc.) to fan out to matching workflows.

organizationId
string
required
emailData
object
required

Parsed inbound email payload produced by a provider adapter (e.g. SendGrid Inbound Parse).

Example:
{
"from": "alex.nguyen@example.com",
"to": "inbound+org-64a1b@inbound.tetherai.ca",
"subject": "Maple Court availability",
"body": "Hi — could you confirm the corner unit is still listed for next month?",
"bodyHtml": "<p>Hi — could you confirm the corner unit is still listed for next month?</p>",
"headers": { "Message-ID": "<abc123@mail.example.com>" },
"attachments": []
}
userId
string

Optional. Falls back to the workflow's owning user when missing.

metadata
object

Response

Inbound email accepted and matching workflows enqueued

success
enum<boolean>
required
Available options:
true
matchedCount
integer
required

Number of workflows whose InboxDropTrigger matched this email. 0 = no match; the adapter may fall back to a non-workflow handler.