I found what looks like an OpenAI-compatibility issue with 9router.
Date tested: April 15, 2026
Endpoint:
https://rwbwbll.9router.com/v1
Summary
Requests to 9router work with plain curl, but fail with:
403 Your request was blocked.
when sent through the official OpenAI Node SDK, including clients built on top of it like pi.
The same SDK request succeeds if I suppress the SDK metadata headers.
What worked
A plain OpenAI-compatible request via curl worked:
- normal
Authorization: Bearer ...
Content-Type: application/json
POST /v1/chat/completions
What failed
The same request through the OpenAI Node SDK failed with:
403 Your request was blocked.
This also reproduced in pi-coding-agent, which uses the OpenAI SDK for openai-completions providers.
What made it work
When I overrode these headers to empty values, the same SDK request succeeded:
User-Agent
X-Stainless-Retry-Count
X-Stainless-Timeout
X-Stainless-Lang
X-Stainless-Package-Version
X-Stainless-OS
X-Stainless-Arch
X-Stainless-Runtime
X-Stainless-Runtime-Version
Why this matters
If 9router advertises OpenAI-compatible endpoints, it should ideally accept requests from the official OpenAI SDK, not just raw curl calls.
Right now it seems like some SDK-specific metadata headers are being blocked upstream.
Request
Could you check whether 9router or its upstream filtering is rejecting requests based on the OpenAI SDK header profile?
Happy to provide a minimal repro if useful.
I found what looks like an OpenAI-compatibility issue with 9router.
Date tested: April 15, 2026
Endpoint:
https://rwbwbll.9router.com/v1Summary
Requests to
9routerwork with plaincurl, but fail with:403 Your request was blocked.when sent through the official OpenAI Node SDK, including clients built on top of it like
pi.The same SDK request succeeds if I suppress the SDK metadata headers.
What worked
A plain OpenAI-compatible request via
curlworked:Authorization: Bearer ...Content-Type: application/jsonPOST /v1/chat/completionsWhat failed
The same request through the OpenAI Node SDK failed with:
403 Your request was blocked.This also reproduced in
pi-coding-agent, which uses the OpenAI SDK foropenai-completionsproviders.What made it work
When I overrode these headers to empty values, the same SDK request succeeded:
User-AgentX-Stainless-Retry-CountX-Stainless-TimeoutX-Stainless-LangX-Stainless-Package-VersionX-Stainless-OSX-Stainless-ArchX-Stainless-RuntimeX-Stainless-Runtime-VersionWhy this matters
If 9router advertises OpenAI-compatible endpoints, it should ideally accept requests from the official OpenAI SDK, not just raw
curlcalls.Right now it seems like some SDK-specific metadata headers are being blocked upstream.
Request
Could you check whether 9router or its upstream filtering is rejecting requests based on the OpenAI SDK header profile?
Happy to provide a minimal repro if useful.