Skip to content

Swipe right for a newer agent, Discord Moderator Desk. Swipe left for an older agent, Tutorial Gap Finder.

Issue 33 · 7 Oct 2026 · Medium · Free

API Error Explainer

The call failed, the body is a blob, and you cannot tell whether to fix the request, fix the clock, or stop retrying.

Paste a status code and the response body. Get what broke, what to change in the request, and whether a retry will help.

Category
Dev Tools
Runs in
ChatGPT
Claude
Gemini

What you put in and what you get out

Sample you can paste

Request I sent: POST /api/refunds
Headers: Content-Type application/json, X-Signature present. Idempotency-Key: evt_1844
Body: {"order_id":"1844","amount":1}
Response: 401
{"error":"bad signature","expected_prefix":"sha256="}
I retried twice. Both 401. The secret in .env.example was sk_test_replace_me and I fear I signed with the example placeholder.
Do not tell me how to forge a signature for an endpoint I do not own. This is my API.

Share this agent

API Error Explainer — You put in Request I sent: POST /api/refunds. You get out Retry. Free from One Agent a Day.

Share on XShare on LinkedIn

30-second demo

0:00

The call

POST /api/refunds returned 401 bad signature twice. The body says the prefix should be sha256=. They may have signed with the example placeholder.

How it works

An error explainer separates a bad request from a bad moment. You paste the status, the body, and what you sent. It says what most likely failed, what to change, and whether another identical try can do anything but repeat the failure.

Same response twice means stop hammering it. A signature failure on your own API is fixed by signing the bytes the server verifies, not by turning the check off. The agent will not write a bypass, and it will not help you produce a valid signature for a system you do not control.

Change one thing. Send once. If the status changes, you learned something. If it does not, paste the new body, not the same one again.

Use it

  1. Step 1

    Paste the status, the body, and what you sent

    Include the path, the headers that matter, and whether a retry already failed the same way. Redact secrets; say if you used a placeholder.

  2. Step 2

    Say whose API it is

    Yours, or a vendor's documented endpoint you are calling as a client. The explainer will not help you attack an endpoint you do not own.

  3. Step 3

    Paste the prompt

    You get the likely break, the change to the request, and a retry decision: retry, retry after a change, or stop.

  4. Step 4

    Change one thing and send once

    If the decision is stop, stop. A 401 that survived two identical retries will survive a third.

Prompt

api-error-explainer.prompt.txt

You explain one HTTP error to the person who sent the request. You help them fix their own client. You do not help them bypass someone else's check.

INPUTS
- Method, path, relevant headers, and whether this is their API or a vendor they are allowed to call.
- Status and body.
- What already happened on retry.

RULES
- Say what the status means in this case, using the body. Do not recite the whole status-code table.
- The change is about the request they control: a header, a field, a clock skew they can see, a secret placeholder they admitted.
- Retry decision is one of: retry the same request, retry only after the change, or stop. If they already saw the same 4xx twice, do not pick "retry the same request."
- A 401 or 403 signature failure: tell them to check the secret and the canonical bytes. Do not disable the check. Do not forge a signature for a host they do not own. If they did not say it is theirs or a documented vendor, refuse the signature detail and explain the status only.
- Do not echo a secret. Do not invent a field the body did not mention.
- Idempotency: if they sent a key, tell them to reuse it after a fix so a retry cannot double-apply.

OUTPUT
## What broke
## Change
## Retry
One of the three decisions, and why.

## Do not
The bypass or the repeated try you are refusing.
Was this useful?

A yes or no is enough. The note stays on this server's log.

Swipe sideways

  1. Dev Tools26 Sep 2026 · #22CLI Help RewriterPaste --help output. Get three copy-paste examples, the flags that matter, and the ones that should stay hidden.In$ ledger --helpOutHiddenEasy
    Preview this drop
    1. 0:00 The dumpledger refund needs --order, optional --dry-run. A long flag list includes --experimental-split, which they said is unfinished.
    2. 0:08 Three examplesA dry run, a real refund with --order, and a json version. Each uses the binary name ledger.
    3. 0:16 Flags that matter--order, --dry-run, --json. Timeout stays in the dictionary because it has a default, not in the first example.
    4. 0:24 Hidden--experimental-split is listed under do-not-feature. No invented subcommand.

    No daily video for this drop yet. The in and out lines above are the preview.

  2. Automation30 Sep 2026 · #26Webhook Contract WriterPaste a sample webhook body. Get required fields, the idempotency key, retry behavior, and how you will verify the signature.InSample POST body from the form vendor, sent to us:OutThe checkAdvanced
    Preview this drop
    1. 0:00 The sampleevt_1844, type refund.requested, order 1844, amount 40. Signature header documented as HMAC-SHA256 of the raw body. Retries for 24 hours.
    2. 0:08 Requiredid, type, data.order_id, data.amount, data.currency. created is optional for the side effect.
    3. 0:16 IdempotencyStore evt_1844. A second delivery with the same id returns 200 and does not refund again.
    4. 0:24 The checkCompute HMAC-SHA256 over the raw body with the stored secret and compare to X-Signature. Mismatch is 401 and no side effect. No bypass is described.

    No daily video for this drop yet. The in and out lines above are the preview.

  3. Fun & Weird25 Sep 2026 · #21Error Message PoetPaste a harsh error. Get a version a person can act on, a short UI string, and a joke you can delete without losing the fix.InCurrent UI string: "Invariant violation: refund total mismatch (code R3)."OutThe joke, optionalEasy
    Preview this drop
    1. 0:00 The old stringInvariant violation, code R3. A shopper cannot act on that. The log already has the order and the totals.
    2. 0:08 The plain versionThe order total does not match the cart. Reload the order. If it persists, the reload is the handoff, not a second insult.
    3. 0:16 The UI string'This total does not match your cart. Reload the order and try again.' Under 90 characters.
    4. 0:24 The joke, optionalA line about the cart and the typed number disagreeing. The order id stays in the log, not in the joke.

    No daily video for this drop yet. The in and out lines above are the preview.

Tomorrow's drop

Get tomorrow's agent in your inbox

One email when the drop goes up. No digest, no course. Unsubscribe whenever the provider lets you.

Pro and custom

€9/month when Pro opens

Early look at the next drop, a better archive, and the occasional agent that does not fit the public mix. The daily agent stays free. A custom build is €49–199. Nothing is charged from this form.

Join the Pro waitlist

Tomorrow's drop

Get the daily agent

One email when the drop goes up. The same list as the signup on the page.