> 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 `, 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 {} ```