Skip to content

v1 API · beta

The FAQ API.

Manage FAQ content like a database. Ship it through our SDK in any stack — React, Next.js, raw HTTP, or an AI agent. For teams that ship product, not pages.

TypeScript
import { createFAQClient } from "@faqapp/core";

const faq = createFAQClient({
  apiKey: process.env.FAQAPP_API_KEY,
  organizationSlug: "acme"
});

const { data } = await faq.questions.list({ limit: 20 });

Built for your stack.

  • Next.js Next.js
  • React React
  • TanStack TanStack
  • Cloudflare Workers Cloudflare Workers
  • Anthropic Anthropic
  • Vercel Vercel

Try it without an account.

Paste a URL. We scrape it, generate FAQ candidates with grounded answers, and return them in roughly 30 seconds. No sign-in for the demo.

We crawl the page, ask an AI what 8 customer questions matter, and ground the answers in your actual content. Takes ~10-30 seconds.

Three ways in.

Curl from a script, the typed SDK in any JS runtime, or React hooks in your app. Same API, same envelope, same auth.

curl Bash
curl -X POST https://api.thefaq.app/api/v1/acme/questions \
  -H "Authorization: Bearer $FAQAPP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "How do I rotate an API key?",
    "answer": "Create a new key, swap it in your env, then revoke the old one."
  }'
@faqapp/core TypeScript
import { createFAQClient } from "@faqapp/core";

const faq = createFAQClient({
  apiKey: process.env.FAQAPP_API_KEY,
  organizationSlug: "acme"
});

const { data } = await faq.questions.list({ limit: 20 });
@faqapp/react React 19
import { FAQClientProvider, useFaq } from "@faqapp/react";

export function Page() {
  return (
    <FAQClientProvider organizationSlug="acme">
      <FAQList />
    </FAQClientProvider>
  );
}

function FAQList() {
  const { data: questions } = useFaq().questions.list();
  return questions?.map(q => <Question key={q.id} {...q} />);
}

One envelope, every endpoint

Same shape, every response.

Every endpoint returns data and meta. Lists, single resources, mutations, errors — same envelope, same cursor pagination, same trace id. Write the parser once.

REQUEST curl
curl https://api.thefaq.app/v1/orgs/acme/questions \
  -H "Authorization: Bearer faq_live_..." \
  -G --data-urlencode "limit=2" \
  --data-urlencode "status=published"
RESPONSE 200 OK · application/json
{
  "data": [
    {
      "id": "q_8h2KdLpQ",
      "slug": "how-do-i-cancel-my-subscription",
      "question": "How do I cancel my subscription?",
      "answer": "Open Settings → Billing → Cancel subscription...",
      "status": "published",
      "category": { "id": "cat_billing", "name": "Billing" },
      "updated_at": "2026-05-19T22:14:08Z"
    },
    {
      "id": "q_3mNvR9YxT",
      "slug": "where-do-i-find-my-api-keys",
      "question": "Where do I find my API keys?",
      "answer": "Settings → API keys lists every key your...",
      "status": "published",
      "category": { "id": "cat_api", "name": "API" },
      "updated_at": "2026-05-18T09:42:11Z"
    }
  ],
  "meta": {
    "pagination": {
      "limit": 2,
      "cursor": "cur_9Kx2Lp",
      "has_more": true
    }
  }
}

Idempotent

Retry any write with the same Idempotency-Key; we de-dupe.

Traceable

Every response carries a x-faq-trace-id; quote it to support.

Versioned

URL-pinned (/v1/). Breaking changes ship as /v2/, never inline.

Your team's view

Manage content like a database.

Sidebar for the resources you'd expect — questions, categories, translations, API keys, members. Tables that act like tables. Drafts, scheduled, published. Audit log on every change. No surprises, no opinions about your workflow.

Everything here is also in the v1 API. The dashboard is the first customer of our own SDK.

app.thefaq.app/acme/questions

Questions

48 published · 4 drafts · 2 scheduled

Search questions…
  • How do I cancel my subscription?

    Billing

    published 2h ago
  • Where do I find my API keys?

    API

    published yesterday
  • Do you support SSO?

    Security

    published May 14
  • What happens at my plan limit?

    Billing

    draft May 12
  • How do refunds work?

    Billing

    scheduled May 10
  • Can I export all my data?

    Account

    published May 8
A acme / help
Search articles…

Open Settings → Billing → Cancel subscription. You keep access through the end of the current billing period, then move to the free plan automatically. No prorated refunds; you're free to come back anytime with the same organization slug.

Yes. Upgrades land on the same invoice as a pro-rated charge for the remaining days. Downgrades take effect at the next renewal so you don't lose paid features mid-cycle. Both happen from Settings → Billing → Change plan.

Dashboard → Settings → API keys. Each key is scoped (read, write, or admin) and shown exactly once on creation — copy it then. Rotate by creating a new key, swapping it in your env, and revoking the old one.

SAML SSO and SCIM provisioning ship on the Enterprise plan. Setup is two config values and a test login; email security@thefaq.app to enable. Google OAuth and email magic links work on every plan including Free.

Within the first 7 days of a paid plan, full refund on request — no questions. After that, we pro-rate the remaining period if you cancel and reverse the unused portion. Enterprise contracts follow the terms in your MSA.

5 articles Powered by your stack

Your customers' view

Same data, your design.

The SDK pulls from your organization. Your stack renders the surface. Your domain serves it. No CMS chrome, no platform-hosted help-page subdomain — your product is your product.

The mockup is rendered the same way your app would render it — same API, same response shape, same content. Style it however you want.

Why not just build it yourself?

You can. A questions table, a CRUD admin, an embed script, an OG-image generator, a search index, a webhook fan-out — roughly three engineer-weeks for the first version, plus the maintenance forever. thefaqapp ships those by 5pm tomorrow and gets out of your way.

We don't host your FAQ pages. We don't try to be a CMS. We're the API and the SDKs; your product is your product.

What's in the box.

v1 REST API

Questions, categories, translations, API keys, organizations. JSON envelope. Versioned. Rate-limited.

Typed SDKs

@faqapp/core runs anywhere JS does. @faqapp/react adds hooks plus SSR helpers.

AI intake

Paste a URL, get grounded FAQ candidates. OpenAI → Anthropic → Google fallback chain.

Translations

Per-organization language config. Machine-translate any question with a single call; edit before publishing.

Revisions

Last 50 saved versions per question. Diff. Restore. Storage rolls — revision 51 evicts revision 1.

Scheduled publish

Draft plus scheduledPublishAt. A 5-minute cron promotes anything past its mark. No QStash to manage on your end.

Start with the free plan.

1,000 reads per month. One API key. 50 questions. No card required. Upgrade when you need more.