One endpoint, eight different settings

Switching an existing integration is usually a base URL argument, not a rewrite. The hard part is that every client names that argument differently, and half of them append their own version path. The table below is the map we use when a setup fails.

One endpoint, eight different settings

There is no universal base URL variable. The table below is why copying another tool's snippet usually produces a 404 that looks like an auth failure.

ClientSettingValue shapeTrap
OpenAI Python SDKbase_urlhttps://aicomp.ai/v1Carries /v1
OpenAI Node SDKbaseURLhttps://aicomp.ai/v1Carries /v1
Anthropic SDK / Claude CodeANTHROPIC_BASE_URLhttps://aicomp.aiClient appends /v1/messages
LangChainbase_url kwarghttps://aicomp.ai/v1Non-OpenAI host may drop token usage
Vercel AI SDKcreateOpenAI({ baseURL })https://aicomp.ai/v1Not openai(); that ignores the override
Spring AIbase-url + completions-pathhttps://aicomp.aiNo /v1 in base-url
Prism PHPurlhttps://aicomp.ai/v1Default already ends in /v1
GooseOPENAI_HOSThttps://aicomp.ai/v1Not OPENAI_BASE_URL

Browse the other clusters

All 15 guides in this cluster

FAQ

Should the base URL include /v1?

It depends on the client. OpenAI-compatible SDKs expect the version root and add the operation path; Anthropic clients append /v1/messages themselves, so a versioned base produces a doubled path. Check the row for your client rather than guessing.

Why do I get 401 when the URL looks correct?

A doubled or missing version path is frequently reported as an auth failure, because the request never reaches the endpoint that reads your key. Verify with a direct curl to /v1/models before changing credentials.

Can one base URL cover every tool in a project?

The endpoint can, but the configuration cannot. Environment variables, per-project JSON, UI fields and per-node settings all override differently. The tool index lists which one each client reads.

Check the current rate for your model before you commit a workload.

Rate cards: GPT, Claude and Gemini