Configure any OpenAI-compatible provider
The provider list is a set of conveniences, not a whitelist. You can configure any service implementing the OpenAI-compatible Chat Completions API by hand, or repoint a profile that started from a preset. SideNote Pro expects streaming Chat Completions; model discovery and usage metadata are optional.
The contract SideNote Pro expects
- Bearer-token authentication when an API key is present, and no auth header when the key field is empty.
- `GET {BaseUrl}/models` for Test & Load models, which is optional.
- Streaming `POST {BaseUrl}/chat/completions` for generation.
- Server-Sent Events using
data:records, terminated by[DONE]. - A `choices` array containing
delta.content,message.contentortext.
The stream parser deliberately tolerates the several string, object and content-array variations that compatible providers return in practice, so minor shape differences generally do not matter. Usage metadata is optional: common prompt, input, completion, output and total token fields are recognised where present, and endpoints that omit usage entirely are fully supported.
Configuring the profile
- Choose Custom OpenAI-compatibleIt is the last entry in the Provider list, and it is the one that leaves the endpoint to you rather than filling one in.
- Find the base URL in the provider's documentationLook for the value their OpenAI SDK examples set as the base URL. It usually ends in
/v1. That exact string is what goes in the Base URL field. - Add the API key if the service requires oneLeave it empty for services that do not authenticate, such as a local server on your own machine.
- Set the model IDSelect Test & Load models first. If the service publishes a model list, choose from it. If it does not, type the model ID exactly as the provider documents it: manual entry works either way. Model IDs are usually case-sensitive and often carry a vendor prefix.
- Leave reasoning effort on Provider defaultChange it only if the provider documents
reasoning_effortsupport for that model.
The single most common mistake is the base URL. Too much (/chat/completions appended) and every request 404s. Too little (no /v1) and the same. Copy what the provider's own OpenAI-SDK example uses, and nothing more.
Settings › AI providers

reasoning_effort) leaving reasoning effort on Provider default.A preset is a starting point, not a mode
Choosing a provider is a convenience: it puts in the address that service normally answers on, so you do not have to go and find it. Afterwards Base URL is an ordinary editable field, on every profile, whichever entry you started from.
Settings › AI providers

That is what makes the same profile shape work for all of these:
- the provider's own public API;
- a company or personal API gateway;
- a reverse proxy sitting in front of either;
- an alternate host for the same service;
- a self-hosted OpenAI-compatible server;
- Ollama or LM Studio, on this machine or another one on your network;
- anything else that speaks the same request format.
So the entries in the Provider list are not the set of services SideNote Pro can reach. They are the ones it already knows an address for.
An endpoint you typed yourself is not overwritten. SideNote Pro fills Base URL in only when the field is empty or still holds one of its own defaults. Change the provider on a profile carrying your own address and it keeps that address, tells you it has (Keeping your own endpoint for Anthropic, or whichever you picked) and offers a Use the default endpoint action for the times you did want the standard one.
There is also nothing here to maintain as a separate setting. Reopen a profile later and the provider shown is read back from the endpoint: an address SideNote Pro knows displays its provider, and one it does not displays as Custom OpenAI-compatible, which is an accurate description rather than an error.
Where compatibility usually breaks
OpenAI-compatible describes a request format. It does not promise that every optional field and every model capability behaves identically. These are the differences that actually come up.
| Gap | What you see | What to do |
|---|---|---|
No /models route | A note that the provider does not expose model discovery | Type the model ID manually. Nothing else is affected |
reasoning_effort unsupported | The value is ignored, or the request is rejected | Set reasoning effort back to Provider default |
| No image input | Images ignored, or an error mentioning content type | Use a vision-capable model, or send text only |
| No usage metadata | Token figures shown as local estimates | Nothing. Estimates are used automatically |
| Non-standard streaming | Empty or truncated responses | Check the provider streams SSE with [DONE] |
| Different model naming | Model not found on send, though the key works | Copy the exact ID from the provider's documentation |
Features SideNote Pro does not use
None of these make a difference to whether a provider works with SideNote Pro: the OpenAI Responses API, tool and function calling, built-in web search, audio, video and image generation. SideNote Pro sends text and images over streaming Chat Completions and renders streamed text back.
So a provider advertising a rich agentic toolset is not more compatible than a plain one. What matters is whether streaming chat/completions is implemented properly.