Connecting Claude Desktop to a custom endpoint sounds like a simple address change. The first check, however, is whether your particular setup supports changing that address at all. A working API key and a valid endpoint do not automatically make the standard desktop chat interface compatible with an external provider.
This first-run checklist helps you separate app settings, API connections, and tool integrations before you spend time troubleshooting the wrong layer.
First check: which Claude application are you configuring?
Claude Desktop and Claude Code are different products. Instructions written for Claude Code should not be assumed to work in Claude Desktop. Environment variables, configuration files, and launch commands only matter when the application actually reads them.
Before editing anything, identify the application, its version, and whether your organization manages its configuration. Then check the current official documentation for supported provider or endpoint settings. If you are using a third-party desktop client, check that client's documentation instead.
If you cannot find a documented custom-endpoint setting for your setup, pause. Adding an API host to an unrelated configuration file is not a reliable way to redirect desktop conversations.
Check whether the setting controls chat or tools
Claude Desktop can connect to tools through the Model Context Protocol, usually called MCP. An MCP server can expose files, services, or actions to Claude. That is different from choosing the provider that generates Claude's replies.
- Model endpoint: receives inference requests and returns generated responses.
- MCP connection: makes tools or other resources available to the application.
- Tool-specific API key: authorizes a tool's external service, not necessarily the desktop chat model.
A tool might call an external model as part of its work, but that does not mean every desktop conversation now runs through that model. Check exactly what the integration promises to route.
Match the endpoint address to the supported API format
A custom endpoint needs more than the right hostname. The client and provider must agree on request paths, authentication, message structure, and response format. OpenAI-compatible support does not automatically mean compatibility with every Claude application.
SwiftRelay is a pay-as-you-go relay for multiple model families and works with Claude Code, Codex, Gemini CLI, and OpenAI-compatible SDKs. Its API host is https://api.fastapirelay.com. Claude Code and Gemini CLI take the bare host; OpenAI SDKs use https://api.fastapirelay.com/v1.
Those address rules apply to those integrations. They are not evidence that Claude Desktop accepts the same configuration. If your desktop setup documents custom-provider support, follow its specific API-format and address requirements.
Keep provider credentials separate from desktop sign-in
Your desktop account credentials and a relay API key serve different purposes. Use the key issued by the provider receiving the request, and place it only in the credential field or secure configuration mechanism documented for that integration.
- Check for accidental spaces when copying the key.
- Confirm that the key is active and the account has available credit.
- Keep keys out of screenshots, shared configuration files, and public logs.
- Replace an exposed key rather than continuing to use it.
For a documented, supported client, SwiftRelay is a practical option when you want per-token billing across model families. Sign up for SwiftRelay to receive a small gift credit for an initial API check.
Run one small request before adding tools
Once you have confirmed a supported connection path, send a short, harmless prompt without attachments or tools. Use the provider's exact model identifier rather than guessing it from a display name.
If the request fails, record the error message and check one layer at a time: address, API format, credentials, account credit, and model access. Remove secrets before sharing diagnostic details.
Finally, verify routing through provider usage records or the client's documented diagnostics. A successful reply alone does not prove that your custom endpoint handled it. The green light is a supported configuration plus evidence that the intended provider received the request.