Migrating from OpenAI
Vinci’s API is OpenAI-compatible, so migrating is usually a two-line change — the base URL and the API key — plus picking a Vinci model.
The change
client = OpenAI(
- base_url="https://api.openai.com/v1",
- api_key=os.environ["OPENAI_API_KEY"],
+ base_url="https://vinci.getsimpledirect.com/api/v1",
+ api_key=os.environ["VINCI_API_KEY"],
)
resp = client.chat.completions.create(
- model="gpt-4o",
+ model="vinci-piccolo",
messages=[{"role": "user", "content": "Hello!"}],
)Everything else — chat.completions.create, streaming, messages, usage — is the same.
What’s supported
POST /chat/completions, streaming and non-streaming — see the reference.messageswithsystem/user/assistantroles.stream,temperature,max_tokens.- OpenAI-shaped responses (
chat.completion,chat.completion.chunk) and error objects.
Differences to know
- Models are Vinci ids (
vinci-piccolo,vinci-bozza,vinci-tela,ds-v4-flash) — notgpt-*. See models. - The character layer is always applied. A
systemmessage is honored as additional guidance layered on top of — not replacing — Vinci’s voice. - Not yet implemented: tools / function-calling, vision / image input, embeddings,
the legacy
/completionsendpoint, logprobs, andn > 1. Tell us what you need. - ZDR + Canadian residency apply to every call — see Privacy & ZDR.
Keep your tooling
Because it’s the same wire format, the OpenAI Python/JS SDKs, LangChain, LlamaIndex, and OpenAI-compatible app frameworks work unchanged — only the base URL, key, and model change. See any OpenAI-compatible tool.