Documentation développeur•stable•Mis à 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.