---
title: "Send a text message to the saved draft (no tools, no phone call)"
method: POST
path: "/v1/agents/{id}/simulate"
---

# Send a text message to the saved draft (no tools, no phone call)

`POST /v1/agents/{id}/simulate`

## Request

- Base URL: `https://volai.cz`
- URL: `https://volai.cz/v1/agents/{id}/simulate`
- Auth: HTTP bearer

Sends a text message against the SAVED draft (not the live agent) and sets the `tested` marker. Free (0 CZK, volai pays), NOT a requirement for publishing, capped at 20 per hour per account, runs on a fixed Anthropic model (the name is never exposed), with NO tools and NO voice (ASR/TTS) - it's a check on the wording of the prompt, not a test of an actual call.

## Path parameters

- `id` string, required

## Request body

- object
  - `expectedRevision` integer, required: Current draft revision from GET /v1/agents/{id}/draft. On revision_conflict reload before retrying; never guess or increment it locally.
  - `message` string, required: Next user message in a text simulation of the saved draft. No phone call or tools are executed.
  - `messages` object[]: Previous conversation turns in alternating user/assistant order; at most 8000 characters in total. Omit for a new conversation.
    - `role` 'user' | 'assistant', required: Speaker of the previous turn: user or assistant.
    - `content` string, required: Text of that previous turn, without tool results or hidden instructions.

## Response `200`

Simulation result

- object
  - `revision` number, required
  - `text` string, required
  - `usage` object, required
    - `inputTokens` number, required
    - `outputTokens` number, required
  - `tested` object, nullable, required
    - `revision` number, required
    - `testedAt` number, required
  - `warnings` object[]: Present only when the saved text (agent configuration, draft or tool description), the call variables, the task name or variables, or the trial call prompt contains wording that may come across as impersonating an authority or another institution, or as a request for sensitive information - code agent_misuse_suspected. It never blocks the request; the field is absent when there is nothing to flag.
    - `code` 'agent_misuse_suspected', required
    - `message` object, required
      - `cs` string, required
      - `en` string, required

## Other responses

- `400`: Error codes: validation (request).
- `401`: Error codes: unauthorized (request).
- `403`: Error codes: account_suspended (account), forbidden (account).
- `404`: Error codes: agent_not_found (account).
- `409`: Error codes: revision_conflict (request), publish_in_progress (busy), operation_uncertain (service).
- `429`: Error codes: rate_limited (busy).
- `500`: Error codes: internal_error (service), storage_failed (service).
- `502`: Error codes: simulation_failed (service).
- `503`: Error codes: simulation_not_configured (service), simulation_unavailable (service).

---

[API](https://skmtc.dev/volai/apis/volai-rest-api.md) · [All operations](https://skmtc.dev/volai/apis/volai-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/volai/apis/volai-rest-api/revisions/12029b05e2fa?raw)
