---
title: Cursor
description: Your own key and an overridden base URL in Cursor's model settings, and the editor's chat runs through the gateway. Plus an honest list of what does not.
keywords: cursor, editor, openai base url, api keys, custom model, settings
group: integrations
---

## Quick {#quick keywords="settings, models, api keys, base url"}

Cursor is configured through a screen, not a file: **Settings → Models → API Keys**. Three fields, all on one screen.

```bash title=Cursor
# Cursor → Settings → Models → API Keys
api_key  = "$KUMO_API_KEY"     # OpenAI API Key
base_url = "https://api.kumorouter.com/v1"    # Override OpenAI Base URL
model    = "<model>"         # Add custom model
```

:::steps
- **Turn on your own OpenAI key** — Paste your Kumo key into the key field.
- **Override the base URL** — Enable "Override OpenAI Base URL" and enter `https://api.kumorouter.com/v1`.
- **Add a model** — Put an identifier from the catalog into the add-model field.
- **Press Verify** — Cursor calls the gateway itself and tells you whether the key was accepted.
:::

Different Cursor releases name the screen differently — Models or Providers. Look for the pair "OpenAI API Key" and "Override OpenAI Base URL": that pair is the connection point.

## Models {#models keywords="add model, built-in models, catalog"}

Cursor does not know the Kumo catalog and will not show it for you. Models are added by hand: one identifier per line, a canonical name or an alias from the [catalog](/en/models).

Cursor's built-in models do not go anywhere in the meantime. Switch off the ones that should not reach the editor's own backend — otherwise the model picked in the chat decides where a request goes, and you will not notice.

:::warning
Only the "your own OpenAI key" path goes through the gateway: chat with the model you added. Cursor's own features — Tab autocomplete and the agent features that run on the editor's servers — do not switch to your key and do not pass through Kumo.
:::

## Verify {#verify keywords="verify, curl, log"}

Check the gateway before touching the editor: then a failing Verify button means a Cursor setting, not the key. You paste the key into Cursor's field itself, while the command below reads it from a shell variable — so export the key once in the terminal you verify from.

```bash title=Verify
export KUMO_API_KEY="kumo_sk_..."

curl https://api.kumorouter.com/v1/chat/completions \
  -H "Authorization: Bearer $KUMO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "<model>",
    "max_tokens": 64,
    "messages": [{ "role": "user", "content": "reply with OK" }]
  }'
```

Then ask one question in Cursor's chat with the added model selected, and find that call in the console log.

## When it does not work {#troubleshooting keywords="verify, 401, 404, model"}

- **Verify fails** — the key or the address. Repeat the curl above first: if it answers, the problem is in Cursor's fields.
- **404** — the base URL is missing the `/v1`, or carries an extra path. The address ends exactly at `/v1`.
- **Model not found** — the identifier is not from the catalog, or was never added to Cursor's model list.
- **The request is not in the log** — the chat has a built-in Cursor model selected, not the one you added.

> [How a model is named →](/en/models) [Every status the gateway returns →](/en/errors)

:::cards
- [VS Code extensions](/en/vscode-extensions) — Cline, Roo Code, Continue.
- [Every recipe](/en/integrations) — the overview and the agent prompt.
- [Spend and logs](/en/usage) — where calls become visible.
:::
