Documentation développeurstableMis à jour 2026-07-08

SDKs

Utiliser les exemples SDK et patterns d’intégration Kadryn pour Gateway, ingestion directe, tracing et webhooks.

SDKs et examples help vous integrate Kadryn faster.

Utilisez cette page à understand le recommandé client forme even lorsque vous appeler Kadryn avec plain HTTP.

Configuration client recommandée

Un client Kadryn doit être configuré côté serveur avec :

KADRYN_API_KEY="kadryn_live_..."
KADRYN_API_BASE_URL="https://api.kadryn.com/v1"
KADRYN_GATEWAY_BASE_URL="https://gateway.kadryn.com/v1"

Wrapper TypeScript minimal

type KadrynClientConfig = {
  readonly apiKey: string;
  readonly apiBaseUrl: string;
  readonly gatewayBaseUrl: string;
};

export function createKadrynHeaders(apiKey: string): HeadersInit {
  return {
    Authorization: `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  };
}

Helper Gateway

type SendGatewayChatInput = {
  readonly config: KadrynClientConfig;
  readonly project: string;
  readonly feature: string;
  readonly environment: string;
  readonly requestGroupId?: string;
  readonly body: {
    readonly model: string;
    readonly messages: readonly {
      readonly role: "system" | "user" | "assistant";
      readonly content: string;
    }[];
  };
};

export async function sendGatewayChat({
  config,
  project,
  feature,
  environment,
  requestGroupId,
  body,
}: SendGatewayChatInput): Promise<Response> {
  return fetch(`${config.gatewayBaseUrl}/chat/completions`, {
    method: "POST",
    headers: {
      ...createKadrynHeaders(config.apiKey),
      "X-Kadryn-Project": project,
      "X-Kadryn-Feature": feature,
      "X-Kadryn-Environment": environment,
      ...(requestGroupId
        ? { "X-Kadryn-Request-Group-Id": requestGroupId }
        : {}),
    },
    body: JSON.stringify(body),
  });
}

Helper ingestion directe

type UsageEvent = {
  readonly timestamp: string;
  readonly provider: string;
  readonly model: string;
  readonly inputTokens: number;
  readonly outputTokens: number;
  readonly costCents: string;
  readonly project: string;
  readonly feature: string;
  readonly environment: string;
};

export async function sendUsageEvent(input: {
  readonly config: KadrynClientConfig;
  readonly event: UsageEvent;
  readonly idempotencyKey: string;
}): Promise<Response> {
  return fetch(`${input.config.apiBaseUrl}/usage/events`, {
    method: "POST",
    headers: {
      ...createKadrynHeaders(input.config.apiKey),
      "Idempotency-Key": input.idempotencyKey,
    },
    body: JSON.stringify(input.event),
  });
}

Attentes production

Votre wrapper doit :

  • keep secrets côté serveur;
  • exiger métadonnées;
  • support idempotency clés;
  • préserver trace IDs;
  • éviter logging secrets;
  • expose request IDs dans erreurs;
  • distinguish retryable et permanent erreurs.

Ce qu’un SDK ne doit pas masquer

Ne masquez pas :

  • policy blocks;
  • validation erreurs;
  • provider route échecs;
  • retry exhaustion;
  • manquant métadonnées;
  • idempotency conflicts.

A good client makes production échec modes explicit.

Pages liées