Resend API error · 403
Resend 403: “You can only send testing emails to your own email address”
Resend returns this 403 validation_error when you send from its shared testing domain, resend.dev (usually onboarding@resend.dev), to any address other than the one on your Resend account. The testing domain only delivers to you, so verify a domain you own in Resend, publish the DNS records it gives you and change the from address to that domain.
The error
| Status | 403 |
|---|---|
| Name | validation_error |
| Message | You can only send testing emails to your own email address (youremail@domain.com). To send emails to other recipients, please verify a domain at resend.com/domains, and change the `from` address to an email using this domain. |
Name, status and message as Resend documents them, last verified 28 September 2026.
Why it happens
- The from address is
onboarding@resend.dev, or anything else @resend.dev, which quickstarts use so the first send works before DNS is set up. - The code moved from a local test, where you mailed yourself, to real recipients without changing the from address.
- A domain was added but the from address still uses
resend.dev. Adding the domain is not enough; the from has to use it.
How to fix it
Add and verify your domain
In Resend, open Domains, add the domain you want to send from, and publish the DNS records it shows at your DNS provider. The domain is usable once Resend shows it as verified.
Change the from address
Once the domain is verified, send from an address on it. The rest of the request stays the same.
const { data, error } = await resend.emails.send({ // was: from: "onboarding@resend.dev" from: "Acme <hello@acme.com>", to: ["customer@example.com"], subject: "Your receipt", html: receiptHtml, });Tell it apart from the domain mismatch 403
A different 403 with the same name says “The domain.com domain is not verified. Please, add and verify your domain.” That one means the from address uses a domain that is not verified on this account: check the spelling, the subdomain, and that the API key belongs to the account that verified it.
If you would rather not manage a shared testing domain at all, SendRaven has none; see SendRaven vs Resend or migrate from Resend.
Questions
Why can I only send Resend test emails to myself?
Because resend.dev is a shared testing domain that only delivers to the address on your Resend account. Sending to anyone else requires a domain you own, verified in Resend.
Can I keep using onboarding@resend.dev in production?
No. It only ever delivers to your own address, so any real recipient gets this 403.
What SendRaven does here
SendRaven has no shared test domain, so this step comes first rather than as a surprise.
Every send goes out from a domain you verified. Until one is verified, POST /v1/emails answers 422 no_verified_identity and says which domain it looked for. The fix is the same one as above: add the domain and publish its records.
POST /v1/domains with the domain you own returns every DNS record to publish, and sets up two sending identities from it: mail. for transactional mail and news. for marketing, so a campaign's reputation can never touch a password reset. GET /v1/domains/{id} shows each record's live check, so an agent can publish the records and watch them verify.
Every error type, its status and whether to retry it is on the errors reference. The whole comparison is SendRaven vs Resend, and moving over is migrate from Resend.
POST /v1/emails
{ "from": "hello@acme.com", … }
422 { "error": { "type": "no_verified_identity",
"message": "No verified transactional sending domain for hello@acme.com. Add and verify the domain first." } }Other Resend errors
Sources
Last verified 28 September 2026.

Email infrastructure for AI agents.
SendRaven sends and receives email through one API, joins replies to their threads, and lets you put a daily limit, a recipient allowlist or an approval hold on the key an agent holds.
