---
title: "Revert GEO Writer task content"
method: POST
path: "/intelligence_tasks/{id}/revert"
tags: ["GEO Writer"]
---

# Revert GEO Writer task content

`POST /intelligence_tasks/{id}/revert`

## Request

- Base URL: `https://api.llmpulse.ai/api/v1`
- URL: `https://api.llmpulse.ai/api/v1/intelligence_tasks/{id}/revert`
- Auth: API key in header `Authorization`

Discards every manual edit on the task and restores the output as it was generated. On a product_listing task, description_html comes back with only p, ul, ol, li, strong, em, h3 and br and no attributes, cleaned like an edit. Returns ERR_INVALID_PARAM when the task has no manual edits. Requires a `read_write` scope API key and, for team members, update permission on GEO Writer.

## Path parameters

- `id` string, required

## Query parameters

- `project_id` integer, required

## Response `200`

Task restored to its generated output

- IntelligenceTask
  - `id` integer
  - `public_id` string
  - `project_id` integer
  - `task_type` string
  - `title` string
  - `status` string
  - `prompt_id` integer, nullable
  - `prompt_text` string, nullable
  - `agentic_mode` boolean
  - `custom_topic` string, nullable
  - `user_instructions` string, nullable
  - `output_language_code` string, nullable
  - `word_count` integer, nullable
  - `result_data` object, nullable: The generated content once status is completed; null before that. A product_listing task returns title, summary, description_html (p, ul, ol, li, strong, em, h3 and br only), faq (question and answer pairs), seo_title, seo_description, image_alts (image_id and alt), changes (field and reason) and labels
  - `error_message` string, nullable
  - `estimated_time` string, nullable
  - `created_at` string, date-time
  - `processed_at` string, date-time, nullable
  - `manually_edited_at` string, date-time, nullable: When the content was last edited by hand; null while the output is as generated
  - `edited_by_user_id` integer, nullable: User behind the last manual edit; null for an unedited task or an edit made from an embedded portal
  - `result_version` string: Concurrency token for content edits: send it back as result_version on PATCH /intelligence_tasks/{id} so an edit composed before a regeneration is refused with ERR_STALE_CONTENT (409). It is "0" until the task first completes, then changes each time a generation or regeneration replaces result_data, never on a manual edit or a revert. Treat it as opaque text
  - `request_id` string

## Other responses

- `403`: API key lacks write permission
- `404`: Resource not found
- `422`: Invalid parameters

## Changes

- **2026-09-10** `4f310b3cc790`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/llmpulse/apis/llm-pulse-api/changes/intelligence_tasks/:id/revert/post.md)

---

[API](https://skmtc.dev/llmpulse/apis/llm-pulse-api.md) - [All operations](https://skmtc.dev/llmpulse/apis/llm-pulse-api/llms.txt) - [OpenAPI document](https://skmtc.dev/llmpulse/apis/llm-pulse-api/revisions/38a31f123641?raw)
