Wat je instelt
Cursor is een editor die aangepaste modelproviders ondersteunt. Als je er een OpenAI-achtige base URL, een sleutel en een modelnaam aan geeft, stuurt het zijn chatverzoeken daarheen in plaats van naar zijn standaardprovider. Deze service spreekt dat protocol: POST /v1/chat/completions met Bearer-authenticatie, plus GET /v1/models.
Twee dingen om vooraf duidelijk te hebben. Dit is een onafhankelijke API die één open-weight model draait, niet OpenAI's Codex en geen officieel product van Cursor. En Cursor verandert vaak zijn instellingenschermen, dus de labels hieronder kunnen in jouw versie op een iets andere plek staan. De drie waarden veranderen nooit: base URL, sleutel, modelnaam.
Stap 1: haal een sleutel op en test deze buiten Cursor
Meld je aan op de API-sleutelpagina met Google of met e-mail en wachtwoord. Nieuwe accounts kunnen met één klik $0,50 aan proeftegoed claimen, geldig voor 7 dagen, geen kaart nodig. Dat is genoeg om een editorconfiguratie te testen.
Controleer eerst of de sleutel werkt voordat je Cursor aanraakt. Een fout binnen een editor is moeilijker te lezen dan een fout in een terminal.
curl https://api.getcodexapi.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Write a Python function that reverses a string."}]
}'
Als je een JSON-antwoord krijgt met een code erin, ga dan verder. Als je een fout krijgt, los het dan eerst op. Veelvoorkomende oorzaken zijn een ontbrekend teken in de sleutel of een spatie die aan het einde is geplakt.
Stap 2: configureer Cursor
- Open Cursor's instellingen en ga naar het modelgedeelte.
- Zoek het veld voor een OpenAI API-sleutel en plak je sleutel van deze service.
- Schakel de optie in om de OpenAI base URL te overschrijven, en voer
https://api.getcodexapi.com/v1in. - Voeg een aangepast model toe en typ de exacte naam
uncensored. - Voer de knop Verifiëren uit als die er is, open dan een chatpaneel en selecteer
uncensoreduit de modellijst.
Als de verificatiestap een fout meldt, controleer drie dingen in volgorde: de base URL eindigt op /v1 zonder endpoint-pad erna, de sleutel is geplakt zonder witruimte aan het einde, en de modelnaam heeft geen hoofdletters. De gids op de docs-pagina geeft dezelfde waarden met extra clientvoorbeelden.
Een ding om rekening mee te houden: de override is een instelling, geen keuze per model, dus als je ook je eigen OpenAI-sleutel elders in Cursor gebruikt, schakel de override dan eerst uit. Bewaar een notitie van wat je hebt gewijzigd.
Na het opslaan stel je het model een eenvoudige programmeervraag in de chat en kijk naar het antwoord. Een trage eerste reactie is normaal terwijl Cursor zijn verzoek opbouwt. Als het antwoord terugkomt, ben je verbonden en is de volgende stap om het te proberen op echt werk in je eigen repository.
Wat wel en niet door je sleutel gaat
Cursor mengt verschillende functies. Chat- en inline-editverzoeken zijn de meest waarschijnlijke om je aangepaste model te gebruiken zodra je het selecteert. Andere functies, zoals tab-aanvulling, hebben historisch modellen gebruikt die Cursor zelf draait, en agent-achtige functies kunnen afhangen van hoe Cursor tools afhandelt. De eerlijke manier om het te weten is de functie die je nodig hebt proberen en je saldo bekijken.
Dat is eenvoudig te doen: elk antwoord van deze API bevat een X-Balance-USD header, en je saldo is zichtbaar in je account. Als je een chatbericht stuurt en het saldo verandert niet, is dat verzoek niet naar ons gegaan.
Function calling wordt ondersteund op dit endpoint (tools, tool_choice, gestreamde tool_calls, en resultaten als role: "tool"), wat editor-agents nodig hebben. Streaming werkt via server-sent events met stream: true. Het contextvenster is 100.000 tokens, prompt en completion samen, dus een groot bestand plus zijn buren past in één verzoek.
Waarom een ongecensureerd model in een editor gebruiken
De meeste programmeerwerkzaamheden stuiten nooit op een weigering. Als dat wel gebeurt, is het vaak voor legitieme taken die riskant lijken voor een voorzichtig filter: een portscanner schrijven voor je eigen netwerk, malware-monsters parseren die je analyseert, testgegevens genereren die beledigende taal bevatten, het backend bouwen van een roleplay- of companion-app voor volwassenen, of code refactoren die gaat over contentmoderatie. Dit model is afgestemd om te antwoorden zonder inhoudsweigeringen voor legaal gebruik door volwassenen.
Het is nog steeds één algemeen open-weight model, geen gespecialiseerd codemodel, en niets hier belooft dat het elke specifieke alternatief op jouw codebase verslaat. Voer je eigen taken erdoorheen. Eén regel is vast: geen seksuele inhoud met minderjarigen, en dat kan niet worden gewijzigd.
Wat het in de praktijk kost
Prijzen zijn $0,15 per 1M input tokens en $0,50 per 1M output tokens, van prepaid credit zonder abonnement. Editorverkeer is input-zwaar, omdat elk verzoek bestandscontext opnieuw verzendt.
Een verzoek met 8.000 input tokens en 1.000 output tokens kost 8.000 x $0,15 / 1.000.000 = $0,0012 voor input, plus 1.000 x $0,50 / 1.000.000 = $0,0005 voor output, wat $0,0017 is. Als je er 150 maakt op een zware dag, is dat 150 x $0,0017 = $0,255, ongeveer 26 cent.
Een verzoek dat 40.000 tokens context stuurt en 1.500 terugkrijgt kost $0,006 + $0,00075 = $0,00675. Opwaarderingen beginnen bij $20 en tegoed verloopt nooit, dus er is geen druk om het op te gebruiken. Zie de prijzenpagina voor bonusniveaus, en de coding API-pagina voor het algemene overzicht.
Rate limits voor editorgebruik
Een volledige sleutel staat 8 gelijktijdige verzoeken en 300 verzoeken per minuut toe. Een proefsleutel staat 2 gelijktijdige en 60 per minuut toe. Eén persoon die in één editor typt komt zelden in de buurt van een van beide, maar een team dat één sleutel deelt, of een agent die veel verzoeken parallel afvuurt, wel. Als je de limiet overschrijdt, retourneert de API HTTP 429. De code rate_limited betekent te veel verzoeken per minuut, en concurrency betekent te veel tegelijk. Als de service kortstondig overbelast is, zie je ook een 429 met Retry-After: 5.
Een gestreamde chat houdt zijn concurrency slot vast tot de stream eindigt. Voor gedeeld gebruik geef je elke ontwikkelaar zijn eigen sleutel in plaats van één sleutel voor het team.
Probleemoplossingscontrolelijst
- Model niet gevonden. Typ
uncensoredopnieuw zonder spaties. Verwijder oude aangepaste modellen die je niet gebruikt. - Authenticatiefout. Kopieer de sleutel opnieuw. Zorg ervoor dat Cursor niet nog steeds een sleutel van een andere provider gebruikt.
- Antwoorden stoppen vroeg. Controleer of Cursor zijn eigen outputlimiet instelt. Aan onze kant is
max_tokensoptioneel. - Niets verandert in je saldo. De functie die je hebt gebruikt is niet gerouteerd via je aangepaste sleutel. Probeer in plaats daarvan chat.
- Frequente 429. Verlaag gelijktijdige verzoeken, of gebruik een volledige sleutel in plaats van een proefsleutel.
