> This is the Markdown version of the page. For the complete Lattice Developers documentation index, fetch https://developer.anduril.com/llms.txt. Append .md to any page URL for its clean Markdown.

# Send manual control frame

POST https://example.developer.anduril.com/api/v1/tasks/{taskId}/manual-control/frames
Content-Type: application/json

Sends a single manual control frame, for example, joystick input, for a manual control task.

Call this endpoint repeatedly to control the asset executing the task. Lattice forwards each
frame to the executing agent, which receives it using the stream manual control frames endpoint.
The task must be in `STATUS_EXECUTING`.

The client manages the control session. When it begins controlling, it generates a
`sessionEpochMicros` and includes it in every request, along with a `sequence` that increases
with each frame. A higher epoch replaces the current session, which allows another operator to
take over control. A lower epoch is rejected as stale.

Reference: https://developer.anduril.com/reference/rest/tasks/send-manual-control-frame

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Request

### Path parameters

- `taskId` (string, required) — The ID of the manual control task to send the frame for.

### Body (application/json)

This endpoint expects a ManualControlFrameRequest.

- `sessionEpochMicros` (string, required) — Unix timestamp in microseconds identifying the control session. The client generates this value when it begins a control session, and includes the same value in every request for that session. Higher values replace previous sessions. Lower values are rejected as stale.
- `sequence` (string, optional) — The sequence number of this frame within the current session. The client must increase it with each frame so that agents can detect out-of-order delivery. Reset it to 1 when starting a new session.
- `specification` (GoogleProtobufAny, optional) — The control instructions for this frame. The format is specific to the task, and is passed through to the agent without being inspected by Lattice.

## Response

### 200

The manual control frame was accepted.

## Errors

### 400 Bad Request Error

Bad request

- `code` (string, required)
- `message` (string, required)

### 401 Unauthorized Error

Unauthorized to access resource

- `code` (string, required)
- `message` (string, required)

### 404 Not Found Error

The specified resource was not found

- `code` (string, required)
- `message` (string, required)

### 409 Conflict Error

The request conflicts with the current state of the resource

- `code` (string, required)
- `message` (string, required)

## Types

### GoogleProtobufAny

Contains an arbitrary serialized message along with a @type that describes the type of the serialized message.

- `@type` (string, optional) — The type of the serialized message.

## Examples

**Request**

```json
{
  "sessionEpochMicros": "string"
}
```

**Response**

```json
{}
```