Generate Content Brief
Workflow contract for generating a data-backed content brief from Cite42 primitives.
Overview
Workflow endpoints run their primitives in parallel and return each primitive's full output, labeled per source. Pricing is calculated from the primitives that ran successfully plus the selected model rates — failed or skipped steps are not charged.
Reference
POST
/v1/workflows/content-brief$0.58 · flat per call
Parameters
topicrequired | string | Topic, keyword, or content idea to brief. |
audienceoptional | string | Optional target audience or ICP. |
brandoptional | string | Optional brand/domain the brief is for. |
goaloptional | string | Optional content goal, e.g. rank, earn citations, convert, educate. |
countryoptional | string | ISO-2 country code for localized SEO keyword data. Default: "us". |
modelsoptional | array of enum (chatgpt | claude | perplexity | gemini | google_ai_overview) | Optional model subset. Omit to query all five AI surfaces (chatgpt, claude, perplexity, gemini, google_ai_overview). Pass ["perplexity"] or ["perplexity","claude"] when the user asks for specific surfaces or wants to reduce cost. |
Request
curl https://api.cite42.dev/v1/workflows/content-brief \
-X POST \
-H "Authorization: Bearer $CITE42_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "topic": "how to optimize content for AI citations", "audience": "SEO agencies" }'Response
{
"status": "workflow_result",
"workflow": "generate_content_brief",
"summary": "Generate a data-backed content brief plan using AI answers, cited sources, SEO keyword demand, trend movement, and audience questions.",
"results": [
{ "endpoint": "/v1/search", "tool": "cite42_search", "ok": true, "why": "...", "data": { "query": "...", "results": [ "…per-model answers with citations…" ] } },
{ "endpoint": "/v1/keywords", "tool": "cite42_keywords", "ok": true, "why": "...", "data": { "keyword": "...", "volume": 4400, "cpc": 6.2, "ideas": [ "…" ] } },
{ "endpoint": "/v1/reddit/trends", "tool": "cite42_reddit_trends", "ok": true, "why": "...", "data": { "risingThreads": [ "…" ], "painPoints": [ "…" ], "repeatedQuestions": [ "…" ] } }
]
}