Kasimir Docs DEEN Zur App →

API: Embeddings

OpenAI-kompatibler Embeddings-Endpunkt der Kasimir Public API für 1024-dimensionale Vektor-Embeddings.

Der Embeddings-Endpunkt wandelt Text in Vektoren um, die du für semantische Suche, Clustering, Klassifikation oder eigene RAG-Anwendungen nutzen kannst. Er ist kompatibel zur OpenAI Embeddings API: Du kannst das offizielle OpenAI-SDK (oder jeden OpenAI-kompatiblen Client) unverändert verwenden und stellst nur base_url und api_key auf Kasimir um. Es gelten die Modellfreigaben und das Budget eurer Firma.

Endpunkt

Methode

POST

URL

https://kasimir.ai/api/v1/embeddings

Base URL

https://kasimir.ai/api/v1

Content-Type

application/json

Auth

Authorization: Bearer <api-key>

Benötigter Scope

chat:write

OpenAI-kompatibel Setze in einem beliebigen OpenAI-Client base_url = "https://kasimir.ai/api/v1" und api_key = "<dein-kasimir-key>". Request- und Response-Form entsprechen POST /v1/embeddings von OpenAI.

Authentifizierung

Alle Aufrufe werden über einen Firmen-API-Key authentifiziert, der im Header Authorization: Bearer <key> mitgesendet wird.

  • Schlüssel erzeugen Inhaber und Admins unter Administration → Zugriff.

  • Ein Schlüssel beginnt mit kasi_ und wird nur einmal bei der Erstellung vollständig angezeigt.

  • Neue Schlüssel haben standardmäßig die Scopes chat:read und chat:write. Für Embeddings ist chat:write nötig.

  • Widerrufene Schlüssel werden mit 401 abgewiesen.

Key niemals im Client-Code Behandle den API-Key wie ein Passwort. Verwende ihn ausschließlich serverseitig und committe ihn nie in ein Repository. Bei Verlust den Key in /administration/access widerrufen und einen neuen erzeugen.

Request

Header

Wert

Pflicht

Authorization

Bearer <api-key>

ja

Content-Type

application/json

ja

Body-Parameter

Parameter

Typ

Pflicht

Beschreibung

model

string

ja

Der öffentliche Modell-Slug eines Embedding-Modells, z. B. jina-embeddings-v3. Verfügbare Slugs liefert GET /api/v1/models.

input

string | string[]

ja

Der zu embeddende Text. Entweder ein einzelner String oder ein Array von Strings für Batch-Embedding.

Weitere OpenAI-kompatible Felder (z. B. encoding_format oder dimensions) werden an das Modell weitergegeben, sofern es sie unterstützt. Pflicht sind nur model und input.

Response

Die Antwort entspricht dem OpenAI-Embeddings-Schema. Das Feld model enthält den Kasimir-Slug.

Feld

Typ

Beschreibung

object

string

Immer "list".

data

array

Liste der Embedding-Objekte (siehe unten).

model

string

Der angeforderte Kasimir-Modell-Slug.

usage

object

Token-Verbrauch: prompt_tokens, total_tokens.

Jedes Element in data:

Feld

Typ

Beschreibung

object

string

Immer "embedding".

index

number

Position im input-Array.

embedding

number[]

Der Vektor. Beim Standard-Modell 1024 Dimensionen.

Das Standardmodell jina-embeddings-v3 (EU-gehostet) liefert Vektoren mit 1024 Dimensionen.

Beispiele

curl — einzelner Text

curl https://kasimir.ai/api/v1/embeddings \
  -H "Authorization: Bearer kasi_DEIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "jina-embeddings-v3",
    "input": "Die DSGVO regelt den Umgang mit personenbezogenen Daten."
  }'

curl — Batch (mehrere Texte)

curl https://kasimir.ai/api/v1/embeddings \
  -H "Authorization: Bearer kasi_DEIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "jina-embeddings-v3",
    "input": [
      "Erster Absatz zum Embedden.",
      "Zweiter Absatz zum Embedden."
    ]
  }'

