Character AI API: Wissel je client in drie regels uit
Verbind je chatbot binnen enkele minuten met een ongecensureerde LLM via onze OpenAI-compatibele API. Deze gids doorloopt de setup, basisverzoeken en streaming zonder configuratiehoofdpijn.
https://api.characteraiapi.com/v1
Vereisten
Voordat je code schrijft, heb je een actief account nodig op characteraiapi.com. Bezoek de API-sleutel ophalen pagina en meld je aan met alleen een e-mailadres en wachtwoord. Er is geen creditcard nodig om te beginnen, en nieuwe accounts ontvangen $0,50 aan gratis proeftegoed geldig voor 7 dagen. Zodra je bent geregistreerd, wordt je API-sleutel direct weergegeven. Bewaar deze sleutel veilig, omdat deze alle verzoeken aan de endpoint verifieert. Je hebt ook een ondersteunde SDK voor de taal nodig geïnstalleerd in je ontwikkelomgeving. De character ai api endpoint accepteert standaard OpenAI-parameters, dus elke bestaande OpenAI-compatible client kan met minimale wijzigingen werken.
Installeer de SDK
Installeer voor Python-projecten het officiële OpenAI-pakket met pip. Deze bibliotheek verwerkt automatisch de JSON-serialisatie en HTTP-verzoeken. Gebruik voor Node.js-applicaties npm om het openai-pakket toe te voegen. Beide bibliotheken ondersteunen de streaming- en tool-calling-functies die later in deze gids worden beschreven. Zorg dat je SDK-versie recent genoeg is om Server-Sent Events (SSE) te ondersteunen voor realtime token-streaming. Als je een aangepaste HTTP-client gebruikt in plaats van een SDK, moet je de JSON-payload en SSE-streamparsing handmatig afhandelen volgens de OpenAI API-specificatie.
Authenticatie
Elk verzoek aan de API moet je API-sleutel bevatten in de Authorization-header. Gebruik het formaat Bearer YOUR_API_KEY. De basis-URL voor alle verzoeken is https://api.characteraiapi.com/v1. Stel bij gebruik van een SDK de configuratie base_url in op deze waarde en lever je sleutel via de parameter api_key. Als je je sleutel kwijtraakt of vermoedt dat deze gelekt is, kun je deze opnieuw genereren via het dashboard; de oude sleutel wordt onmiddellijk ingetrokken. Per account is slechts één actieve sleutel toegestaan. Zorg dat je de juiste basis-URL gebruikt, want verzoeken aan het standaard OpenAI-endpoint zullen falen met een 404- of 401-fout.
Basis chatcompletion
De kernfunctionaliteit wordt aangeboden via het /v1/chat/completions-endpoint. Stuur een POST-verzoek met een modelnaam van uncensored en je berichtgeschiedenis. Het model reageert met tekstuitvoer zonder de standaard inhoudsfilters voor wettelijk volwassen materiaal toe te passen. Hieronder volgt een curl-voorbeeld dat een eenvoudig tekst-aanvullingsverzoek demonstreert.
curl https://api.characteraiapi.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Write a blunt product review of a cheap VPN."}]
}'
Dit verzoek retourneert een voltooiingsobject met de gegenereerde tekst. Je kunt parameters aanpassen zoals temperature om willekeurigheid te regelen of max_tokens om de uitvoerlengte te beperken. Het model ondersteunt een contextvenster van 100.000 tokens, waardoor uitgebreide gespreksgeschiedenis of lange documenten in één verzoek kunnen worden verwerkt.
Streamingresponsen
Schakel voor een betere gebruikerservaring streaming in door stream: true in je verzoek in te stellen. De API retourneert Server-Sent Events (SSE) met gedeeltelijke tokenchunks terwijl ze worden gegenereerd. Dit vermindert de waargenomen latentie voor chatbottoepassingen. Gebruik de parameter stream_options als je de laatste gebruikscijfers in het laatste evenement wilt ontvangen. Streaming is met name nuttig voor realtime-personagegesprekken, waarbij het tonen van tekst woord voor woord de immersie verhoogt. Zorg dat je clientcode het SSE-formaat correct afhandelt om elke chunk sequentieel te parseren.
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Tell the story in second person."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
Rate limits en fouten
De API handhaaft een limiet van 300 verzoeken per minuut per sleutel. Als je deze overschrijdt, ontvang je een 429 Too Many Requests-fout. Verzoeklichamen zijn beperkt tot 8 MB. Veelvoorkomende fouten zijn 401 voor een ongeldige of ontbrekende sleutel, en 402 als je prepaid tegoed op is. Je kunt opwaarderen vanaf $10 met crypto (USDT of USDC), met bonus tegoed beschikbaar voor grotere stortingen. In tegenstelling tot sommige providers zijn er geen verborgen kosten of abonnementsvergrendelingen; je betaalt alleen voor de tokens die je verbruikt. Prijzen zijn transparant: $0,25 per 1M invoertokens en $1,00 per 1M uitvoertokens. Zorg dat je foutafhandelingslogica opnieuw probeert bij 429s met exponentiële backoff.
from openai import OpenAI
client = OpenAI(base_url="https://api.characteraiapi.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)Node.js
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.characteraiapi.com/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);API-specificaties
Alle echte limieten en functies van de API op één plek — controleer ze voordat je opwaardeert.
| Onderdeel | Waarde |
|---|---|
| API-formaat | OpenAI-compatibel: elke OpenAI-SDK werkt — vervang alleen base URL en sleutel |
| Endpoints | POST /v1/chat/completions · GET /v1/models |
| Authenticatie | Authorization: Bearer YOUR_KEY |
| Base URL | https://api.characteraiapi.com/v1 |
| Model-ID | uncensored |
| JSON-modus | response_format: {"type": "json_object"} |
| Max. uitvoer | tot de rest van het venster van 100.000 tokens; max_tokens optioneel (geen aparte limiet) |
| Parameters | temperature, top_p, stop, seed, presence_penalty, frequency_penalty |
| Contextvenster | 100.000 tokens (invoer + uitvoer) |
| Streaming | ja — server-sent events; het laatste deel bevat het tokenverbruik |
| Function calling | ja — tools, tool_choice; antwoorden bevatten tool_calls, ook bij streaming; resultaten als role: tool |
| Verzoekgrootte | tot 8 MB |
| Responsheaders | X-Request-Id, X-Balance-USD, X-RateLimit-Limit-Requests, X-RateLimit-Limit-Concurrency |
| Gelijktijdige verzoeken | tot 8 tegelijk per sleutel |
| Rate limit | 300 verzoeken per minuut per sleutel |
| Geldigheid | betaald tegoed verloopt niet, geen abonnement |
| Bonus | +5% vanaf $50, +10% vanaf $100 |
| Opwaarderen | USDT (TRC20) of USDC (Base), elk heel bedrag van $10 tot $500 |
| Prijs | $0,25 per 1 mln invoertokens · $1,00 per 1 mln uitvoertokens |
| Afrekening | prepaid tegoed op basis van echt verbruik; fouten en weigeringen zijn gratis |
| Gratis proeftegoed | $0,50 voor 7 dagen, zonder kaart · Proefsleutel: 2 parallelle verzoeken, 60 per minuut; volledige limieten (8 en 300) na eerste opwaardering |
| Sleutels | één actieve sleutel per account; een nieuwe vervangt de oude |
| Inloggen | Google of e-mail en wachtwoord |
| Inhoud | inhoud voor volwassenen toegestaan; seksuele inhoud met minderjarigen wordt geweigerd |
Foutcodes
Fouten komen als JSON met een vaste type; mislukte of geweigerde verzoeken kosten niets.
| Code | Type | Betekenis |
|---|---|---|
400 | bad_request | ongeldige JSON, lege berichten, verkeerde parameter of context te lang |
401 | missing_key · invalid_key · key_revoked | sleutel ontbreekt, is onjuist of is vervangen |
402 | no_credit | geen tegoed — waardeer op en ga direct verder |
403 | content_blocked | seksuele inhoud met minderjarigen — geweigerd, niet gerekend |
404 | not_found | onbekend endpoint |
413 | request_too_large | body groter dan 8 MB |
429 | rate_limited · concurrency | meer dan 300/min of 8 tegelijk — wacht en probeer opnieuw |
503 | upstream_busy | model bezet — probeer het over enkele seconden opnieuw |
Vragen en antwoorden
Is dit de officiële Character.ai API?
Nee, dit is een onafhankelijke service gehost op characteraiapi.com. Het levert zijn eigen ongecensureerde model en is niet gelieerd aan Character.AI of een andere grote LLM-leverancier.
Ondersteunt het model afbeeldings- of audiogeneratie?
Nee. De API is alleen voor tekst. Het accepteert tekstinput en retourneert tekstoutput. Het ondersteunt geen embeddings, fine-tuning of multimodale inputs/outputs.
Hoe wordt 'ongecensureerd' gedefinieerd?
Het model weigert geen wettelijke volwassen, fictieve of controversiële onderwerpen. Het blokkeert alleen seksuele inhoud met minderjarigen, wat een harde limiet is die op alle verzoeken van toepassing is.
Je sleutel is nog maar één formulier verwijderd
Maak een account aan, kopieer de sleutel, wijzig de basis-URL. Dat is de hele setup.