Create drafts
niche_draft_createNiche draft content: lock the chosen angle and turn it into platform-native social drafts (LinkedIn post, X thread, Instagram, newsletter/long-form), ready to review and publish, the downstream payoff once the story and angle are decided. Returns immediately with status=cp3_generating; poll niche_session_state until outputs[] is populated. Each output carries its trust data nested under outputs[i].trust: source_faithfulness_score, source_ungrounded_claims[], source_diversity_passed, source_recency_passed, overall_severity, a severity-tagged flags[], and verifier_blocked_reason/verifier_blocked_claim when a fabrication was refused. (No top-level verifier_audit field; read outputs[i].trust.)
BRAND: voice/offer/CTA come from the run's bound brand. If this account has MULTIPLE brands and the run isn't bound to one, this returns brand_choice_required with brand_options[] and generates NOTHING. STOP, ask the user which brand, then re-call with brand_id (or brand_id:'none' to draft deliberately unbranded). A single/default brand binds automatically.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| angle_id | Yes | id from niche_angle_propose.angles[].id | |
| brand_id | No | Bind this draft to a brand (its voice/offer/CTA). Usually unnecessary (the run inherits the scan's brand). Pass it to answer a `brand_choice_required` on a multi-brand account, or `'none'` to draft deliberately unbranded. | |
| session_id | Yes | ||
| estimate_only | No | When true, return the per-platform content credit cost without locking the angle or generating. Quote a price before committing. |