SendGrid
SendGrid 403 Forbidden means you authenticated but lack authorization — a missing Mail Send scope or unverified From address. Steps to fix both.
Updated Jul 1, 2026
The short answer
A SendGrid HTTP 403 Forbidden means your request authenticated but isn't authorized to do what it asked. For the Mail Send API the two common causes are an API key missing the "Mail Send" scope, or a "From" address that isn't a Verified Sender / authenticated domain (Twilio error 60222). Fix it by granting the key Mail Send permission and verifying your sender identity.
A 403 Forbidden from SendGrid is an authorization failure, not an authentication failure. Per RFC 9110 §15.5.4, 403 means the server understood the request but refuses to fulfill it — and if credentials were supplied, it explicitly considers them insufficient to grant access, which in practice is what "authenticated but not authorized" means. In other words, SendGrid recognized your API key — it just won't let that key (or that sender) perform this request. This is distinct from a 401 Unauthorized, which means the key itself is missing or invalid.
For the SendGrid v3 Mail Send API there are two dominant causes. Identify yours from the response body before changing anything.
1. The API key is missing the "Mail Send" scope. SendGrid keys are scoped. A key created with Read-only access, or a Restricted/Custom key that doesn't include Mail Send, authenticates fine but is forbidden from sending. SendGrid keys come in three types — Full Access, Restricted (Custom) Access, and Billing Access — and within Custom keys each scope can be set to No Access, Read Access, or Full Access (SendGrid API Keys docs).
2. The "From" address is not a Verified Sender. SendGrid requires every from address to belong to a verified Single Sender or an authenticated domain. If it doesn't, the send is rejected with HTTP 403 and the message "The from address does not match a verified Sender Identity" — Twilio catalogs this as error 60222, explicitly an HTTP 403.
A third, narrower case: a 403 on the Email Activity API (not Mail Send) usually means the paid Extended Email Activity History add-on isn't on the account, or the key lacks Email Activity permission (SendGrid support).
Step 1 — Read the error body. The JSON errors[].message tells you which cause applies. A permissions problem reads like "access forbidden" / "does not have the required permissions"; a sender problem reads "does not match a verified Sender Identity."
Step 2 — Fix API key scope (cause 1). In the SendGrid dashboard go to Settings → API Keys, open your key, and confirm Mail Send is enabled. You can edit an existing key's permissions in place — you don't have to recreate it. If you create a new key, prefer Restricted Access with only the scopes you need (least privilege) rather than Full Access. Then update your app with the new key value (SendGrid only shows it once):
curl -X POST https://api.sendgrid.com/v3/mail/send \-H "Authorization: Bearer $SENDGRID_API_KEY" \-H "Content-Type: application/json" \-d '{"personalizations":[{"to":[{"email":"to@example.com"}]}],"from":{"email":"you@yourdomain.com"},"subject":"Test","content":[{"type":"text/plain","value":"hi"}]}'
After changing scopes, wait a minute and retry — permission changes can take a short time to propagate.
Step 3 — Verify your sender identity (cause 2). In Settings → Sender Authentication, either complete Domain Authentication (recommended) or Single Sender Verification, then make your from.email exactly match a verified identity. SendGrid advises against using free Gmail/Yahoo/Outlook addresses as Single Senders because DMARC enforcement at those providers will cause spam/rejection — authenticate your own sending domain instead.
Step 4 — If it's the Email Activity API, purchase the Extended Email Activity History add-on (primary admin or a Teammate with Administration permissions) and allow up to ~12 hours for billing to propagate, or switch to the Event Webhook.
With Courier
from address on your messages/templates must be a verified SendGrid sender. Update the key in your Courier SendGrid provider settings and confirm the from address matches a verified identity.References
FAQ
401 means the key is missing or invalid (authentication failed); 403 means the key is valid but not authorized for that action — typically it lacks the Mail Send scope, or the From address isn't a verified sender. If you get 401, fix the key value; if you get 403, fix the scope or sender identity.
One API, every provider
Courier connects to your email, SMS, and push providers, handles retries and failover, and surfaces delivery errors in plain language.
Reply-code definitions per RFC 9110 §15.5.4. Last reviewed Jul 1, 2026. Courier is not affiliated with third-party providers; error behavior may vary by implementation.
© 2026 Courier. All rights reserved.