---
title: "Read an action definition"
method: GET
path: "/actions/{actionId}"
tags: ["Actions"]
---

# Read an action definition

`GET /actions/{actionId}`

## Request

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

Use for an action's current input schema and configuration availability. Historical captured inputs/results are in get_action_execution; this definition does not reconstruct the configuration at execution time. Requires actions:read. Use the receipt actionId, including custom:, sheets: or http: prefixes. Integration instances share actionId; specify integrationId when ambiguous (409 ACTION_AMBIGUOUS). Returns operation input schemas, including separate Sheets read/write operations. No credentials, destination URLs or internal configuration. This read does not authorize execution. Sheets v2 exposes enabled read/update/create operations; legacy definitions retain read/write.

## Path parameters

- `actionId` string, required

## Query parameters

- `integrationId` string

## Response `200`

Successful read

- ActionDefinitionResponse
  - `action` DiscoveredAction, required
    - `actionId` string, required
    - `integrationId` string, nullable, required
    - `family` 'integration' | 'collection' | 'sheets' | 'http', required
    - `name` object, required
      - `en` string, required
      - `es` string, required
    - `version` integer, nullable, required
    - `availableVersions` integer[], required
    - `provider` string, nullable
    - `propertyIds` string[], required
    - `availability` 'configured' | 'unavailable', required
    - `blockers` string[], required
    - `playgroundOnly` boolean
    - `operations` object[], required
      - `name` string, required
      - `readOnly` boolean
      - `inputSchema` object
    - `scopeMode` 'tenant' | 'businesses': tenant applies throughout this workspace and requires empty propertyIds; businesses uses explicitly selected active business IDs. Omission preserves legacy scope semantics. Scope is not an execution permission.
    - `connectorId` string
    - `connectionId` string, nullable

## 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)
