---
title: "Start External Edit Tool Task"
method: POST
path: "/edit/tools/{tool_id}/tasks"
tags: ["edit"]
---

# Start External Edit Tool Task

`POST /edit/tools/{tool_id}/tasks`

## Request

- Base URL: `https://api.retrodiffusion.ai/v2`
- URL: `https://api.retrodiffusion.ai/v2/edit/tools/{tool_id}/tasks`
- Auth: none declared. Required headers: `X-RD-Token`

Start an edit tool run without holding the connection open.

Takes the same body as POST /edit/tools/{tool_id} and returns 202 with a
task_id; poll GET /edit/tasks/{task_id} for the result. Input and balance
are checked before the job is queued. Reusing a custom_id returns the
original task instead of running (and charging) again.

## Path parameters

- `tool_id` string, required

## Headers

- `X-RD-Token` string, required

## Request body

- ExternalEditToolRunInput: Public /v1 edit-tool input. Snake case is canonical for consistency with /v1/inferences. The pre validator keeps the original camelCase contract working while callers migrate. Internal app-only payloads continue to use EditToolRunInput.
  - `input_image` string, required
  - `prompt` string
  - `seed` integer
  - `mask_image` string
  - `expand_left` integer
  - `expand_right` integer
  - `expand_top` integer
  - `expand_bottom` integer
  - `outpaint_context_left` integer
  - `outpaint_context_top` integer
  - `color_count` integer
  - `dithering` boolean
  - `dither_mode` string
  - `dither_strength` number
  - `input_palette` string
  - `extra_input_image` string
  - `width` integer
  - `height` integer
  - `tile_x` boolean
  - `tile_y` boolean
  - `seam_width` integer
  - `seam_debug_return_raw_output` boolean
  - `seam_debug_return_shifted_output` boolean
  - `repair_window_size` integer
  - `rotation_degrees` number
  - `force_solid_pixels` boolean
  - `soft_inpaint` boolean
  - `transparency_threshold` integer
  - `output_image` string
  - `custom_id` string
  - `scheduled_region_mode` boolean
  - `scheduled_region_quality` string
  - `region_plan` object
  - `scheduled_region_job_id` integer

## Response `202`

Successful Response

- ExternalInferenceTaskAccepted
  - `status` 'accepted', required
  - `task_id` string, required
  - `request_id` string
  - `message` string, required

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `405`: Method not allowed.
- `422`: Validation Error
- `500`: Internal Server Error

---

[API](https://skmtc.dev/retrodiffusion/apis/retrodiffusion-api.md) · [All operations](https://skmtc.dev/retrodiffusion/apis/retrodiffusion-api/llms.txt) · [OpenAPI document](https://skmtc.dev/retrodiffusion/apis/retrodiffusion-api/revisions/9c76250e8e2d?raw)
