Hilfe › API

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.

Für wen diese Seite ist Diese Seite richtet sich an Entwicklerinnen und Entwickler. Für die tägliche Arbeit mit Priki brauchen Sie nichts davon — dafür genügt app.priki.de.

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.

  1. Bereich „API-Keys" öffnen

    In app.priki.de, angemeldet als Inhaberin der Organisation.

  2. 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.

  3. 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.

  4. 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)
Unbekannte Parameter Felder des OpenAI-Schemas, die das Modell nicht kennt, werden verworfen statt abgelehnt. Eine Anfrage schlägt deshalb nicht fehl, nur weil Ihr SDK ein Feld mitschickt — sie wirkt dann aber auch nicht.

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-IDBezeichnungKontextfensterWofür
qwen3-14bQwen 3 14B32.768 Token Standard — starke Qualität für Texte, Analysen und Deutsch
qwen3-8bQwen 3 8B16.384 Token Sparsam — kurze Aufgaben, Titel, Aufbereitung
qwen3-30b-a3bQwen 3 30B-A3B (MoE) 32.768 TokenHohe Qualität bei hohem Tempo
qwen3-32bQwen 3 32B32.768 Token Höchste Präzision, dafür langsamer
Kontextfenster gilt für beides Anfrage und Antwort teilen sich das Fenster. Ein 30.000-Token-Prompt an ein Modell mit 32.768 Token lässt keine lange Antwort mehr zu; passt die Anfrage gar nicht, wird sie mit einem Fehler abgewiesen statt stillschweigend gekürzt. Rechnen Sie grob mit 3 bis 4 Zeichen deutschem Text je Token.

Grenzen

GrenzeWertAnmerkung
Ratenbegrenzung20 Anfragen/Sekunde im Mittel, kurzzeitig bis 40gemessen je aufrufender IP-Adresse, vor der Authentifizierung
Rate-Limit je Schlüsselfrei wählbar (Anfragen pro Minute)beim Anlegen des Schlüssels gesetzt
Monatsbudget je Schlüsselfrei wählbar (Token) ist es aufgebraucht, antwortet der Schlüssel bis zum Monatswechsel nicht mehr
Grösse der Anfrage1 MBweit mehr, als in das grösste Kontextfenster passt
Zeitlimit je Anfrage120 Sekundengilt 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": "..."}}
StatusBedeutungWas zu tun ist
400Anfrage 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.
401Kein, falscher oder widerrufener Schlüssel. Kopfzeile prüfen (Bearer nicht vergessen). Widerrufene Schlüssel leben nicht wieder auf — neuen anlegen.
403Der 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.
404Diesen Endpunkt gibt es nicht.Die Schnittstelle kennt GET /v1/models und POST /v1/chat/completions.
429Zu 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 / 503Das Modell ist gerade nicht erreichbar. Nach kurzer Wartezeit erneut versuchen; hält es an, an den Support wenden.
504Zeitlimit überschritten.Kürzeren Prompt, kleineres max_tokens oder stream verwenden.

Was die Schnittstelle nicht tut

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".

Ihre Verantwortung endet nicht am Schlüssel Was Sie über die API in eine eigene Anwendung einbauen, verarbeitet personenbezogene Daten unter Ihrem Namen. Prüfen Sie, wer den Schlüssel besitzt, wo Prompts und Antworten bei Ihnen landen (Logdateien!) und wie lange sie dort liegen bleiben.