Skip to main content

Confirm

Are you sure?

Changelog · September 27, 2026

A missing or wrong API key answers in JSON

Handle an authentication failure the way you handle every other error: by its code.

By · Last updated: September 2026

TL;DR

A request with no API key, or one that doesn't match an active project, used to get a plain-text 401. It now answers in the same JSON shape as every other error: {"error": "invalid_api_key", "message": "…"}, with a WWW-Authenticate: Bearer challenge. The message says whether a key arrived at all.

Free plan, no credit card. 1,000 credits a month.

Code that reads errors by their error field can now read this one too. The message tells the two cases apart — no Authorization header at all, or a key that isn't valid — and never says whether a key exists, was revoked or belongs to another account.

Answers 401 with a JSON body
curl -X POST https://urlpipe.dev/markdown \
  -H "Authorization: Bearer not-a-key" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com"}'

FAQ

Frequently asked questions

Did the status code change?
No. It is still 401 Unauthorized; only the body and the challenge header changed.
Which scheme should the Authorization header use?
Bearer, followed by the project API key: Authorization: Bearer YOUR_API_KEY.

Try it on the free plan.

Free plan, no card. Confirm your email and your API key is live — you'll be making real requests in minutes.