DocsSDK-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 wird
  • grepture.fetch() — ein Drop-in-Ersatz fuer fetch, 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",
});
OptionTypeBeschreibung
apiKeystringIhr Grepture API Key (Format: gpt_...)
proxyUrlstringGrepture 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

OptionTypeBeschreibung
apiKeystringDer API Key des Zielanbieters (z. B. Ihr OpenAI Key)
baseURLstringDie Base-URL des Zielanbieters

Rueckgabewert

clientOptions() gibt ein ClientOptionsOutput mit folgenden Feldern zurueck:

FeldTypeBeschreibung
baseURLstringDie Proxy-URL (ersetzt die Base-URL des Anbieters)
apiKeystringDer Ziel-API-Key (wird durchgereicht)
fetchtypeof fetchEin 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:

EigenschaftTypeBeschreibung
requestIdstringEindeutige ID fuer diese Anfrage (aus dem X-Request-Id-Header)
rulesAppliedstring[]IDs der Erkennungsregeln, die zugetroffen haben (aus dem X-Grepture-Rules-Applied-Header)
aiSampling{ used: number; limit: number } | nullAI-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.

KlasseHTTP StatusBeschreibung
BadRequestError400Fehlerhafte Anfrage (fehlende Header, ungueltige URL, Body zu gross)
AuthError401Ungueltiger oder fehlender Grepture API Key
BlockedError403Anfrage durch eine Erkennungsregel blockiert
ProxyError502 / 504Ziel nicht erreichbar oder Zeitueberschreitung der Anfrage
GreptureErrorbeliebigBasisklasse — 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";
TypeBeschreibung
GreptureConfig{ apiKey: string; proxyUrl: string }
ClientOptionsInput{ apiKey: string; baseURL: string }
ClientOptionsOutput{ baseURL: string; apiKey: string; fetch: typeof fetch }
FetchOptionsAlias 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.