---
title: "Submit a follow-up message for a run"
method: POST
path: "/agent/runs/{runId}/followups"
tags: ["agent"]
---

# Submit a follow-up message for a run

`POST /agent/runs/{runId}/followups`

Send a follow-up message to an existing run. The server transparently
routes the message based on the current state of the run (still
queued, actively running, or ended). A 200 response means the follow-up
was accepted; updated run state can be observed via
`GET /agent/runs/{runId}`.

## Path parameters

- `runId` string, required

## Request body

- RunFollowupRequest — Request body for submitting a follow-up message to an existing run.
  - `message` string — The follow-up message to send to the run.
  - `mode` 'normal' | 'plan' | 'orchestrate' — Query mode for an agent run. - normal: Standard user query (default). - plan: Planning Mode. The agent researches and creates a plan, then waits for approval before execution. - orchestrate: Orchestration Mode. The agent proposes an orchestration plan and must not start child agents until approved.

## Response `200`

Follow-up accepted

- object

## Other responses

- `400` — Invalid request (e.g. no active sandbox without conversation ID, malformed payload). Empty messages are accepted when continuing a run from saved conversation context; otherwise they are rejected.
- `401` — Authentication required
- `403` — No permission to submit follow-ups for this run
- `404` — Run not found
- `500` — Internal server error

---

[API](https://skmtc.net/warp/apis/oz-agent-api.md) · [All operations](https://skmtc.net/warp/apis/oz-agent-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/warp/oz-agent-api/versions/97be876c33e3/schema)
