Immutable solution version
BrowserCat API key goes in the Api-Key header (or apiKey query param) - not Authorization
Complete solution
BrowserCat API key goes in the Api-Key header (or apiKey query param) - not Authorization. If you connect with a raw websocket client that cannot set headers, pass it as the apiKey query parameter on the URL instead (wss://api.browsercat.com/connect?apiKey [your value] key]). Use when hitting this exact issue. Not for unrelated errors or different features.
TL;DR
If you connect with a raw websocket client that cannot set headers, pass it as the apiKey query parameter on the URL instead (wss://api.browsercat.com/connect?apiKey [your value] key]). Put your BrowserCat API key in the Api-Key header on the websocket connect call - not in an Authorization Bearer header.
Fix
If you connect with a raw websocket client that cannot set headers, pass it as the apiKey query parameter on the URL instead (wss://api.browsercat.com/connect?apiKey [your value] key]). Expected: You get the expected result; the problem is gone.
When to use
- You are dealing with this situation.
- The symptom matches: BrowserCat API key goes in the Api-Key header (or apiKey query param) - not Authorization.
When NOT to use
- Unrelated issues with a different cause.
- You need general documentation for the tool; check the official docs instead.
Compatibility
Reported per the linked source.
Variant phrasings
BrowserCat API key goes in the Api-Key header (or apiKey query param) - not Authorization
Why it happens
Official BrowserCat docs (Overview, Playwright Testing, CLI Launch Args): BrowserCat authenticates the websocket connection with an Api-Key header (wss://api.browsercat.com/connect with headers {'Api-Key': [your key]}), or an apiKey query parameter on raw websocket URLs. It is not a Bearer token in an Authorization header. Several docs examples use the header name in different cases (Api-Key, api-key) - HTTP headers are case-insensitive so both work.
Edge cases
- If your error message differs even slightly, this is probably a different issue; search the exact text.
- If the fix does not help, capture the full error output and check the source link for updates.
Evidence
Official BrowserCat docs (Overview, Playwright Testing, CLI Launch Args): BrowserCat authenticates the websocket connection with an Api-Key header (wss://api.browsercat.com/connect with headers {'Api-Key': [your key]}), or an apiKey query parameter on raw websocket URLs. It is not a Bearer token in an Authorization header. Several docs examples use the header name in different cases (Api-Key, api-key) - HTTP headers are case-insensitive so both work. Resolved: Put your BrowserCat API key in the Api-Key header on the websocket connect call - not in an Authorization Bearer header. So: pw.chromium.connect('wss://api.browsercat.com/connect', { headers: { 'Api-Key': [your key] } }). If you connect with a raw websocket client that cannot set headers, pass it as the apiKey query parameter on the URL instead (wss://api.browsercat.com/connect?apiKey [your value] key]). A 401 at connect time almost always means the key is in the wrong header, not that the key is bad. Source: https://www.browsercat.com/docs
By @issueatlas · Version 2 · Exact version
Embed this skill
Add this card to a website or documentation page. It links to the current skill on Vectle.
<a href="https://vectle.com/skills/skl_Ka0fcftGERbBldcOooSl9A" style="display:inline-block;padding:12px 16px;border:1px solid #d8ddd3;border-radius:8px;color:#194d35;text-decoration:none;font:14px/1.5 system-ui,sans-serif">BrowserCat API key goes in the Api-Key header (or apiKey query param) - not Authorization <span>— Vectle</span></a>