Shift Note: SDK Requests Hit the Wrong Base URL
The API key is loaded, the model is selected, and the first request still fails. Before replacing the key or switching models, check the base URL. A client can have valid credentials and a correctly formed request body while sending everything to the wrong address.
A base URL is the starting address an SDK uses to build requests. The SDK then adds the path for the operation you call. If those two pieces do not fit together, the request may reach a server that cannot recognize it.
The base URL stops before the operation path
Think of the base URL as a building address and the operation path as a room inside it. In a typical OpenAI SDK configuration, the base includes the API version prefix, while the SDK adds an operation path such as /chat/completions.
For Relay365, the API base is https://api.api365relay.com. OpenAI clients add /v1, so their configured base URL should be https://api.api365relay.com/v1. A chat completions request would then target https://api.api365relay.com/v1/chat/completions.
That distinction matters when copying settings between tools. A field called “server URL” may expect a different value from a field called “OpenAI base URL.” Follow the instructions for the specific client and provider combination.
A missing or repeated /v1 changes the destination
Leaving /v1 out of an OpenAI client's Relay365 base URL can send requests to an unrecognized route. Adding it twice can produce a path such as /v1/v1/chat/completions. Both mistakes can resemble a broken service even though the server is reachable.
Another common mistake is pasting the complete operation URL into the base URL field. If you enter an address ending in /chat/completions, the SDK may append its own operation path again. The exact result depends on how that client combines URLs.
Trailing slashes also deserve a check. Some clients normalize them; others use URL resolution rules that can change how paths combine. Use the documented base exactly, then inspect the destination of an actual request instead of guessing from the configuration alone.
A correct setting can still be ignored
Editing an environment variable does not prove the running client uses it. The application may pass a different base URL directly into the SDK constructor. A terminal may still hold an older value, or a long-running process may need restarting before it reads the change.
Different tools can also use different configuration names and files. Relay365 works with Claude Code, Codex, Gemini CLI, and OpenAI SDKs, but that does not mean every tool accepts the same configuration entry. Check the integration instructions for the tool you are actually running.
The final request address gives the clearest evidence
When troubleshooting, collect the final request URL, the HTTP status, and a short excerpt of the response. Keep API keys and authorization headers out of shared logs. These details help distinguish a path problem from authentication, permissions, or an unsupported operation.
- A 404 response can indicate an unrecognized path, although it can also refer to a missing resource.
- A 401 response usually points toward authentication, so check which server received the credentials before changing the key.
- An HTML page instead of the expected API response can mean the request reached a website route or an intermediary.
- A connection error before any HTTP response calls for checking the hostname, HTTPS scheme, network access, and proxy configuration.
Once the destination looks right, test one documented operation with a supported model. Use the provider's documented model identifier rather than assuming a display name is the exact value the API expects. Change one setting at a time so each result tells you something useful.
A shared endpoint makes consistency worth checking
Relay365 is a practical option when you want pay-as-you-go access to multiple model families through a relay service. Keeping the provider address consistent across clients can simplify setup, provided each client's required path prefix is configured correctly.
If that fits your workflow, create a Relay365 account and start with one small request. Confirm the final URL and response before copying the configuration into other tools. A verified base URL gives you a reliable starting point for diagnosing anything that fails afterward.
Further desk bulletins
| Date | Bulletin title | Filed under | Language |
|---|---|---|---|
| 2026-10-28 | Shift note: Node.js model streams reaching browsers | Wire & endpoints | EN |
| 2026-10-28 | Shift Note: Relay Requests In, Model Answers Out | Wire & endpoints | EN |
| 2026-10-28 | Duty log: model API outage review ready for handoff | Wire & endpoints | EN |
| 2026-10-28 | Shift Note: Keep API Keys Out of the Next Commit | Wire & endpoints | EN |
| 2026-10-28 | Duty Log: Slack Bot Practices We’re Keeping This Year | Wire & endpoints | EN |
| 2026-10-28 | Shift Note: Requests Waiting for a Free Slot | Wire & endpoints | EN |
Curious how it runs on your own code? Sign up →