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.
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 -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
}'{
"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 -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
}'{
"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 https://scribe.whizztech.ai/v1/jobs/4d1a8f36-9e02-47b8-b7c4-3a92d5e60f18 \
-H "Authorization: Bearer $SCRIBE_KEY"{
"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 "https://scribe.whizztech.ai/v1/articles/9e72c4b0-51af-4c3d-8e6a-2d94b7f01c55?format=markdown" \
-H "Authorization: Bearer $SCRIBE_KEY"{
"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"
}