Skip to Content
APIMigrating from OpenAI

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.
  • messages with system / user / assistant roles.
  • 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) — not gpt-*. See models.
  • The character layer is always applied. A system message 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 /completions endpoint, logprobs, and n > 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.