Docs · Quickstart

First article in five calls.

Key → brand profile → article job → poll → fetch. A standard article costs 10 credits; trial accounts start with 30, so this walkthrough runs three times for free.

Get an API key#

Create a key at Dashboard → API Keys. The full key is displayed once at creation — only a SHA-256 hash is stored server-side, so copy it into your secret manager immediately.

shell
export SCRIBE_KEY="wz_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Create a brand profile#

A brand profile is what makes articles sound like you. With ingest_website: true (the default), the engine immediately crawls the site into a knowledge base and extracts a fact sheet plus voice profile in the background — the response includes the ingest_job_id for that crawl.

curl
curl -X POST https://scribe.whizztech.ai/v1/brand-profiles \
  -H "Authorization: Bearer $SCRIBE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Acme Analytics",
    "website_url": "https://www.acme-analytics.com",
    "description": "Self-serve product analytics for B2B SaaS teams",
    "ingest_website": true
  }'
Response · 201 Created
{
  "id": "bfa6d2a7-4c1e-4f7a-9a2b-91d3f0a6c8e2",
  "object": "brand_profile",
  "name": "Acme Analytics",
  "website_url": "https://www.acme-analytics.com",
  "voice_status": "none",
  "ingest_job_id": "0c9be9a4-2b77-4e19-8a5d-f21e6b40c7d3"
}

You can request articles right away — ingestion just improves them. Once the crawl finishes, voice_status moves to ready.

Request an article#

This is the only call that costs credits (10 for standard mode). The Idempotency-Key header is optional but recommended: retrying with the same key returns the original job instead of generating — and charging for — a duplicate.

curl
curl -X POST https://scribe.whizztech.ai/v1/articles \
  -H "Authorization: Bearer $SCRIBE_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: churn-article-001" \
  -d '{
    "topic": "How B2B SaaS teams actually cut churn with product analytics",
    "target_keyword": "reduce saas churn",
    "brand_profile_id": "bfa6d2a7-4c1e-4f7a-9a2b-91d3f0a6c8e2",
    "mode": "standard",
    "target_words": 1600
  }'
Response · 202 Accepted
{
  "id": "4d1a8f36-9e02-47b8-b7c4-3a92d5e60f18",
  "object": "job",
  "type": "article",
  "status": "queued",
  "credits_charged": 10,
  "replayed": false,
  "links": { "self": "/v1/jobs/4d1a8f36-9e02-47b8-b7c4-3a92d5e60f18" }
}

Poll the job#

Poll GET /v1/jobs/{id} every couple of seconds, backing off toward 10s. The stages array shows pipeline progress in real time. Prefer push? Webhooks deliver job.succeeded / job.failed instead.

curl (repeat until finished)
curl https://scribe.whizztech.ai/v1/jobs/4d1a8f36-9e02-47b8-b7c4-3a92d5e60f18 \
  -H "Authorization: Bearer $SCRIBE_KEY"
Response · 200 OK (finished)
{
  "id": "4d1a8f36-9e02-47b8-b7c4-3a92d5e60f18",
  "object": "job",
  "type": "article",
  "status": "succeeded",
  "stage": "score",
  "stages": [
    { "key": "recon", "label": "SERP recon — finding the information gap", "status": "done" },
    { "key": "plan", "label": "Planning outline & research questions", "status": "done" },
    { "key": "research", "label": "Researching (web + knowledge base)", "status": "done" },
    { "key": "draft", "label": "Writing the draft", "status": "done" },
    { "key": "edit", "label": "Editorial pass — voice & rhythm", "status": "done" },
    { "key": "seo", "label": "SEO finishing — meta, links, schema", "status": "done" },
    { "key": "score", "label": "Quality scoring", "status": "done" }
  ],
  "result": {
    "article_id": "9e72c4b0-51af-4c3d-8e6a-2d94b7f01c55",
    "title": "SaaS Churn Drops When You Instrument These 5 Moments",
    "word_count": 1584,
    "quality_score": 86,
    "citations": 9
  },
  "error": null,
  "credits_charged": 10,
  "created_at": "2026-07-06T09:41:12.000Z",
  "finished_at": "2026-07-06T09:45:03.000Z"
}

Fetch the article#

result.article_id on the succeeded job points at the finished article. Add ?format=markdown or ?format=html to receive only one body format and keep the payload small.

curl
curl "https://scribe.whizztech.ai/v1/articles/9e72c4b0-51af-4c3d-8e6a-2d94b7f01c55?format=markdown" \
  -H "Authorization: Bearer $SCRIBE_KEY"
Response · 200 OK (abridged)
{
  "id": "9e72c4b0-51af-4c3d-8e6a-2d94b7f01c55",
  "object": "article",
  "status": "in_review",
  "mode": "standard",
  "language": "en",
  "topic": "How B2B SaaS teams actually cut churn with product analytics",
  "target_keyword": "reduce saas churn",
  "title": "SaaS Churn Drops When You Instrument These 5 Moments",
  "slug": "saas-churn-product-analytics",
  "meta_title": "Reduce SaaS Churn: 5 Moments to Instrument",
  "meta_description": "Churn hides in five product moments most teams never instrument. How to find them with product analytics — with benchmarks from 9 sources.",
  "content_markdown": "# SaaS Churn Drops When You Instrument These 5 Moments\n\n…",
  "citations": [
    {
      "claim": "Median gross revenue churn for B2B SaaS was 3.5% annually in 2025",
      "url": "https://example.com/saas-benchmarks-2025",
      "title": "2025 SaaS Benchmarks Report"
    }
  ],
  "title_variants": [
    "The 5 Product Moments Where SaaS Churn Actually Starts",
    "Why Your Churn Dashboard Is Looking at the Wrong Numbers",
    "Cut SaaS Churn Without Another Win-Back Campaign"
  ],
  "faq": [{ "q": "What churn rate is normal for B2B SaaS?", "a": "…" }],
  "json_ld": { "@context": "https://schema.org", "@graph": ["…"] },
  "word_count": 1584,
  "read_minutes": 6.9,
  "flesch_score": 58.2,
  "quality_score": 86,
  "quality_breakdown": {
    "overall": 86, "clarity": 88, "hook": 84,
    "specificity": 87, "information_gain": 83, "notes": "…"
  },
  "hero_image_url": null,
  "derivatives": [],
  "created_at": "2026-07-06T09:45:02.000Z"
}