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

# Use Nebius Token Factory as the LLM for Bolna voice agents

> Connect Nebius Token Factory public or dedicated endpoints to a Bolna voice agent, including region choice for data residency, model IDs and API keys.

[Nebius Token Factory](https://tokenfactory.nebius.com), formerly Nebius AI Studio, serves open-weight models such as DeepSeek, Qwen and Llama behind an OpenAI-compatible API. What sets it apart is **where** the model runs: dedicated endpoints let you pick the deployment region, which matters when call transcripts must stay in a given jurisdiction.

| | Public serverless endpoints | Dedicated endpoints |
| - | - | - |
| Capacity | Shared, multi-tenant | Reserved for your organisation |
| Rate limits | Dynamic limits apply | No standard limits; throughput depends on your capacity |
| Region | Global, can change with available capacity | Fixed, chosen by you: `eu-north1`, `eu-west1` or `us-central1` |
| Pricing | Per token | Per GPU-hour, billed per minute |

***

## Set up Nebius

<Steps>
  <Step title="Create a Token Factory account">
    Sign up at [tokenfactory.nebius.com](https://tokenfactory.nebius.com).
  </Step>

  <Step title="Get an API key">
    Open [API keys](https://tokenfactory.nebius.com/project/api-keys) in Token Factory, click **Create API key**, name it and click **Create**. Copy the key right away: it's shown only once.
  </Step>

  <Step title="Choose a model and copy its ID">
    Browse the [text models](https://tokenfactory.nebius.com/endpoints?modality=text2text) and copy the full model ID, for example `nvidia/Nemotron-3_5-Lightning`. For voice, prefer an instruct model over a reasoning model such as DeepSeek R1: reasoning models spend time thinking before the first spoken word.

    If the model has a **fast** flavour, prefer it for voice. It gives the same outputs with lower latency, at a higher price per token. Use it by adding `-fast` to the model ID.
  </Step>

  <Step title="Optional: create a dedicated endpoint">
    If you need a fixed region or reserved throughput, create a dedicated endpoint for a supported model and choose its region. Use the model identifier Token Factory shows for that endpoint as the model name in Bolna.
  </Step>
</Steps>

***

## Register it in Bolna

<Steps>
  <Step title="Choose Nebius in the Add custom model dialog">
    Open **Settings → Integrations → LLM → Custom LLM → Add model**, or choose **+ Add custom LLM** at the bottom of the **LLM Provider** dropdown on an agent's **Intelligence** tab. Select **Nebius**.

    <Frame caption="Nebius selected: the Token Factory endpoint is shown as a placeholder">
      <img src="https://mintcdn.com/bolna-54a2d4fe/0EXypen329Eb5XE2/images/custom-llm/providers/nebius-selected.png?fit=max&auto=format&n=0EXypen329Eb5XE2&q=85&s=5dd1005088048ab42c69bfb6492c30aa" alt="Bolna Add custom model dialog with Nebius selected and the Token Factory endpoint shown as placeholder text" width="1024" height="1220" data-path="images/custom-llm/providers/nebius-selected.png" />
    </Frame>
  </Step>

  <Step title="Enter the endpoint and model">
    <Tabs>
      <Tab title="Dashboard">
        * **Model name**: the Token Factory model ID, for example `nvidia/Nemotron-3_5-Lightning`
        * **Endpoint URL**: `https://api.tokenfactory.nebius.com/v1`
        * **API key**: your Token Factory key
        * **Family**: for example `nemotron`, `qwen` or `deepseek`
      </Tab>

      <Tab title="API">
        ```bash theme={"system"}
        curl --request POST \
          --url https://api.bolna.ai/user/model/custom \
          --header 'Authorization: Bearer <BOLNA_API_KEY>' \
          --header 'Content-Type: application/json' \
          --data '{
            "custom_model_name": "nvidia/Nemotron-3_5-Lightning",
            "custom_model_url": "https://api.tokenfactory.nebius.com/v1",
            "custom_model_key": "<NEBIUS_API_KEY>",
            "custom_model_family": "nemotron"
          }'
        ```
      </Tab>
    </Tabs>

    <Note>
      Nebius's own examples write the base URL with a trailing slash (`.../v1/`). Enter it without the slash in Bolna, as shown above.
    </Note>
  </Step>

  <Step title="Pick it on your agent">
    Choose **custom** as the provider on the **Intelligence** tab, select the Nebius model, save, and run a test call.
  </Step>
</Steps>

***

## Things to know

* **Bolna checks the key and the model ID when you save.** Token Factory publishes its model list, so a wrong key or a model ID it doesn't serve is refused with an error.

* **Models are retired.** Nebius removes serverless models on a published schedule, and every call on a retired model fails. For example, Llama 3.3 70B Instruct was removed on 31 August 2026. Watch the [deprecation notices](https://docs.tokenfactory.nebius.com/august-2026-deprecation-notice) and move your agents to the replacement model in time.

* **Tool calling.** Check that a model supports tools before you use it on an agent that calls them. The model list shows each model's `supported_features`:

  ```bash theme={"system"}
  curl "https://api.tokenfactory.nebius.com/v1/models?verbose=true" \
    -H "Authorization: Bearer $NEBIUS_API_KEY"
  ```

* **Latency from India.** Public endpoints run in Nebius's global region, with no fixed location. For callers in India, the extra network distance adds latency to every reply, so measure the first reply on a web call before going live.

* **Rate limits.** Your account's limits are on the [rate limits](https://tokenfactory.nebius.com/project/rate-limits) page. A request over the limit gets a `429`, which leaves the agent silent for that turn. Ask Nebius to raise your limits before a large campaign.

***

## Choosing a region for compliance

Public endpoints may run in whichever region has capacity, so they don't guarantee where a request is processed. If your contracts or regulators require processing in a specific region, create a **dedicated endpoint** in that region and register it in Bolna as its own custom model. Keep separate model names per region, for example by registering each endpoint under the identifier Token Factory gives it, so agents for different markets point at the right one.

***

## Troubleshooting

<AccordionGroup>
  <Accordion title="Long pause before the agent speaks">
    You're likely using a reasoning model such as DeepSeek R1. Switch to an instruct model, or turn thinking off with [Extra request params](/docs/custom-llm-inference#extra-request-params) if the model supports it.
  </Accordion>

  <Accordion title="429 errors during busy campaigns">
    Public endpoints have dynamic rate limits. Move high-volume agents to a dedicated endpoint, which has no standard rate limits.
  </Accordion>

  <Accordion title="Model not found">
    Use the full ID with the organisation prefix, exactly as the Token Factory catalog shows it. If it worked before, the model may have been retired; check the deprecation notices.
  </Accordion>
</AccordionGroup>

***

## Related

* [Custom LLM inference](/docs/custom-llm-inference)
* [Simplismart](/docs/custom-llm-inference/simplismart): shared and dedicated endpoints with optimised models
* [Azure OpenAI](/docs/azure-openai): another option when data residency matters


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