[OI](base_url=…) / new [OI]({ baseURL })
Native [OI] support[OI] SDK with a custom base URL
The whole migration is one constructor argument. Keep your retries, streaming and error handling; swap the base URL and the model id.
Base URL
https://uncensoredai.dev/v1
- 01
Python
Pass base_url to the client constructor and use a catalog model id.
pythonimport os from openai import [OI] client = [OI]( base_url="https://uncensoredai.dev/v1", api_key=os.environ["UNCENSOREDAI_API_KEY"], ) stream = client.chat.completions.create( model="deepseek-v4.1-flash", messages=[{"role": "user", "content": "Hello"}], stream=True, ) for chunk in stream: delta = chunk.choices[0].delta.content if chunk.choices else None if delta: print(delta, end="") - 02
Node / TypeScript
Identical with the npm package.
typescriptimport [OI] from "openai"; const client = new [OI]({ baseURL: "https://uncensoredai.dev/v1", apiKey: process.env.UNCENSOREDAI_API_KEY, }); - 03
cURL
Raw HTTP works too — useful for a quick smoke test.
curlcurl https://uncensoredai.dev/v1/chat/completions \ -H "Authorization: Bearer sk-ua-XXXX-XXXX-XXXX-XXXX" \ -H "Content-Type: application/json" \ -d '{"model":"deepseek-v4.1-flash","messages":[{"role":"user","content":"Hello"}]}'
FAQ
Is it really the same SDK?+
Yes. UncensoredAI implements the [OI] chat-completions and models endpoints, including SSE streaming and the [OI] error envelope.
Where do I find valid model ids?+
The model catalog and GET /v1/models. Ids are case-sensitive.
