---
title: "Rewrite a follow-up on a pending email card"
method: POST
path: "/outreach-tasks/{task_id}/thread/{step_id}/edit/"
tags: ["outreach"]
---

# Rewrite a follow-up on a pending email card

`POST /outreach-tasks/{task_id}/thread/{step_id}/edit/`

## Request

- Base URL: `https://api.getoneprofile.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.getoneprofile.ai/outreach-tasks/{task_id}/thread/{step_id}/edit/`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

Change what one follow-up on a pending email card will send, before approving the card. A signed in person's edit is kept as their lesson, like an edit of the card's own email; one through an API key is nobody's, and teaches nothing. The follow-ups after it stay as they are. Answers with the thread as it now stands. 409 once the card is decided: the words a person approved are the words that send.

## Path parameters

- `task_id` string, uuid, required
- `step_id` string, uuid, required

## Request body

- OutreachTaskThreadEditSchema: Rewrite one follow-up on a pending email card. ``subject`` left out keeps the follow-up's own subject; a follow-up that replies in the thread above it has none, and any given to it is ignored.
  - `body` string, required
  - `message_id` string, uuid, nullable: The follow-up's message_id as the card read it: an edit over a follow-up written again since is refused with 409.
  - `subject` string, nullable: A new subject for a follow-up that has its own; leave it out to keep it.

## Response `200`

Successful Response

- OutreachTaskThreadReadSchema: The rest of the thread an email card covers. The emails the agent drafted for the contact after the card's own, in the order they go. One approval covers them all: approving the card approves each to send as written when its turn comes, with no card of its own, and rejecting the card stops the contact. Empty for a LinkedIn task and an email nothing was drafted after.
  - `emails` OutreachTaskThreadEmailSchema[], required
    - `body` string, required: What it will send, as drafted or as a person edited it.
    - `message_id` string, uuid, required: The agent's message holding its words; a new one when it is written again.
    - `step_id` string, uuid, required: The follow-up's step.
    - `subject` string, nullable, required: Its own subject, or null when it replies in the thread above it.
    - `wait_amount` integer, required: How long after the email before it the step waits.
    - `wait_unit` string, required: The unit of that wait: `minutes`, `hours` or `days`.

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `404`: Task not found.
- `409`: The task is no longer in a state this decision applies to.
- `422`: Invalid request made to the API.
- `500`: Internal server error.
- `502`: Bad gateway error.
- `503`: Service unavailable.

---

[API](https://skmtc.dev/getoneprofile/apis/api-reference-oneprofile.md) · [All operations](https://skmtc.dev/getoneprofile/apis/api-reference-oneprofile/llms.txt) · [OpenAPI document](https://skmtc.dev/getoneprofile/apis/api-reference-oneprofile/revisions/4a6bd71e3f02?raw)
