NL ▾
API-sleutel aanvragen

GLM API Base URL: Verbind elke OpenAI-client

De base URL voor deze dienst is https://api.glmapi.cc/v1, het model-ID is uncensored en de authenticatie verloopt via een standaard Bearer-sleutel. Hieronder vind je de exacte instellingen voor curl, Python, Node en veelgebruikte chat-interfaces, plus de fouten die de meeste eerste mislukte verzoeken veroorzaken.

Belangrijkste punten

  • Basis-URL: https://api.glmapi.cc/v1. Model: uncensored. Koptekst: Authorization: Bearer <key>.
  • Twee endpoints: POST /v1/chat/completions en GET /v1/models.
  • De meeste verbindingsfouten worden veroorzaakt door een ontbrekende /v1, een verdubbeling van het pad of een geplakte trailing slash.
  • Dit is een onafhankelijk endpoint, niet de officiële API van de leverancier achter GLM of een andere leverancier.
Terminal verbonden met een kabel die gloeit, ter illustratie van het wijzen van een client naar een nieuwe API base URL

De drie waarden die je nodig hebt

Een vraag over de base URL komt meestal van iemand die een client heeft die een URL, een sleutel en een modelnaam nodig heeft, maar niet weet welke waarden waar horen. Hier vind je ze allemaal op één plek.

InstellingWaarde
Basis-URLhttps://api.glmapi.cc/v1
Model-IDuncensored
Auth-headerAuthorization: Bearer YOUR_KEY
Chat-eindpuntPOST /v1/chat/completions
ModellijstGET /v1/models

Een verduidelijking voordat je iets kopieert. De naam van het domein verwijst naar de zoekterm, niet naar het model. Dit is een gehoste, OpenAI-compatibele tekst-API voor één open-weight model, uitgevoerd door een onafhankelijke provider, afgestemd op antwoorden zonder inhoudelijke weigeringen voor legaal gebruik door volwassenen. Het is niet de officiële API van de leverancier achter GLM, en geen router die doorstuurt naar andere leveranciers. Als je een officieel GLM-model nodig hebt, gebruik dan de eigen dienst van die leverancier.

Je krijgt een sleutel door je aan te melden met Google of met e-mail en wachtwoord. De API-sleutelpagina heeft ook een proeftegoed van $0,50 dat je met één klik activeert, geldig voor 7 dagen zonder kaart.

Controleer de verbinding met curl

Controleer de sleutel en URL met een eenvoudig verzoek voordat je een SDK of app aanraakt. Als dit werkt, zit elk volgend probleem in je clientconfiguratie en niet in het account. Lijst eerst de modellen op:

curl https://api.glmapi.cc/v1/models \
  -H "Authorization: Bearer YOUR_KEY"

Je zou een JSON-lijst moeten krijgen met daarin de id uncensored. Stuur daarna één chat completion:

curl https://api.glmapi.cc/v1/chat/completions \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [{"role": "user", "content": "Reply with the word ready."}],
    "max_tokens": 20
  }'

Voeg -i toe om de response headers te zien. Deze bevatten X-Request-Id, X-Balance-USD (je resterende tegoed), X-RateLimit-Limit-Requests en X-RateLimit-Limit-Concurrency. Bewaar de request ID als je ooit ondersteuning moet vragen over een verzoek.

Python en Node

Beide officiële OpenAI SDK's accepteren een aangepaste base URL. Je wijzigt twee constructorargumenten en de modelnaam; de rest van je code blijft zoals deze is.

Python

from openai import OpenAI

client = OpenAI(
    base_url="https://api.glmapi.cc/v1",
    api_key="YOUR_KEY",
)

resp = client.chat.completions.create(
    model="uncensored",
    messages=[{"role": "user", "content": "Give me three names for a tavern."}],
)
print(resp.choices[0].message.content)

Node.js

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.glmapi.cc/v1",
  apiKey: process.env.GLM_API_KEY,
});

const resp = await client.chat.completions.create({
  model: "uncensored",
  messages: [{ role: "user", content: "Give me three names for a tavern." }],
});
console.log(resp.choices[0].message.content);

