> ## Documentation Index
> Fetch the complete documentation index at: https://docs.overcontrolgroup.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Migrate from OpenAI

> Change the base URL, the key, and the model.

You change the base URL, the API key, and the model. The messages you already send stay.

Lume 3.5 costs up to 90% less than flagship rates on the OpenAI API. [Pricing](/pricing) has the rates.

<CodeGroup>
  ```python Python theme={null}
  import os
  from openai import OpenAI

  client = OpenAI(
      api_key=os.environ["OVERCONTROL_API_KEY"],
      base_url="https://api.overcontrolgroup.com/v1",
  )

  response = client.chat.completions.create(
      model="lume-3.5",
      messages=messages,
  )
  ```

  ```javascript Node.js theme={null}
  import OpenAI from "openai";

  const client = new OpenAI({
    apiKey: process.env.OVERCONTROL_API_KEY,
    baseURL: "https://api.overcontrolgroup.com/v1",
  });

  const response = await client.chat.completions.create({
    model: "lume-3.5",
    messages,
  });
  ```
</CodeGroup>

The reply is still `choices[0].message.content`. The key needs the scope `chat:completions`. You create it in the [API dashboard](https://app.overcontrolgroup.com/dashboard).

If the client sets `store` to `true`, take that field out. The prompt and the completion are processed for that call and are not kept. `reasoning_effort` accepts `none` and `high`. Leave `frequency_penalty` and `presence_penalty` out, including when the value is `0`.

From here, [Generate text](/text/generate), [streaming](/text/streaming), and [tools](/text/tools) are the same client.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.