---
title: "Preview a revision's RAW response + narrowed field map (no persist)"
method: POST
path: "/v1/tools/{tool_id}/revisions/{revision_id}/test"
tags: ["tools"]
---

# Preview a revision's RAW response + narrowed field map (no persist)

`POST /v1/tools/{tool_id}/revisions/{revision_id}/test`

Run a revision's HTTP config and return the RAW body + a narrowed preview.

Powers the dashboard field-map editor (ENG-631). Unlike ``/execute`` (which
runs the active revision and narrows by its saved map), this runs the given
revision with no narrowing so the raw side is always raw, then computes
``narrowed`` from the effective field map (request override → the revision's
saved ``response_schema`` → none). Verifies the revision belongs to the
caller's org AND to ``tool_id`` (404 otherwise). Persists nothing.

## Path parameters

- `tool_id` string, uuid, required
- `revision_id` string, uuid, required

## Request body

- ToolRevisionTestRequest — Preview a revision's response + narrowing without persisting (ENG-631). Runs the revision's HTTP config and returns the RAW body plus a ``narrowed`` preview. ``response_field_map`` is an optional unsaved selection to preview; when omitted the router falls back to the revision's saved ``response_schema``. Mirrors the integrations ``test-invoke`` surface.
  - `input` object
  - `metadata` object
  - `response_field_map` ResponseFieldSelector — The projection applied to a tool response.
    - `field_mappings` ResponseFieldMapping[]
      - `path` string, required — Dot-path into the response (e.g. 'data.order.id')
      - `alias` string, nullable — Output key name; defaults to the full dot-path

## Response `200`

Successful Response

- ToolRevisionTestResponse — Raw response body + narrowed preview for the dashboard field-map editor. ``body`` is always the RAW upstream response (never narrowed). ``narrowed`` is what the agent would receive after applying the effective field map (request override → saved ``response_schema``); ``None`` when no map applies.
  - `status_code` integer, required
  - `headers` object
  - `body` unknown
  - `narrowed` unknown
  - `success` boolean
  - `error` string, nullable
  - `execution_time_ms` number, nullable
  - `request_url` string, nullable
  - `request_method` string, nullable

## Other responses

- `400` — Bad request
- `401` — Authentication required
- `404` — Resource not found
- `422` — Validation Error

---

[API](https://skmtc.net/oneloop-hq/apis/feather-api.md) · [All operations](https://skmtc.net/oneloop-hq/apis/feather-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/oneloop-hq/feather-api/revisions/5a5597ebb2d6/schema)
