---
title: "Test an HTTP action with a real request"
method: POST
path: "/actions/{actionId}/test"
tags: ["Actions"]
---

# Test an HTTP action with a real request

`POST /actions/{actionId}/test`

## Request

- Base URL: `https://platform-api.visitoai.com/m2m/v1`
- URL: `https://platform-api.visitoai.com/m2m/v1/actions/{actionId}/test`
- Auth: HTTP bearer

Requires `actions:http:execute`. This makes a REAL HTTP request to the configured endpoint and can change external data. Only use on an explicit test request. Never retry automatically: a repeated request is a new invocation and may repeat side effects. Preserves existing duplicate protection, receipts and diagnostics; reconcile an uncertain result before a deliberate new invocation. Other families return ACTION_OPERATION_NOT_SUPPORTED. An invocation failure may return HTTP 200 with ok:false. Write-capable tests require confirmExternalEffects=true and the current configurationVersion. Obtain explicit user confirmation for this individual real HTTP request; never infer consent from management scopes or retry automatically. Missing/stale confirmation returns HTTP_TEST_CONFIRMATION_REQUIRED (403) before dispatch. Read-only tests do not require consent. This confirmation requirement also applies to deprecated Tools write tests: older clients must explicitly confirm and send configurationVersion. Explicit new Off mode returns ACTION_INACTIVE (403); historical inactive definitions without an explicit mode retain direct-test eligibility. No test endpoint for Sheets or collection actions; use Playground.

## Path parameters

- `actionId` string, required

## Request body

- ToolTestRequest
  - `input` object
  - `confirmExternalEffects` boolean: Set true only after explicit user confirmation for this real write-capable HTTP test. Read-only tests do not require confirmation.
  - `configurationVersion` string: Exact current configurationVersion from the tool configuration; required for write-capable tests.

## Response `200`

Successful action operation

- ToolTestResponse
  - `ok` boolean, required
  - `output` object
  - `error` ToolInvocationError
    - `code` string, required
    - `message` string, required
    - `retryable` boolean, required
  - `durationMs` integer, required

## Other responses

- `400`: Structured error
- `401`: Structured error
- `403`: Structured error
- `404`: Structured error
- `409`: Structured error
- `503`: Structured error

---

[API](https://skmtc.dev/visitoai/apis/visito-m2m-api.md) - [All operations](https://skmtc.dev/visitoai/apis/visito-m2m-api/llms.txt) - [OpenAPI document](https://skmtc.dev/visitoai/apis/visito-m2m-api/revisions/98377d35c234?raw)