De Node-eigenschap is baseURL met hoofdletters, terwijl het Python-argument base_url is. Ze door elkaar halen is een klassieke manier om stil terug te vallen op de standaardhost van de SDK en een authenticatiefout van de verkeerde server te krijgen.

Omgevingsvariabelen in plaats van code

De OpenAI SDK's lezen OPENAI_BASE_URL en OPENAI_API_KEY uit de omgeving als je ze niet expliciet doorgeeft. Dit is de minst invasieve manier om een tool die je niet kunt bewerken, zoals een script uit een repository of een framework dat de client voor je bouwt, opnieuw te richten.

export OPENAI_BASE_URL="https://api.glmapi.cc/v1"
export OPENAI_API_KEY="YOUR_KEY"
python my_existing_script.py

Je moet de modelnaam nog steeds instellen binnen de tool of het configuratiebestand op uncensored, omdat er geen omgevingsvariabele deze waarde draagt. Als de tool een model-dropdown heeft die alleen namen toont die het kent, zoek dan naar een optie voor een aangepast model of vrije tekst.

Houd de waarden op één plek

Zodra de verbinding werkt, plak de URL niet in vijf bestanden. Zet de drie waarden op één plek en lees ze overal anders in. Een .env bestand werkt voor kleine projecten:

GLM_BASE_URL=https://api.glmapi.cc/v1
GLM_API_KEY=YOUR_KEY
GLM_MODEL=uncensored

Laad ze dan eenmaal op bij het opstarten en maak één client die de rest van het programma importeert. Het voordeel merk je op de dag dat je sleutels wijzigt, een staging-sleutel toevoegt met een proeftegoed, of dit endpoint vergelijkt met een ander. Je bewerkt een bestand, niet je codebasis.

Houd aparte sleutels aan voor ontwikkeling en productie waar het account dit toelaat, en roteer een sleutel direct als deze in een commit, een screenshot of een gedeelde log verschijnt. Een gelekte sleutel besteedt je prepaid tegoed, en tegoed komt niet terug.

Chat-apps en frameworks

Front-ends verschillen in terminologie, maar vragen om dezelfde drie waarden. Zoek naar een verbindingstype genaamd OpenAI-compatible, custom OpenAI of vergelijkbaar, en vul dan in:

  • API URL / Base URL: https://api.glmapi.cc/v1
  • API-sleutel: de sleutel uit je account
  • Model: uncensored

SillyTavern laat je een OpenAI-compatible endpoint toevoegen via de aangepaste chat-completiebron, en Open WebUI heeft een OpenAI-compatible verbindingstype in de instellingen. Frameworks zoals LangChain nemen een base_url op in hun chatmodelklasse, en LiteLLM kan een OpenAI-style model routeren via een aangepaste API-base. Menu-namen verschillen tussen versies, dus volg de huidige documentatie van elk project voor de exacte locatie van het veld.

Sommige apps vragen of ze /chat/completions voor je moeten toevoegen. Veel doen dat, wat betekent dat de URL die je invoert moet stoppen bij /v1. Vraagt een app juist om het volledige endpoint, geef dan https://api.glmapi.cc/v1/chat/completions. De quickstart toont de ondersteunde requestvelden in meer detail.

Waarom het eerste verzoek mislukt

Als de curl-test slaagt en je app geeft nog steeds een fout, is de oorzaak bijna altijd een van deze:

  • Ontbrekende /v1. Alleen https://api.glmapi.cc gebruiken zal waarschijnlijk falen met een not-found fout, omdat de routes onder /v1 leven.
  • Verdubbeld pad. De app voegt /chat/completions toe en jij hebt het ook ingetypt, wat resulteert in /chat/completions/chat/completions. Verwijder het uit de base URL.
  • Trailing slash. Sommige clients koppelen paden slecht. Verwijder een laatste / als je een dubbele slash ziet in de gelogde URL.
  • Verkeerde modelnaam. Het enige model-ID is uncensored. Namen van andere diensten zullen niet overeenkomen.
  • Sleutelproblemen. Controleer op een losse spatie of regeleinde bij het plakken, en of de sleutel als Bearer twee keer wordt verzonden door een app die het prefix al toevoegt.
  • Verkeerde host aanroepen. In een browser-app valt een niet ingestelde base URL terug op de SDK-standaard. Log de daadwerkelijke verzoek-URL.

