Docs›SDK-Referenz
SDK-Referenz
Grepture-Klasse, clientOptions() fuer jedes OpenAI-kompatible SDK, grepture.fetch() als Drop-in-Ersatz, Fehlerklassen und TypeScript-Typen.
Ueberblick
@grepture/sdk stellt einen Grepture-Client mit zwei Integrationsmethoden bereit:
grepture.clientOptions()— konfiguriert jedes OpenAI-kompatible SDK so, dass es ueber den Grepture-Proxy geleitet wirdgrepture.fetch()— ein Drop-in-Ersatz fuerfetch, der jeden HTTP-Aufruf schuetzt
Beide Methoden leiten den Datenverkehr ueber den Grepture-Proxy, wo Ihre Erkennungsregeln angewendet werden, bevor Anfragen externe Dienste erreichen.
Client erstellen
import { Grepture } from "@grepture/sdk";
const grepture = new Grepture({
apiKey: process.env.GREPTURE_API_KEY!,
proxyUrl: "https://proxy.grepture.com",
});
| Option | Type | Beschreibung |
|---|---|---|
apiKey | string | Ihr Grepture API Key (Format: gpt_...) |
proxyUrl | string | Grepture Proxy-URL |
clientOptions()
Gibt eine Konfiguration zurueck, die in den Konstruktor eines OpenAI-kompatiblen SDK gespreizt werden kann. Funktioniert mit jedem Anbieter, der dasselbe Client-Interface verwendet (OpenAI, Azure OpenAI, Groq, Together usw.) — uebergeben Sie einfach den API Key und die Base-URL des Zielanbieters.
import OpenAI from "openai";
import { Grepture } from "@grepture/sdk";
const grepture = new Grepture({
apiKey: process.env.GREPTURE_API_KEY!,
proxyUrl: "https://proxy.grepture.com",
});
const openai = new OpenAI({
...grepture.clientOptions({
apiKey: process.env.OPENAI_API_KEY!,
baseURL: "https://api.openai.com/v1",
}),
});
Eingabeoptionen
| Option | Type | Beschreibung |
|---|---|---|
apiKey | string | Der API Key des Zielanbieters (z. B. Ihr OpenAI Key) |
baseURL | string | Die Base-URL des Zielanbieters |
Rueckgabewert
clientOptions() gibt ein ClientOptionsOutput mit folgenden Feldern zurueck:
| Feld | Type | Beschreibung |
|---|---|---|
baseURL | string | Die Proxy-URL (ersetzt die Base-URL des Anbieters) |
apiKey | string | Der Ziel-API-Key (wird durchgereicht) |
fetch | typeof fetch | Ein gewrapptes fetch, das die Grepture-Auth-Header setzt und die Ziel-Authorization weiterleitet |
Intern verschiebt das gewrappte fetch den Authorization-Header des Ziel-SDKs nach X-Grepture-Auth-Forward und setzt Greptures eigenen Auth-Header, damit der Proxy beide Seiten authentifizieren kann.
grepture.fetch()
Ein Drop-in-Ersatz fuer fetch, der jeden HTTP-Aufruf ueber den Grepture-Proxy leitet. Verwenden Sie es fuer Webhooks, Analytics, Drittanbieter-APIs oder alles ausserhalb eines SDK.
const response = await grepture.fetch("https://api.example.com/data", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ user: "jane@example.com" }),
});
const data = await response.json();
grepture.fetch() akzeptiert dieselben Argumente wie die Standard-fetch-API. Es gibt eine GreptureResponse zurueck — einen Wrapper um die Standard-Response mit zusaetzlichen Eigenschaften:
| Eigenschaft | Type | Beschreibung |
|---|---|---|
requestId | string | Eindeutige ID fuer diese Anfrage (aus dem X-Request-Id-Header) |
rulesApplied | string[] | IDs der Erkennungsregeln, die zugetroffen haben (aus dem X-Grepture-Rules-Applied-Header) |
aiSampling | { used: number; limit: number } | null | AI-Sampling-Nutzung fuer Free-Tier-Benutzer (aus dem X-Grepture-AI-Sampling-Header). null bei kostenpflichtigen Plaenen oder wenn keine AI-Aktionen ausgefuehrt wurden. |
Alle Standard-Response-Methoden (json(), text(), blob(), arrayBuffer(), formData(), clone()) und Eigenschaften (status, ok, headers, body) sind verfuegbar.
Fehlerbehandlung
Das SDK wirft typisierte Fehlerklassen, wenn der Proxy einen Fehlerstatus zurueckgibt. Ihre bestehende Fehlerbehandlung funktioniert weiterhin — Fehler von der Ziel-API werden unveraendert durchgereicht.
import { Grepture, BlockedError, AuthError } from "@grepture/sdk";
try {
const response = await openai.chat.completions.create({
model: "gpt-4o",
messages: [{ role: "user", content: prompt }],
});
} catch (error) {
if (error instanceof BlockedError) {
// Request blocked by a detection rule (HTTP 403)
} else if (error instanceof AuthError) {
// Invalid or missing Grepture API key (HTTP 401)
}
}
Fehlerklassen
Alle Fehlerklassen erweitern GreptureError, welche Error erweitert und eine status-Eigenschaft enthaelt.
| Klasse | HTTP Status | Beschreibung |
|---|---|---|
BadRequestError | 400 | Fehlerhafte Anfrage (fehlende Header, ungueltige URL, Body zu gross) |
AuthError | 401 | Ungueltiger oder fehlender Grepture API Key |
BlockedError | 403 | Anfrage durch eine Erkennungsregel blockiert |
ProxyError | 502 / 504 | Ziel nicht erreichbar oder Zeitueberschreitung der Anfrage |
GreptureError | beliebig | Basisklasse — Auffangklasse fuer andere Nicht-OK-Status |
TypeScript-Typen
Das SDK ist vollstaendig typisiert. Alle Konfigurations- und Fehlertypen werden exportiert:
import type {
GreptureConfig,
ClientOptionsInput,
ClientOptionsOutput,
FetchOptions,
GreptureResponseMeta,
} from "@grepture/sdk";
| Type | Beschreibung |
|---|---|
GreptureConfig | { apiKey: string; proxyUrl: string } |
ClientOptionsInput | { apiKey: string; baseURL: string } |
ClientOptionsOutput | { baseURL: string; apiKey: string; fetch: typeof fetch } |
FetchOptions | Alias fuer RequestInit |
GreptureResponseMeta | { requestId: string; rulesApplied: string[]; aiSampling: { used: number; limit: number } | null } |
Laufzeitunterstuetzung
Das SDK laeuft in Node.js, Bun, Deno und Edge-Runtimes (Cloudflare Workers, Vercel Edge). Keine nativen Abhaengigkeiten.