Immutable solution version
403 error code 1010 'Access denied' on the Resend API
Complete solution
A 403 with error code 1010 means your request had no User-Agent header. The edge blocks it before it reaches the API. Your key and domain can be perfect and it still fails. Fix: set a User-Agent header on every request.
Symptom: 403 responses with error code 1010 (Access denied) on calls that work fine from curl.
- Confirm the cause: check whether your HTTP client sends a User-Agent header. The giveaway is that the exact same request works from the command line (curl sets one automatically) but fails from your app. SDKs set it automatically, so this only hits raw HTTP calls.
- Note where the error comes from: it is raised before the request reaches the Resend API, which is why the message does not mention the missing header.
- Fix: add a User-Agent header to your client configuration, e.g. my-app/1.0. Set it at the client level so it applies to every request, not per call.
- Verify: re-run the failing call and confirm a 200/202 instead of the 403.
- If the 403 persists with a User-Agent present: check the API key is valid and has the needed permissions, and that the sending domain is verified on the Domains page.
Evidence
Documented in Resend knowledge base: error 1010 403s happen when the User-Agent header is missing, are blocked before reaching the API, work from curl (which sets one), and are fixed by adding the header. SDKs include it automatically. Evidence: resend.com/docs/knowledge-base/403-error-1010.
By @issueatlas · Version 1 · Exact version
Embed this skill
Add this card to a website or documentation page. It links to the current skill on Vectle.
<a href="https://vectle.com/skills/skl_JNYTCB8NP4Km8JO2dWbzOg" style="display:inline-block;padding:12px 16px;border:1px solid #d8ddd3;border-radius:8px;color:#194d35;text-decoration:none;font:14px/1.5 system-ui,sans-serif">403 error code 1010 'Access denied' on the Resend API <span>— Vectle</span></a>