---
title: "Execute a synthetic test action"
method: POST
path: "/v1/tests/action"
tags: ["agent-testing", "synthetic", "timeline"]
---

# Execute a synthetic test action

`POST /v1/tests/action`

## Request

- Base URL: `https://api.402rates.com`
- URL: `https://api.402rates.com/v1/tests/action`
- Auth: none declared

Execute the selected case's action: synthetic order, retry attempt, page retrieval or result submission. Identical keys and input replay the stored outcome. Calls, effects and simulated credits remain observable. No real payment.

## Headers

- `X-Test-Access-Token` string: Secret short-lived run token. Omitted from reports. MCP client history may retain this argument.

## Request body

- union
  - object: Empty HTTP input returns guidance only; it performs no run operation and requires no run token.
    - `run_id` string: Run identifier from start_agent_test.
    - `task_id` string: Task identifier bound to this run.
    - `action_key` string: Caller-generated UUID. Identical key and payload identify the same synthetic operation.
    - `quantity` integer: Synthetic quantity. The task specifies one unit.
    - `action_type` string: Case action: attempt, get_page or submit_result. Not accepted by the original case.
    - `cursor` string: Partial-result page cursor: first or second.
    - `record_ids` string[]: Synthetic record identifiers submitted by the caller, at most six.
  - object
    - `run_id` string, required: Run identifier from start_agent_test.
    - `task_id` string, required: Task identifier bound to this run.
    - `action_key` string, required: Caller-generated UUID. Identical key and payload identify the same synthetic operation.
    - `quantity` integer: Synthetic quantity. The task specifies one unit.
    - `action_type` string: Case action: attempt, get_page or submit_result. Not accepted by the original case.
    - `cursor` string: Partial-result page cursor: first or second.
    - `record_ids` string[]: Synthetic record identifiers submitted by the caller, at most six.

## Response `200`

Successful response

- object

## Other responses

- `400`: Invalid test input
- `401`: Run token required or invalid
- `405`: POST required
- `409`: Run or action conflict
- `410`: Run no longer available
- `413`: Input exceeds 8192 bytes
- `415`: application/json required
- `429`: Test limit reached
- `502`: Case-specific synthetic failure: unavailable confirmation or failed retry attempt. Inspect the error code and case contract.
- `503`: Test service unavailable

---

[API](https://skmtc.dev/402rates/apis/402rates-com.md) · [All operations](https://skmtc.dev/402rates/apis/402rates-com/llms.txt) · [OpenAPI document](https://skmtc.dev/402rates/apis/402rates-com/revisions/483a9d0a3f0b?raw)
