Docs

Quickstart

Everything below runs against the live API. Keys are issued with waitlist invites while we're in beta — join here and you'll get one with your invite email.

1. One key, plain HTTPS

Every service is a resource under api.paean.dev, authenticated with a Bearer key scoped per project. Create a support thread:

curl -X POST https://api.paean.dev/support/threads \
  -H "Authorization: Bearer $PAEAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "body": "Reset password button does nothing on Safari",
    "category": "bug",
    "reporter_email": "user@example.com",
    "reporter_name": "Alice"
  }'

The response includes a public ref (like ACME-42) your user can use on the hosted lookup page — replies flow back over email automatically.

2. Or the typed SDK

The TypeScript SDK covers support, waitlist, feedback, flags, changelog and files. Server-side only — never ship your key to a browser.

import { createPaeanClient } from "@paean/sdk";

const paean = createPaeanClient({
  baseUrl: "https://api.paean.dev",
  apiKey: process.env.PAEAN_API_KEY!, // server-side only
});

// Support thread (returns a public ref like ACME-42)
const thread = await paean.support.threads.create({
  body: "Reset password button does nothing on Safari",
  category: "bug",
  reporter_email: "user@example.com",
  reporter_name: "Alice",
});

// Waitlist signup
await paean.waitlist.add({ email: "early@adopter.dev", referrer: "x" });

// Feedback
await paean.feedback.submit({ rating: 9, comment: "Love it" });

// Feature flag
const flag = await paean.flags.evaluate("new-checkout", { user_id: "u_1" });

3. On Cloudflare Workers? Skip the network

If your backend is a Worker, a service binding gives you zero-egress, single-digit-ms calls:

// wrangler.jsonc — zero-egress if your backend is a CF Worker
{ "services": [{ "binding": "PAEAN", "service": "paean-api" }] }

// then:
const paean = createPaeanClient({
  binding: env.PAEAN,
  apiKey: env.PAEAN_API_KEY,
});

What's covered today

  • Support inbox — threads, replies, statuses, tags, inbound email, public lookup page. Full REST surface.
  • Waitlist — signup, list, invite (fires the invite email).
  • Feedback — ratings + comments with stats.
  • Feature flags — CRUD + edge-cached evaluate.
  • Changelog — public JSON feed you can embed.
  • Files — upload, stream, on-the-fly image resize.
  • Webhooks, cron monitoring, email notifiers — API-first today; portal UI is rolling out.

Full API reference is being published service-by-service. Anything unclear in the meantime — ask us, replies usually land same-day.