PromptFloe Developer Docs
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