Aanroepen aan de browserkant stellen ook je sleutel bloot aan iedereen die de dev tools opent. Voor een publieke site stuur je verzoeken vanaf je eigen server en houd je de sleutel daar.

Als niets daarvan het verklaart, werk dan terug van het kleinste geval. Voer het curl-commando van eerder uit op dezelfde machine als de mislukte app. Als curl daar slaagt, zijn het netwerk en de sleutel in orde en bouwt de app het verzoek anders, dus zet dan de debug logging aan en vergelijk de gelogde URL, headers en JSON-body met de curl-versie, karakter voor karakter. Als curl op die machine alleen faalt, kijk dan naar corporate proxies, VPN-regels en DNS-filters, die soms onbekende API-hostnamen blokkeren. Een verzoek dat de server nooit bereikt, retourneert geen X-Request-Id, wat een snelle manier is om de twee gevallen uit elkaar te houden.

Limieten en 429-responses

Een volledige sleutel staat 8 gelijktijdige verzoeken en 300 verzoeken per minuut toe. Een proefsleutel staat 2 en 60 toe. Ga je over beide limieten heen, dan retourneert de API HTTP 429 met de code rate_limited (te veel per minuut) of concurrency (te veel tegelijk). Tijdens tijdelijke overbelasting krijg je ook een 429, met een Retry-After: 5 header.

Een gestreamd verzoek houdt zijn concurrency slot vast tot de stream eindigt, dus een app die een stream opent en verlaat zonder de verbinding te sluiten, kan zichzelf blokkeren. De maximale request body is 8 MB, en het contextvenster is 100.000 tokens, zowel voor prompt als completion samen. Voor tarieven en om op te waarderen, zie de prijzenpagina.

Streaming, tools en JSON gebruiken dezelfde URL

Er is geen apart adres voor streaming of function calling. Alles gaat naar /v1/chat/completions, en je schakelt functies aan in de request body. Een streaming request stelt "stream": true in en retourneert server-sent events; een request met tools voegt tools en optioneel tool_choice toe; JSON-modus voegt response_format toe met het type json_object. Sampling velden zoals temperature, top_p, stop, seed en de penalties worden doorgestuurd.

Hier is een streaming curl-opdracht. De -N vlag zet de output buffering van curl uit, zodat je chunks ziet aankomen:

curl -N https://api.glmapi.cc/v1/chat/completions \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"uncensored","stream":true,"messages":[{"role":"user","content":"Count to five."}]}'

Als je proxy of hosting laag antwoorden buffert, ziet streaming eruit als één grote vertraagde reactie. Reverse proxies hebben vaak response buffering uitgeschakeld nodig voor server-sent events, dus controleer die instelling voordat je de API de schuld geeft. Voor een uitgewerkte Python-versie van elke functie, zie de quickstart.

Vragen en antwoorden

Wat is de base URL voor deze API?

https://api.glmapi.cc/v1. Chatverzoeken gaan naar /chat/completions, en de modellijst staat op /models.

Welke modelnaam moet ik gebruiken?

Gebruik uncensored. Dit is het enige model-ID en het werkt in elke OpenAI-achtige client waarin je een aangepast model kunt invoeren.

Is dit de officiële GLM API?

Nee. Het is een onafhankelijke, OpenAI-compatibele service die één open-weight model draait, en het is niet de officiële API van een leverancier.

Welke header bevat de sleutel?

Authorization: Bearer gevolgd door jouw sleutel. De OpenAI SDK's voegen dit automatisch toe zodra je de sleutel doorgeeft.

Heb ik een creditcard nodig om de verbinding te testen?

Nee. Er is een trial van $0,50 met één klik beschikbaar, geldig voor 7 dagen, op de API-sleutelpagina na het inloggen.

Je sleutel is nog maar één formulier verwijderd

Maak een account aan, kopieer de sleutel, pas de base URL aan. Dat is de hele setup.

API-sleutel ophalenDocumentatie lezen