Resend
Transactional email API for developers.
Overall score
76.4/100
resend-rest-v1
Measured Sep 21, 2026
Status
Ranked
Complete benchmark. `overall` is a weighted average of the applicable criteria, comparable to other surfaces in the same category and the same rubric version.
Coverage
98% of the rubric
Surfaces
evaluated.
We score a surface, not a product. One product often exposes several, and they are not worth the same.
resend-rest-v1restprimary
98% coverage
76.4/100
Criterion
by criterion.
Measured on resend-rest-v1, rubric v0.2.0. A criterion with no score is not counted as zero: it is excluded and the weights are renormalised.
Offload Valuejudged · weight 15 · Oct 5, 2026
92/100
Resend performs a real, irreversible external side effect: actually delivering email over SMTP infrastructure with domain authentication (DKIM/verification), suppression lists, deliverability, and inbound receiving. An agent cannot approximate sending a real email through inference at any token cost. Beyond sending, it provides domain verification, suppression management, webhooks, and delivery metrics capabilities impossible to synthesize locally. Some endpoints are CRUD (templates, contacts, labels), but the core value is the side effect.
- https://resend.com/docs/api-reference/introduction
Sending POST Send Email POST Send Batch Emails GET Retrieve Sent Email GET List Sent Emails PATCH Update Email POST Cancel Email
- https://resend.com/docs/api-reference/introduction
Sending POST Send Email POST Send Batch Emails GET Retrieve Sent Email GET List Sent Emails PATCH Update Email POST Cancel Email
- https://resend.com/docs/api-reference/introduction
Sending POST Send Email POST Send Batch Emails GET Retrieve Sent Email GET List Sent Emails PATCH Update Email POST Cancel Email
Interaction Costmeasured · weight 15 · Sep 21, 2026
100/100
Median over 2 successful run(s): 5100.5 tokens, 1 calls. Ratio to the best in "transactional-email" (3 surfaces measured, v0.2 scale). Cold, without documentation: 1/1 succeeded.
Error Recoverabilityprobed · weight 15 · Oct 5, 2026
42/100
unknown_endpoint → HTTP 422, clarity 50/100 (field named: no, allowed values: yes, RFC 9457: no) · wrong_type → HTTP 422, clarity 75/100 (field named: yes, allowed values: yes, RFC 9457: no) · hallucinated_enum → HTTP 200, clarity 30/100 (field named: no, allowed values: no, RFC 9457: no) · unknown_field → HTTP 200, clarity 30/100 (field named: no, allowed values: no, RFC 9457: no) · missing_required_param → HTTP 422, clarity 25/100 (field named: no, allowed values: no, RFC 9457: no) · idempotency_replay → HTTP 200, clarity 25/100 (field named: no, allowed values: no, RFC 9457: no)
- https://api.resend.com/domains
HTTP 401: {"statusCode":401,"message":"Missing API Key","name":"missing_api_key"}
- https://api.resend.com/domains/nonexistent_resource_xyz
HTTP 422: {"statusCode":422,"message":"The `id` must be a valid UUID","name":"validation_error"}
- https://api.resend.com/domains?limit=not_a_number
HTTP 422: {"statusCode":422,"message":"The `limit` field must be a `number`.","name":"validation_error"}
- https://api.resend.com/domains?status=nonexistent_status
HTTP 200: {"object":"list","has_more":false,"data":[{"id":"ff5340bf-5fde-4779-9e22-ee85c2c23e8f","name":"founderquest.app","status":"verified","created_at":"2026-09-28 04:33:52.822612+00","region":"eu-west-1","
Doc Legibilitymeasured · weight 12 · Oct 5, 2026
54/100
text/markup ratio 1.5% (weight 30) · rendering without JavaScript undetermined (excluded from the calculation) (weight 25) · machine-readable spec: https://resend.com/openapi.json (weight 25) · llms.txt: https://resend.com/llms.txt (weight 10) · 1 runnable example(s) (weight 10). Weighted average over 75 points of available sub-criteria.
Auth Frictionmeasured · weight 10 · Oct 5, 2026
95/100
Authorization: Bearer <key>, verified by a successful call. One header, no ceremony.
- https://api.resend.com/domains
HTTP 401: {"statusCode":401,"message":"Missing API Key","name":"missing_api_key"}
- https://api.resend.com/domains/nonexistent_resource_xyz
HTTP 422: {"statusCode":422,"message":"The `id` must be a valid UUID","name":"validation_error"}
- https://api.resend.com/domains?limit=not_a_number
HTTP 422: {"statusCode":422,"message":"The `limit` field must be a `number`.","name":"validation_error"}
- https://api.resend.com/domains?status=nonexistent_status
HTTP 200: {"object":"list","has_more":false,"data":[{"id":"ff5340bf-5fde-4779-9e22-ee85c2c23e8f","name":"founderquest.app","status":"verified","created_at":"2026-09-28 04:33:52.822612+00","region":"eu-west-1","
Safety & Reversibilityprobed · weight 10 · Oct 5, 2026
58/100
Two identical POSTs with the same Idempotency-Key header return the same resource (01a10bfd-3437-7548-9431-cb260319e0a5). An agent can retry without risking a duplicate. (weight 35) · No isolated test environment: any experiment hits production. (weight 25). Weighted average over 60 points of measured sub-criteria.
- https://api.resend.com/domains
HTTP 401: {"statusCode":401,"message":"Missing API Key","name":"missing_api_key"}
- https://api.resend.com/domains/nonexistent_resource_xyz
HTTP 422: {"statusCode":422,"message":"The `id` must be a valid UUID","name":"validation_error"}
- https://api.resend.com/domains?limit=not_a_number
HTTP 422: {"statusCode":422,"message":"The `limit` field must be a `number`.","name":"validation_error"}
- https://api.resend.com/domains?status=nonexistent_status
HTTP 200: {"object":"list","has_more":false,"data":[{"id":"ff5340bf-5fde-4779-9e22-ee85c2c23e8f","name":"founderquest.app","status":"verified","created_at":"2026-09-28 04:33:52.822612+00","region":"eu-west-1","
Payload Efficiencyprobed · weight 8 · Oct 5, 2026
63/100
No discoverable field selection (tested fields, select, _fields, expand, properties): the agent swallows the whole resource. (weight 35) · 262 bytes per returned object (3 object(s) in the control response). (weight 25) · Cursor pagination detected ("has_more"). (weight 20) · One list envelope, standard. (weight 10) · ETag present: an agent can avoid re-downloading. (weight 10). Weighted average over 100 points of measured sub-criteria.
- https://api.resend.com/domains
HTTP 401: {"statusCode":401,"message":"Missing API Key","name":"missing_api_key"}
- https://api.resend.com/domains/nonexistent_resource_xyz
HTTP 422: {"statusCode":422,"message":"The `id` must be a valid UUID","name":"validation_error"}
- https://api.resend.com/domains?limit=not_a_number
HTTP 422: {"statusCode":422,"message":"The `limit` field must be a `number`.","name":"validation_error"}
- https://api.resend.com/domains?status=nonexistent_status
HTTP 200: {"object":"list","has_more":false,"data":[{"id":"ff5340bf-5fde-4779-9e22-ee85c2c23e8f","name":"founderquest.app","status":"verified","created_at":"2026-09-28 04:33:52.822612+00","region":"eu-west-1","
Task Atomicitymeasured · weight 6 · Sep 21, 2026
100/100
Median over 2 successful run(s): 5100.5 tokens, 1 calls. Ratio to the best in "transactional-email" (3 surfaces measured, v0.2 scale). Cold, without documentation: 1/1 succeeded.
Prior Knowledge Coveragemeasured · weight 5 · Sep 21, 2026
100/100
Median over 2 successful run(s): 5100.5 tokens, 1 calls. Ratio to the best in "transactional-email" (3 surfaces measured, v0.2 scale). Cold, without documentation: 1/1 succeeded.
Async Compatibilityprobed · weight 2 · Oct 5, 2026
100/100
POST /emails returns an identifier, and GET /emails/{id} reads it back (HTTP 200): the result can be retrieved by polling, with no server to host. Long-polling / SSE not probed, excluded from the weighting.
- https://api.resend.com/domains
HTTP 401: {"statusCode":401,"message":"Missing API Key","name":"missing_api_key"}
- https://api.resend.com/domains/nonexistent_resource_xyz
HTTP 422: {"statusCode":422,"message":"The `id` must be a valid UUID","name":"validation_error"}
- https://api.resend.com/domains?limit=not_a_number
HTTP 422: {"statusCode":422,"message":"The `limit` field must be a `number`.","name":"validation_error"}
- https://api.resend.com/domains?status=nonexistent_status
HTTP 200: {"object":"list","has_more":false,"data":[{"id":"ff5340bf-5fde-4779-9e22-ee85c2c23e8f","name":"founderquest.app","status":"verified","created_at":"2026-09-28 04:33:52.822612+00","region":"eu-west-1","
Tool-Native (MCP)binary · weight 2
—/100
Does the vendor publish an official, maintained MCP server?
Runs, verified
never on the agent’s word.
Every row is a real attempt at the category’s canonical task. Success is verified by reading the created resource back.
| Task | Tokens | Calls | Errors | Docs | Result |
|---|---|---|---|---|---|
| send-transactional-email | 4,187 | 2 | 0 | without | verified |
| send-transactional-email | 4,254 | 1 | 0 | with | verified |
| send-transactional-email | 5,947 | 1 | 0 | with | verified |
The same entry,
without the markup.
You publish this API and dispute a score? The methodology is public and every score above points to the evidence that produced it.