import { createApiKeySdk } from "keystash-sdk";
const sdk = createApiKeySdk({
baseUrl: "https://api.keystash.dev"
});
await sdk.account.connect(process.env.KEYSTASH_APP_KEY!);
const session = await sdk.runtime.sessions.create({
spaceId: "acme-prod",
endUserId: "user_123",
operationIds: ["summarize_ticket"],
ttlMinutes: 15
});
await sdk.runtime.connect(session.token);
{
"spaceId": "acme-prod",
"endUserId": "user_123",
"operationIds": ["summarize_ticket"],
"expiresIn": "15m",
"token": "kst_rt_..."
}
const sdk = createApiKeySdk({
baseUrl: "https://api.keystash.dev"
});
await sdk.account.connect(process.env.KEYSTASH_APP_KEY!);
const billing = await sdk.spaces.endUserBilling.update("acme-prod", {
stripeWebhookSecret: process.env.STRIPE_WEBHOOK_SECRET!,
endUserIdSource: "metadata",
endUserIdMetadataKey: "keystash_end_user_id",
spendAmountSource: "metadata",
spendAmountMetadataKey: "keystash_spend_usd"
});
console.log(billing.webhookUrl);
{
"webhookUrl": "https://api.keystash.dev/api/spaces/acme-prod/end-user-billing/stripe/webhook",
"endUserIdSource": "metadata",
"spendAmountSource": "metadata"
}
const result = await sdk.runtime.invoke({
operationId: "summarize_ticket",
input: {
ticket: "Customer asks for refund after duplicate charge."
}
}, session.token);
{
"operationSlug": "summarize_ticket",
"model": "openai/gpt-5.4-mini",
"outputText": "Duplicate charge. Refund likely. Escalate billing.",
"usage": {
"inputTokens": 212,
"outputTokens": 36,
"totalTokens": 248
}
}
{
"type": "checkout.session.completed",
"data": {
"object": {
"metadata": {
"keystash_end_user_id": "user_123",
"keystash_spend_usd": "25"
}
}
}
}
{
"endUserId": "user_123",
"grantedSpendUsd": 25,
"source": "stripe.checkout.session.completed"
}
const feature = await sdk.spaces.operations.create("acme-prod", {
title: "Summarize ticket",
slug: "summarize_ticket",
model: "openai/gpt-5.4-mini",
systemPrompt: "You summarize support tickets for internal agents.",
userTemplate: "Ticket:\n{{ticket}}\n\nReturn a concise summary.",
monthlyInvocationLimit: 10000,
allowedOrigins: ["https://app.acme.com"]
});