Client SDKs
Node / TypeScript SDK
The @promptfloe/sdk package — works in Node 18+, Bun, Deno, Cloudflare Workers, and modern browsers. Zero runtime dependencies, ESM + CJS dual published, typed end-to-end.
#Install
npm install @promptfloe/sdk#Basic usage
index.ts
import { PromptFloe } from '@promptfloe/sdk';
const client = new PromptFloe({
apiKey: process.env.PROMPTFLOE_API_KEY,
});
// One-shot generate
const app = await client.apps.generate({
prompt: 'A pricing page for a CRM SaaS',
});
console.log(app.previewUrl);
// Streaming generate
for await (const ev of client.apps.generateStream({ prompt: 'landing page' })) {
console.log(ev.type);
}#ESM and CommonJS
The package ships both. Modern projects pick up the ESM build via "exports"; legacy require() users get the CJS build automatically.
typescript
// ESM
import { PromptFloe } from '@promptfloe/sdk';
// CJS
const { PromptFloe } = require('@promptfloe/sdk');#Environments
The SDK uses the platform's native fetch. Tested on:
- Node 18+ (built-in fetch, AbortController, ReadableStream).
- Bun 1.0+.
- Deno 1.40+.
- Cloudflare Workers.
- Modern browsers (Chrome/Firefox/Safari last 2 versions).
#Types
Every method is fully typed — request/response shapes, streaming event discriminated unions, error classes. The package exports all model types:
typescript
import type {
App, AppGenerateRequest, AppGenerateEvent,
Skill, SkillRunResult, SkillRunEvent,
CustomSkill, WorkspaceContext,
PromptFloeError, PromptFloeAPIError, PromptFloeRateLimitError,
} from '@promptfloe/sdk';#Error handling
typescript
import { PromptFloeAPIError, PromptFloeRateLimitError } from '@promptfloe/sdk';
try {
await client.apps.generate({ prompt: '...' });
} catch (e) {
if (e instanceof PromptFloeRateLimitError) {
await sleep(e.retryAfterMs);
} else if (e instanceof PromptFloeAPIError) {
console.error(e.code, e.message, e.requestId);
} else {
throw e;
}
}#Where to go next
PromptFloe developer docs