GEO Writer

Create and manage AI-powered GEO Writer tasks. Tasks are processed asynchronously, so create one and poll it until it completes.

POST/intelligence_tasks

Create a GEO Writer task. Two modes: prompt-based (provide prompt_id) or agentic (provide custom_topic and/or user_instructions). The product_listing type takes a product object instead and returns ready-to-apply product page copy.

Body (JSON):
  • project_idrequired
  • task_typerequired: brief, create, update, pr_insights, custom, product_listing
  • prompt_id
  • custom_topic
  • user_instructions
  • output_language_code
  • existing_content
  • existing_content_url

For product_listing only: product (required: title, plus external_id, description_html, seo_title, seo_description, url, product_type and up to 20 images of id and alt) and prompt_ids (up to 20 project prompts to aim the copy at). Its completed result_data carries summary, description_html, faq, seo_title, seo_description, image_alts and changes.

GET/intelligence_tasks

List GEO Writer tasks for a project with optional filtering.

Params:
  • project_idrequired
  • task_type
  • status
  • page
  • per_page

GET/intelligence_tasks/:id

Get full task details including result data when completed. Accepts numeric ID or public_id.

Params:
  • project_idrequired
  • :idtask ID or public_id in URL

PATCH/intelligence_tasks/:id

Edit existing text blocks of a completed task without regenerating it. Each key of edits is a dotted path to a text value of result_data (for example sections.0.content) and only existing text can be changed. A value equal to the stored text is ignored, and the first edit snapshots the AI version so it can be restored.

Body (JSON):
  • project_idrequired
  • :idtask ID or public_id in URL
  • editsrequired, object of dotted path to new text

Requires an API key with write scope.

result_version (optional): send the result_version returned when you read the task. If the task was regenerated since, the edit is refused with ERR_STALE_CONTENT (HTTP 409) and nothing is written: read the task again and resend your edits. Without it, the edits apply to whatever the task holds now.

POST/intelligence_tasks/:id/revert

Discard every manual edit and restore the AI version snapshotted on the first edit. Returns ERR_INVALID_PARAM when the task has no manual edits.

Params:
  • project_idrequired
  • :idtask ID or public_id in URL

Requires an API key with write scope.