---
title: "Press one named key (Enter, Tab, Escape, arrows, Backspace, Delete, Space)."
method: POST
path: "/v1/profiles/{id}/press-key"
---

# Press one named key (Enter, Tab, Escape, arrows, Backspace, Delete, Space).

`POST /v1/profiles/{id}/press-key`

## Request

- Base URL: `http://127.0.0.1:10108`
- URL: `http://127.0.0.1:10108/v1/profiles/{id}/press-key`
- Auth: HTTP bearer

Presses one named key on the real page, where focus is now; Enter may submit a form. A JS dialog the key opens is answered (dismissed by default).

## Path parameters

- `id` string, required

## Request body

- object
  - `dialog` 'dismiss' | 'accept'
  - `key` 'Enter' | 'Tab' | 'Escape' | 'ArrowDown' | 'ArrowUp' | 'ArrowLeft' | 'ArrowRight' | 'Backspace' | 'Delete' | 'Space', required
  - `prompt_text` string

## Response `200`

Pressed. Any JS dialog the key opened is named in the sentence.

- object
  - `result` string, required

## Other responses

- `400`: The id is not a uuid, or the body is missing a field or has a value out of range.
- `401`: No bearer token, or not a token this app issued. The body is empty: it never says which.
- `403`: Refused by the plan: it no longer includes the local API (checked on every request), or it does not allow this action (profile or schedule limit, parallel runs). A request whose Host header is not loopback is also 403, with an empty body.
- `409`: The profile is not running, its tab is gone, or the page did not answer in time.
- `500`: Veilus failed: storage could not be read or written, or a task panicked. The message says what failed; retrying rarely helps.

---

[API](https://skmtc.dev/veilus/apis/veilus-local-api.md) · [All operations](https://skmtc.dev/veilus/apis/veilus-local-api/llms.txt) · [OpenAPI document](https://skmtc.dev/veilus/apis/veilus-local-api/revisions/67ac3818f9d2?raw)
