Legible
Scan APIChrome extension

Resend vs Postmark

On the 29 checks both could be read on, Resend is 2 ahead of Postmark.

ResendyouPostmark

  1. Resend96/100

    Our scan, 9 Nov 2026, 04:00 UTC.

    Find 100 out of 100, Read 100 out of 100, Act 90 out of 100. Weakest step: Act.

  2. Postmark94/100

    Our scan, 9 Nov 2026, 04:00 UTC.

    Find 100 out of 100, Read 94 out of 100, Act 89 out of 100. Weakest step: Act.

These are public files we could read. They don't rank the products or show what an agent can do with them.

How close · on the 29 shared checks

Resend 96Postmark 94

Dashed: Resend after 1 fix (99). Our maths on these checks, not a forecast.

1 check passes on Postmark and fails on Resend. Resend passes 3 checks that fail on Postmark.

Fix these first

Most points for the least effort. What you tick goes into the prompts below, one for each team with a job to do.

If this passes, Resend's full score goes from 96 to 99. That's our checks, not a forecast of what agents do. Effort: hours, our estimate.

The pages marketing owns pass. What's left sits with engineering and product.

Passes on Postmark, fails our check on Resend

Most points for the least effort first, each next to the real file that passes.

  1. FailAct step+4 pointsEffort: hours, our estimate

    Fix 1: Your API spec doesn't say what an error looks like

    Do this: In your OpenAPI spec, give each operation a 4xx and a default response with an error schema: a stable code or type and a message, ideally as application/problem+json (RFC 9457), defined once under components and referenced with $ref.

    Errors have a schema: your API spec says what an error looks like: a code an agent can act on, and a message.

    FailWhat we read on Resend (1)

    PassWhat passes on Postmark, from our 9 Nov 2026 scan

    View their file ↗

    Why it might matter

    Without a documented error shape, an agent may have to guess from the message why a call failed, and retry or give up wrongly.

    Our call · Worth doing.

    If agents call your API, a stable error code tells them what went wrong without reading prose.

    Our judgement.

    Report a mistake
    How we test this
    • In the OpenAPI spec AR-ACT-02 finds, we count the operations that declare a 4xx, 5xx or default response with a schema, directly or through a $ref.
    • The credit is the share that do.
    • We note when they use application/problem+json (RFC 9457), the standard shape.
    • With no spec, it isn't counted.
    • The IETF's draft agent-friendly API profile, is-agentic and Alpic check it.
Where you're ahead

Passes on Resend, fails our check on Postmark

Nobody here passes our check yet

A chance to be first, if it's worth doing for you.

Check by check

CheckResendPostmark
Docs in MarkdownPassPassFailFails our check
Every operation has an operationIdPassPassFailFails our check
Errors have a schemaFailFails our checkPassPass
Install shown for four languagesPassPassFailFails our check

31 checks in all, 4 differ. 2 checks count for only some of you (Couldn't check or Not counted where it doesn't), so your totals can differ even where no check does. * We found something close: the full result has a dated note.

Track it weekly, or add it for your coding agent

Add it for your coding agent

Adds a skill to your project. Ask your agent to use it, and it scans your live site, reads the real file behind each gap and helps write your own. It only publishes if you ask.

npx legible-cli skill

If Windows PowerShell blocks npx, type npx.cmd instead.

A fail means our check didn't pass on what we read, which doesn't prove the thing isn't there. How we check. Why another scanner gives a different number.