This article presents possible use cases and corresponding sample flows that you can support. It provides a useful starting point as you plan your implementation.
A site owner wants suggestions for what to blog about next. Your app generates a content plan for the site, waits for it, and then presents the resulting blog post briefs.
Generation takes several minutes and pauses part way through, so this flow polls twice: once while the keywords are researched, and once while the briefs are written.
To generate a content plan and read the results:
contentPlanFlowId. You need it for every step that follows.status is KEYWORD_RESEARCH. Poll every 10 to 15 seconds. If status is PENDING_REQUIREMENTS, tell the site owner to add their business information, because the flow can't continue without it. If status is FAIL or CANCELED, stop polling and tell the site owner that generation didn't complete, because neither status recovers on its own.keywordResearchId from the response, because editing a keyword can move the research to a new ID.success in the response as well as the HTTP status. If success is false, show message to the site owner and stop, because no briefs were generated. Otherwise the call releases the flow and starts generating the briefs.status is SUCCESS. If status is FAIL or CANCELED, stop polling and tell the site owner that generation didn't complete, because neither status recovers on its own.A site owner has already generated a content plan in their site dashboard. Your app shows that plan without generating a new one, which saves the owner several minutes of waiting.
To pick up an existing content plan:
contentPlanFlowId. This returns the site's most recent successful flow. If it returns a not found error, the site has no completed plan, so fall back to triggering one.keywordResearchId from the returned flow to identify the research the plan was built from.A site owner starts a content plan generation and then changes their mind, or your app needs to stop a flow that's waiting on business information the owner won't provide.
Cancellation is permanent, so confirm the owner's intent before you call it.
To cancel a generation:
Last updated: 31 August 2026