Skip to content
Updates & support on Telegram

[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

  1. 01

    Python

    Pass base_url to the client constructor and use a catalog model id.

    python
    import 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="")
  2. 02

    Node / TypeScript

    Identical with the npm package.

    typescript
    import [OI] from "openai";
    
    const client = new [OI]({
      baseURL: "https://uncensoredai.dev/v1",
      apiKey: process.env.UNCENSOREDAI_API_KEY,
    });
  3. 03

    cURL

    Raw HTTP works too — useful for a quick smoke test.

    curl
    curl 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.

More integrations