start_within, so the deadline goes on an agent key.
Pick a tier rather than Flex race, because Cursor sends Chat Completions parameters a race refuses.
Cursor keeps these settings in its own UI, with no config file to write, so this page has no agent setup prompt. The steps below take under a minute by hand.
Configure Cursor
-
Open Cursor settings with
Cmd+,on macOS, orCtrl+,on Windows and Linux. - Click Models in the sidebar.
-
Enable Override OpenAI Base URL. Enter the router URL, including the
/v1suffix. -
Paste your agent key into the OpenAI API Key field.
-
Add
gpt-5.6-solto the model list. Cursor sends this name to us verbatim. - Click Verify.
/chat/completions to the base URL and sends the key as a bearer token. The key supplies the deadline.
Troubleshooting
A401 that doesn’t look like ours. The base URL is blank or wrong, so Cursor sent your key to api.openai.com and OpenAI refused it. Set both the base URL and the key field.
422 on Claude models. That refusal isn’t ours. We run claude-* on Chat Completions by translating the request onto Anthropic’s Messages API, as long as the body has no native Chat parameter. Cursor’s own Claude path through an overridden base URL fails this way on its side. Use a gpt-* slug to move on, or send the same request to us directly to see which side refuses it.
Claude worked yesterday, 422 today. Turning Anthropic BYOK on in Cursor also turns the base URL override on without saying so. Turn one of the two off.
Tab autocomplete never appears in your logs. Cursor runs Tab on its own backend, and the override applies to chat only. Nothing is wrong.
Verify passed but requests still fail. Verify checks the key format and that the endpoint answers, not every feature path. Send one chat request to check it works.
Anything not specific to Cursor is on agent keys.