SIGNED PROVIDER EVENTPOST /V1/EMAIL/PROVIDER-EVENTS
Verify the raw body before JSON parsing. For Resend, require svix-id, svix-timestamp, and svix-signature. For SendGrid, verify the signed Event Webhook with the configured ECDSA public key or approved OAuth control.
Content-Type: application/json
svix-id: msg_...
svix-timestamp: 1788631200
svix-signature: v1,...
{
"schema_version": "1.0",
"provider": "resend | sendgrid",
"provider_event_id": "evt_opaque",
"provider_message_id": "msg_opaque",
"event": "delivered | bounced | complained | unsubscribed",
"occurred_at": "2026-09-05T18:05:00Z",
"recipient_ref": "recipient_opaque",
"preflight_id": "pilot_01J..."
}
AUTHENTICATED SUPPRESSIONPOST /V1/EMAIL/SUPPRESSIONS
Require a narrowly scoped service token and idempotency key. Store the suppression before acknowledging a provider complaint, hard bounce, unsubscribe, pilot withdrawal, or cancellation.
Authorization: Bearer <email:suppress token>
Content-Type: application/json
Idempotency-Key: sup_<recipient_ref>_<reason>
X-Request-ID: req_01J...
{
"recipient_ref": "recipient_opaque",
"scope": "vpc_sandbox_onboarding",
"reason": "unsubscribe | complaint | hard_bounce | withdrawal",
"source": "one_click | provider_webhook | operator",
"requested_at": "2026-09-05T18:10:00Z",
"notice_version": "2026-09-05.v3"
}