OpenAI Python SDK

from openai import OpenAI

client = OpenAI(
    base_url="https://kasimir.ai/api/v1",
    api_key="kasi_DEIN_API_KEY",
)

resp = client.embeddings.create(
    model="jina-embeddings-v3",
    input="Die DSGVO regelt den Umgang mit personenbezogenen Daten.",
)

vector = resp.data[0].embedding
print(len(vector))   # 1024
print(resp.usage.prompt_tokens)

Batch mit dem Python SDK

texts = [
    "Erster Absatz zum Embedden.",
    "Zweiter Absatz zum Embedden.",
]

resp = client.embeddings.create(model="jina-embeddings-v3", input=texts)

for item in resp.data:
    print(item.index, len(item.embedding))

Beispiel-Antwort

{
  "object": "list",
  "data": [
    {
      "object": "embedding",
      "index": 0,
      "embedding": [0.0123, -0.0456, 0.0789, "...weitere 1021 Werte..."]
    }
  ],
  "model": "jina-embeddings-v3",
  "usage": {
    "prompt_tokens": 12,
    "total_tokens": 12
  }
}
Anfrageweg eines Embeddings-Aufrufs: Auth, Modell-Governance und Budget-Prüfung vor dem Modellaufruf, danach Metering.
Anfrageweg eines Embeddings-Aufrufs: Auth, Modell-Governance und Budget-Prüfung vor dem Modellaufruf, danach Metering.

Modelle auflisten

Welche Slugs für deinen Workspace freigegeben sind, ermittelst du über den Modell-Endpunkt. Er gibt Chat- und Embedding-Modelle zurück (gefiltert nach Mandanten-Freigabe und EU-Gate):

curl https://kasimir.ai/api/v1/models \
  -H "Authorization: Bearer kasi_DEIN_API_KEY"
client.models.list()

Fehler

Fehler werden im OpenAI-Fehlerformat zurückgegeben, damit Standard-SDKs sie normal behandeln:

{
  "error": {
    "message": "Missing scope: chat:write",
    "type": "permission_error",
    "code": null
  }
}

Der HTTP-Statuscode bestimmt das type-Feld:

Status

error.type

Ursache

400

invalid_request_error

Ungültiger Body (fehlendes model/input oder falscher Typ).

401

authentication_error

Kein Bearer-Token, ungültiger Key oder widerrufener Key.

402

insufficient_quota

Monatsbudget des Workspace erreicht.

403

permission_error

Fehlender Scope (chat:write), für den Workspace deaktiviertes Modell, nicht freigegebenes Nicht-EU-Modell oder gesperrte Firma.

404

not_found_error

Modell-Slug unbekannt oder inaktiv.

429

invalid_request_error

Zu viele Anfragen in kurzer Zeit mit diesem Schlüssel.

>= 500

api_error

Vorübergehender Fehler bei der Verarbeitung (z. B. 502).

Budget-Grenze (402) Hat eure Firma ein Monatsbudget gesetzt und die Summe aus API- und In-App-Verbrauch des laufenden Kalendermonats erreicht es, antwortet jeder Aufruf mit 402. Ohne Budget gibt es keine Grenze.

Governance & Abrechnung

  • Modellfreigabe: Es gelten dieselben Regeln wie bei der Modellauswahl in der App – nur aktive, für eure Firma freigegebene Embedding-Modelle.

  • EU-Freigabe: Modelle außerhalb der EU werden mit 403 abgelehnt, solange eure Firma sie nicht ausdrücklich freigeschaltet hat. Das Standardmodell ist EU-gehostet.

  • Verbrauch: Jeder erfolgreiche Aufruf wird mit Tokens und Kosten in Euro verbucht und zählt zum Monatsbudget.

DSGVO / Datenresidenz Der Standard-Embedding-Slug jina-embeddings-v3 ist als EU-gehostet markiert. Wenn Datenresidenz für dich kritisch ist, prüfe vor dem Embedden personenbezogener Daten über GET /api/v1/models, dass dein gewähltes Modell EU-gehostet ist.