Die drei Werte, die du benötigst
Eine Frage zur glm api base url kommt meist von jemandem, der einen Client hat, der eine URL, einen Schlüssel und einen Modellnamen benötigt, aber keine Ahnung hat, welche Werte wohin gehören. Hier sind sie an einem Ort.
| Einstellung | Wert |
|---|---|
| Base-URL | https://api.glmapi.cc/v1 |
| Modell-ID | uncensored |
| Auth-Header | Authorization: Bearer YOUR_KEY |
| Chat-Endpunkt | POST /v1/chat/completions |
| Modellliste | GET /v1/models |
Eine Klarstellung, bevor du irgendetwas kopierst. Der Name der Domain bezieht sich auf den Suchbegriff, nicht auf das Modell. Dies ist eine gehostete, OpenAI-kompatible Text-API für ein Open-Weight-Modell, betrieben von einem unabhängigen Anbieter, optimiert für Antworten ohne Inhaltsablehnungen für die rechtmäßige Nutzung durch Erwachsene. Es ist nicht die offizielle API des Anbieters hinter GLM und kein Router, der an andere Anbieter weiterleitet. Wenn du ein offizielles GLM-Modell benötigst, nutze den eigenen Dienst dieses Anbieters.
Du erhältst einen Schlüssel, indem du dich mit Google oder mit E-Mail und Passwort anmeldest. Die API-Schlüssel-Seite bietet zudem eine One-Click-Testversion für 0,50 $, gültig für 7 Tage, ohne Kreditkarte.
Überprüfe die Verbindung mit curl
Bevor du ein SDK oder eine App anfasst, bestätige den Schlüssel und die URL mit einer einfachen Anfrage. Wenn das funktioniert, liegt jedes spätere Problem in deiner Client-Konfiguration und nicht im Konto. Zuerst listest du die Modelle auf:
curl https://api.glmapi.cc/v1/models \
-H "Authorization: Bearer YOUR_KEY"Du solltest eine JSON-Liste erhalten, die die id uncensored enthält. Sende dann eine Chat-Vervollständigung:
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
}'Füge -i hinzu, um die Antwort-Header zu sehen. Diese enthalten X-Request-Id, X-Balance-USD (dein verbliebenes Guthaben), X-RateLimit-Limit-Requests und X-RateLimit-Limit-Concurrency. Bewahre die Request-ID auf, falls du Support zu einer Anfrage kontaktieren musst.
Python und Node
Beide offiziellen OpenAI-SDKs akzeptieren eine benutzerdefinierte Basis-URL. Du änderst zwei Konstruktorargumente und den Modellnamen; der Rest deines Codes bleibt unverändert.
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);Die Node-Eigenschaft ist baseURL mit Großbuchstaben, während das Python-Argument base_url heißt. Sie zu verwechseln ist ein klassischer Weg, um still auf den Standard-Host des SDKs zurückzufallen und einen Authentifizierungsfehler vom falschen Server zu erhalten.
Umgebungsvariablen statt Code
Die OpenAI-SDKs lesen OPENAI_BASE_URL und OPENAI_API_KEY aus der Environment aus, wenn du sie nicht explizit übergibst. Das ist die schonendste Methode, um ein Tool umzuleiten, das du nicht bearbeiten kannst, wie ein Skript aus einem Repository oder ein Framework, das den Client für dich erstellt.
export OPENAI_BASE_URL="https://api.glmapi.cc/v1"
export OPENAI_API_KEY="YOUR_KEY"
python my_existing_script.pyDu musst den Modellnamen innerhalb des Tools oder seiner Konfigurationsdatei trotzdem auf uncensored setzen, da keine Umgebungsvariable diesen Wert enthält. Wenn das Tool eine Modellauswahl hat, die nur bekannte Namen auflistet, suche nach einer Option für benutzerdefinierte Modelle oder Freitext.
Halte die Werte an einem Ort
Sobald die Verbindung funktioniert, vermeide es, die URL in fünf Dateien einzufügen. Lege die drei Werte an einem Ort ab und lese sie überall anders. Eine .env-Datei funktioniert für kleine Projekte:
GLM_BASE_URL=https://api.glmapi.cc/v1
GLM_API_KEY=YOUR_KEY
GLM_MODEL=uncensoredLade sie dann einmal beim Start und erstelle einen einzelnen Client, den der Rest des Programms importiert. Der Vorteil zeigt sich, wenn du Schlüssel änderst, einen Staging-Schlüssel mit Testguthaben hinzufügst oder diesen Endpunkt mit einem anderen vergleichst. Du bearbeitest eine Datei, nicht deine Codebasis.
Halte separate Schlüssel für Entwicklung und Produktion, wo das Konto es erlaubt, und rotiere einen Schlüssel sofort, wenn er in einem Commit, einem Screenshot oder einem gemeinsamen Protokoll erscheint. Ein durchgesickerter Schlüssel verbraucht dein Prepaid-Guthaben, und Guthaben kommt nicht zurück.
Chat-Apps und Frameworks
Frontends unterscheiden sich in der Bezeichnung, fragen aber dieselben drei Werte ab. Suche nach einem Verbindungstyp namens OpenAI-kompatibel, benutzerdefiniertes OpenAI oder Ähnlichem, und fülle dann aus:
- API-URL / Base URL:
https://api.glmapi.cc/v1 - API-Schlüssel: der Schlüssel aus deinem Konto
- Modell:
uncensored
SillyTavern ermöglicht es dir, einen OpenAI-kompatiblen Endpunkt über die benutzerdefinierte Chat-Vervollständigungsquelle hinzuzufügen, und Open WebUI hat in den Einstellungen einen OpenAI-kompatiblen Verbindungstyp. Frameworks wie LangChain übernehmen eine base_url in ihrer Chat-Modellklasse, und LiteLLM kann ein OpenAI-ähnliches Modell über eine benutzerdefinierte API-Basis-URL routen. Die Menünamen ändern sich zwischen Versionen, folge daher der aktuellen Dokumentation jedes Projekts, um genau zu wissen, wo das Feld zu finden ist.
Einige Apps fragen, ob sie /chat/completions anhängen sollen. Viele tun dies, was bedeutet, dass die eingegebene URL bei /v1 enden muss. Wenn eine App stattdessen den vollständigen Endpunkt verlangt, gib ihr https://api.glmapi.cc/v1/chat/completions. Die Schnellstartanleitung zeigt die unterstützten Anfragefelder im Detail.
Warum der erste Aufruf fehlschlägt
Wenn der curl-Test besteht und deine App trotzdem einen Fehler meldet, liegt die Ursache fast immer an einem dieser Punkte:
- Fehlender
/v1. Die Verwendung vonhttps://api.glmapi.ccallein führt wahrscheinlich zu einem Fehler „nicht gefunden“, da die Routen unter/v1liegen. - Doppelter Pfad. Die App hängt
/chat/completionsan, und du hast es ebenfalls eingegeben, was zu/chat/completions/chat/completionsführt. Entferne es aus der Base URL. - Abschließender Slash. Einige Clients verknüpfen Pfade schlecht. Entferne einen abschließenden
/, wenn du einen doppelten Slash in der protokollierten URL siehst. - Falscher Modellname. Die einzige Modell-ID ist
uncensored. Namen aus anderen Diensten werden nicht übereinstimmen. - Schlüsselprobleme. Prüfe auf ein überflüssiges Leerzeichen oder einen Zeilenumbruch beim Einfügen und darauf, ob der Schlüssel von einer App, die das Präfix bereits hinzufügt, doppelt als
Bearergesendet wird. - Aufruf des falschen Hosts. In einer Browser-App fällt eine nicht gesetzte Base URL auf den SDK-Standard zurück. Protokolliere die tatsächliche Anfrage-URL.
Browser-seitige Aufrufe setzen deinen Schlüssel auch jedem aus, der die Entwicklertools öffnet. Sende für eine öffentliche Site Anfragen von deinem eigenen Server und halte den Schlüssel dort.
Wenn das alles nicht weiterhilft, arbeite rückwärts vom kleinsten Fall aus. Führe den curl-Befehl von früher auf derselben Maschine wie die fehlerhafte App aus. Wenn curl dort erfolgreich ist, sind Netzwerk und Schlüssel in Ordnung und die App baut die Anfrage anders auf; aktiviere dann das Debug-Logging der App und vergleiche die protokollierte URL, Header und den JSON-Body zeichenweise mit der curl-Version. Wenn curl auf dieser Maschine nur fehlschlägt, prüfe Unternehmensproxys, VPN-Regeln und DNS-Filter, die manchmal unbekannte API-Hostnames blockieren. Eine Anfrage, die den Server nie erreicht, liefert keine X-Request-Id, was eine schnelle Möglichkeit ist, die beiden Fälle zu unterscheiden.
Limits und 429-Antworten
Ein vollständiger Schlüssel erlaubt 8 parallele Anfragen und 300 Anfragen pro Minute. Ein Test-Schlüssel erlaubt 2 und 60. Überschreitest du einen dieser Werte, gibt die API HTTP 429 zurück mit dem Code rate_limited (zu viele pro Minute) oder concurrency (zu viele gleichzeitig). Bei temporärer Überlastung erhältst du ebenfalls eine 429 mit einem Retry-After: 5-Header.
Eine gestreamte Anfrage belegt ihren Concurrency-Slot, bis der Stream endet, sodass eine App, die einen Stream öffnet und verlässt, ohne die Verbindung zu schließen, sich selbst blockieren kann. Der maximale Anfragekörper beträgt 8 MB, und das Kontextfenster umfasst 100.000 Token, die Prompt und Vervollständigung zusammen abdecken. Für Raten und Aufladungen siehe die Preisseite.
Streaming, Tools und JSON nutzen dieselbe URL
Es gibt keine separate Adresse für Streaming oder Function Calling. Alles geht an /v1/chat/completions, und du schaltest Funktionen im Anfragekörper ein. Eine Streaming-Anfrage setzt "stream": true und sendet Server-Sent Events; eine Anfrage mit Tools fügt tools und optional tool_choice hinzu; JSON-Modus fügt response_format mit dem Typ json_object hinzu. Sampling-Felder wie temperature, top_p, stop, seed und die Penalties werden durchgereicht.
Hier ist eine Streaming-curl-Anfrage. Das Flag -N schaltet die Ausgabe-Pufferung von curl aus, sodass du Chunks siehst, wie sie eintreffen:
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."}]}'Wenn dein Proxy oder Hosting-Layer Antworten puffert, sieht Streaming wie eine große verzögerte Antwort aus. Reverse Proxies benötigen oft das Deaktivieren der Antwort-Pufferung für Server-Sent Events, also prüfe diese Einstellung, bevor du der API die Schuld gibst. Für eine durchgearbeitete Python-Version jedes Features sieh dir die Schnellstartanleitung an.
Weitere Anleitungen
Fragen und Antworten
Was ist die Base URL für diese API?
https://api.glmapi.cc/v1. Chat-Anfragen gehen an /chat/completions darunter, und die Modellliste ist unter /models verfügbar.
Welchen Modellnamen soll ich verwenden?
Nutze uncensored. Es ist die einzige Modell-ID und funktioniert in jedem OpenAI-kompatiblen Client, in dem du ein benutzerdefiniertes Modell eingeben kannst.
Ist dies die offizielle GLM-API?
Nein. Es ist ein unabhängiger, OpenAI-kompatibler Dienst, der ein Open-Weight-Modell betreibt, und nicht die offizielle API eines Anbieters.
Welcher Header enthält den Schlüssel?
Authorization: Bearer gefolgt von deinem Schlüssel. Die OpenAI-SDKs fügen dies automatisch hinzu, wenn du den Schlüssel übergibst.
Brauche ich eine Kreditkarte, um die Verbindung zu testen?
Nein. Eine One-Click-Testversion für 0,50 $, gültig für 7 Tage, ist auf der API-Schlüssel-Seite nach der Anmeldung verfügbar.
Dein Schlüssel ist nur ein Formular entfernt
Erstelle ein Konto, kopiere den Schlüssel, ändere die Basis-URL. Das ist die gesamte Einrichtung.
