Integrations

Cursor

Use your stack as a custom OpenAI model in Cursor's chat, by overriding the OpenAI base URL.

Cursor is an AI code editor. It accepts your own OpenAI key and a custom base URL, which is enough to send its chat requests to your stack instead of Cursor's own models.

Prerequisites

  • A key from your stack's API keys page. See Authentication.
  • The id of the model you want to call — see Models. The examples below use qwen/qwen3.5-9b.
  • A paid Cursor plan. On the free plan Cursor only uses its own Auto model, so a custom model can't be selected.

Configure Cursor

  1. Open Cursor Settings → Models

    Use the gear icon or Cmd/Ctrl + Shift + J, go to Models and expand API Keys.

  2. Enter the key and the base URL

    FieldValue
    OpenAI API KeyYour Stac key — turn the toggle on
    Override OpenAI Base URLhttps://api.trystac.com/v1 — keep the /v1, Cursor appends /chat/completions
  3. Add the model

    Click + Add model, type qwen/qwen3.5-9b and make sure it is enabled in the list.

  4. Verify

    Click Verify next to the key. Cursor makes a test request through the base URL you set.

Example

Open the chat panel, choose qwen/qwen3.5-9b in the model selector and ask:

You:     Name three primary colors.
Cursor:  Red, blue, and yellow.

The request shows up under Usage & Logs in the dashboard.

Limitations

  • The override is global. While it's on, every OpenAI-model request in Cursor goes to your stack, and those models stop working. Turn the override off to go back.
  • Tab completion never uses it. Tab always runs on Cursor's own models.
  • Some features refuse custom keys. Cursor's in-house models (Composer, for example) don't accept a custom key, and Cursor may ask you to turn the key off to use them.
  • Agent mode depends on tool calling. It only works with a model that supports tools, and even then Cursor's tool definitions can fail on a model where plain chat works.
  • The model name must be on your plan. Add the exact value from Models; a model your key's plan doesn't include returns 403. Rate limits are per key, so give Cursor its own key. See Differences that matter.

Next steps