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 Roger Campos · 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.
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
No. It is still 401 Unauthorized; only the body and the challenge header changed.
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.