API — OpenAI-kompatible Schnittstelle
Priki lässt sich aus eigenen Anwendungen ansprechen. Die Schnittstelle folgt dem OpenAI-Schema: Bestehende SDKs funktionieren, indem Sie Basis-Adresse und Schlüssel austauschen. Der Inhalt bleibt dabei auf derselben Infrastruktur in Deutschland wie in der Anwendung selbst.
Basis-Adresse
https://api.priki.de/v1
Ausschließlich über HTTPS erreichbar. Andere Pfade unter
api.priki.de gehören nicht zur Schnittstelle und werden
abgewiesen.
Schlüssel anlegen
Schlüssel verwaltet die Inhaberin der Organisation in der Anwendung unter API-Keys. Mitglieder und Administratoren sehen den Bereich nicht.
Bereich „API-Keys" öffnen
In app.priki.de, angemeldet als Inhaberin der Organisation.
Neuen Key erstellen
Sie vergeben einen Namen (z. B. Website-Chatbot), ein Monatsbudget in Token, ein Rate-Limit in Anfragen pro Minute und die Modelle, die dieser Schlüssel benutzen darf. Alle vier Angaben gelten je Schlüssel — ein kompromittierter Schlüssel für den Chatbot reißt so nicht das Kontingent der ganzen Organisation mit.
Schlüssel sofort sichern
Der Klartext wird genau einmal angezeigt und danach nirgends mehr gespeichert — in der Datenbank liegen nur ein maskiertes Präfix und eine Prüfsumme. Auch der Betreiber kann ihn nicht erneut hervorholen. Behandeln Sie ihn wie ein Passwort: Umgebungsvariable oder Secret-Store, niemals im Frontend, niemals im Repository.
Bei Verdacht widerrufen
Ein Klick auf „Widerrufen" macht den Schlüssel sofort ungültig. Der Eintrag bleibt mit Datum stehen, damit der Verbrauch zuordenbar bleibt.
Authentifizierung
Der Schlüssel steht als Bearer-Token im Kopf jeder Anfrage:
Authorization: Bearer $PRIKI_KEY
Content-Type: application/json
Chat Completions
POST /v1/chat/completions — der Endpunkt für alles: Fragen,
Zusammenfassungen, Textentwürfe.
curl https://api.priki.de/v1/chat/completions \
-H "Authorization: Bearer $PRIKI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3-14b",
"messages": [
{"role": "system", "content": "Du bist ein praeziser Assistent. Antworte auf Deutsch."},
{"role": "user", "content": "Fasse den folgenden Absatz in drei Saetzen zusammen: ..."}
],
"temperature": 0.3,
"max_tokens": 800
}'
Antwort (gekürzt)
{
"id": "chatcmpl-...",
"object": "chat.completion",
"created": 1753600000,
"model": "qwen3-14b",
"choices": [
{
"index": 0,
"message": {"role": "assistant", "content": "..."},
"finish_reason": "stop"
}
],
"usage": {"prompt_tokens": 61, "completion_tokens": 142, "total_tokens": 203}
}
Streaming
Mit "stream": true kommt die Antwort als Server-Sent Events,
Stück für Stück — dieselbe Darstellung wie im Priki-Chat.
curl https://api.priki.de/v1/chat/completions \
-H "Authorization: Bearer $PRIKI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3-14b",
"messages": [{"role": "user", "content": "Nenne drei Vorteile der Zwei-Faktor-Anmeldung."}],
"stream": true
}'
Antwort (Ausschnitt)
data: {"choices":[{"delta":{"content":"Erstens"},"index":0}], ...}
data: {"choices":[{"delta":{"content":": Die"},"index":0}], ...}
data: [DONE]
Mit dem OpenAI-SDK
# pip install openai
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.priki.de/v1",
api_key=os.environ["PRIKI_KEY"],
)
r = client.chat.completions.create(
model="qwen3-14b",
messages=[{"role": "user", "content": "Hallo Priki!"}],
)
print(r.choices[0].message.content)
Modelle
GET /v1/models liefert, was Ihr Schlüssel tatsächlich
ansprechen darf. Diese Liste ist maßgeblich — welche Modelle
geladen sind, hängt von der Ausstattung Ihrer Installation ab.
curl https://api.priki.de/v1/models -H "Authorization: Bearer $PRIKI_KEY"
Antwort (gekürzt)
{
"object": "list",
"data": [
{"id": "qwen3-14b", "object": "model"}
]
}
Der Katalog, aus dem Priki auswählt:
| Modell-ID | Bezeichnung | Kontextfenster | Wofür |
|---|---|---|---|
qwen3-14b | Qwen 3 14B | 32.768 Token | Standard — starke Qualität für Texte, Analysen und Deutsch |
qwen3-8b | Qwen 3 8B | 16.384 Token | Sparsam — kurze Aufgaben, Titel, Aufbereitung |
qwen3-30b-a3b | Qwen 3 30B-A3B (MoE) | 32.768 Token | Hohe Qualität bei hohem Tempo |
qwen3-32b | Qwen 3 32B | 32.768 Token | Höchste Präzision, dafür langsamer |
Grenzen
| Grenze | Wert | Anmerkung |
|---|---|---|
| Ratenbegrenzung | 20 Anfragen/Sekunde im Mittel, kurzzeitig bis 40 | gemessen je aufrufender IP-Adresse, vor der Authentifizierung |
| Rate-Limit je Schlüssel | frei wählbar (Anfragen pro Minute) | beim Anlegen des Schlüssels gesetzt |
| Monatsbudget je Schlüssel | frei wählbar (Token) | ist es aufgebraucht, antwortet der Schlüssel bis zum Monatswechsel nicht mehr |
| Grösse der Anfrage | 1 MB | weit mehr, als in das grösste Kontextfenster passt |
| Zeitlimit je Anfrage | 120 Sekunden | gilt für Anfragen
ohne stream; lange Generierungen besser gestreamt abholen |
API-Nutzung zählt auf dasselbe Monatskontingent wie die Anwendung. Den Verbrauch je Schlüssel sehen Sie im Bereich API-Keys, den der Organisation auf der Übersicht.
Fehler
Fehler kommen im OpenAI-Format; entscheidend ist das Feld
message:
{"error": {"message": "...", "type": "...", "code": "..."}}
| Status | Bedeutung | Was zu tun ist |
|---|---|---|
| 400 | Anfrage fehlerhaft: ungültiges JSON, fehlende Felder, zu langer Prompt — oder ein Modell, das dieser Schlüssel nicht nutzen darf bzw. das nicht geladen ist. | Rumpf prüfen, Modell-ID gegen
/v1/models abgleichen. |
| 401 | Kein, falscher oder widerrufener Schlüssel. | Kopfzeile prüfen (Bearer nicht vergessen). Widerrufene
Schlüssel leben nicht wieder auf — neuen anlegen. |
| 403 | Der Zugang Ihrer Organisation ruht — abgelaufene Testphase oder pausiertes Abonnement. | Nicht wiederholen, das löst sich nicht von selbst: in der Anwendung unter Einstellungen, Bereich Tarif & Zahlung, klären. |
| 404 | Diesen Endpunkt gibt es nicht. | Die Schnittstelle
kennt GET /v1/models und
POST /v1/chat/completions. |
| 429 | Zu viele Anfragen oder Budget erschöpft. | Wiederholen mit wachsendem Abstand (exponentielles Backoff), nicht in enger Schleife. Bei Budget: Grenze in der Anwendung anheben. |
| 500 / 502 / 503 | Das Modell ist gerade nicht erreichbar. | Nach kurzer Wartezeit erneut versuchen; hält es an, an den Support wenden. |
| 504 | Zeitlimit überschritten. | Kürzeren Prompt,
kleineres max_tokens oder stream verwenden. |
Was die Schnittstelle nicht tut
- Kein Internetzugang. Das Modell ruft keine Webseite ab, öffnet keinen Link und sucht nichts nach. Alles, was es wissen soll, muss im Prompt stehen.
- Kein Training auf Ihren Daten. Anfragen fließen nicht in ein Modell zurück. Das Gateway schreibt die Inhalte nicht mit — erfasst werden nur Tokenzahlen für die Verbrauchsanzeige.
- Kein Gedächtnis zwischen Anfragen. Jeder Aufruf steht
für sich; einen Gesprächsverlauf schicken Sie selbst im Feld
messagesmit. - Nur Text. Keine Bilder, keine Audiodateien, kein Datei-Upload. PDFs wandeln Sie vor dem Aufruf in Text um.
- Keine Anwendungsfunktionen. Dokumentanhänge, Briefe, Notizen, Team-Chat und Suche gehören zur Anwendung, nicht zur Schnittstelle. Die API ist reine Inferenz.
- Kein unbegrenzter Kontext. Siehe Kontextfenster oben.
Datenschutz
Für Anfragen über die API gilt, was auch in der Anwendung gilt: Die Verarbeitung findet auf eigener Hardware in Deutschland statt, es ist kein US-Anbieter beteiligt, und die Inhalte werden nicht zum Training verwendet. Es gilt der Auftragsverarbeitungsvertrag Ihrer Organisation: Er erfasst alle personenbezogenen Daten, die berechtigte Nutzer in die Plattform eingeben — also auch die über die API gesendeten. Details unter „Was mit Ihren Daten passiert" und „Verträge & DSGVO".