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

# Read an editable action configuration

`GET /actions/{actionId}/configuration`

## Request

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

Requires `action_configurations:read`. Use stable http:<toolId>, custom:<collectionId>, or sheets:<actionId>. Stored credentials are masked; signing secrets are never returned by reads. Legacy HTTP revisions are zero until adoption; managed HTTP updates require the current revision. Integration actions are code-owned and return ACTION_OPERATION_NOT_SUPPORTED.

## Path parameters

- `actionId` string, required

## Response `200`

Successful action operation

- ActionConfigurationResponse
  - `action` union, required
    - object
      - `actionId` string, required
      - `family` 'http', required
      - `revision` integer, nullable, required
      - `supportedOperations` string[], required
      - `state` ActionState, required
        - `active` boolean, required
        - `playgroundOnly` boolean
        - `status` 'draft' | 'published' | 'paused' | 'archived'
        - `allowInPlayground` boolean
        - `mode` 'off' | 'playground' | 'active' | 'legacy_live_only': Computed availability. legacy_live_only preserves existing HTTP live access without Playground access until explicitly changed.
      - `configuration` Tool, required
        - `toolId` string, required
        - `tenantId` string, required
        - `name` string, required
        - `description` string, required
        - `parameters` object, required
        - `endpoint` ToolEndpoint, required
          - `url` string, uri, required
          - `method` 'GET' | 'POST', required
          - `timeoutMs` integer
          - `path` string
        - `auth` object, required
          - `type` 'none' | 'bearer' | 'api_key', required
          - `headerName` string
          - `secretLastFour` string
          - `configured` boolean, required
        - `active` boolean, required
        - `readOnly` boolean, required
        - `allowInPlayground` boolean, required
        - `propertyIds` string[], required
        - `createdAt` string, date-time, required
        - `updatedAt` string, date-time, required
        - `mode` 'off' | 'playground' | 'active' | 'legacy_live_only': Computed availability. legacy_live_only preserves existing HTTP live access without Playground access until explicitly changed.
        - `playgroundOnly` boolean
        - `configurationVersion` string, nullable: Opaque current action and connection configuration token. Confirm this exact value for write-capable tests.
        - `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
        - `revision` integer
        - `version` integer, nullable
        - `runtimeName` string
    - object
      - `actionId` string, required
      - `family` 'collection', required
      - `revision` integer, nullable, required
      - `supportedOperations` string[], required
      - `state` ActionState, required
        - `active` boolean, required
        - `playgroundOnly` boolean
        - `status` 'draft' | 'published' | 'paused' | 'archived'
        - `allowInPlayground` boolean
        - `mode` 'off' | 'playground' | 'active' | 'legacy_live_only': Computed availability. legacy_live_only preserves existing HTTP live access without Playground access until explicitly changed.
      - `configuration` CollectionConfiguration, required
        - `actionId` string, required
        - `revision` integer, required
        - `version` integer, required
        - `status` 'draft' | 'published' | 'paused' | 'archived', required
        - `active` boolean, required
        - `playgroundOnly` boolean, required
        - `draft` CollectionDefinition, required
          - `name` string, required
          - `whenToUse` string, required
          - `fields` ActionField[], required
            - `key` string, required
            - `description` string, required
            - `type` 'text' | 'email' | 'phone' | 'date' | 'number' | 'integer' | 'boolean' | 'single-select' | 'multi-select', required
            - `required` boolean, required
            - `choices` string[]
          - `propertyIds` string[], required
          - `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.
        - `published` CollectionDefinition
          - `name` string, required
          - `whenToUse` string, required
          - `fields` ActionField[], required
            - `key` string, required
            - `description` string, required
            - `type` 'text' | 'email' | 'phone' | 'date' | 'number' | 'integer' | 'boolean' | 'single-select' | 'multi-select', required
            - `required` boolean, required
            - `choices` string[]
          - `propertyIds` string[], required
          - `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.
        - `webhookUrl` string, required
        - `hasBearer` boolean, required
        - `mode` 'off' | 'playground' | 'active': Computed availability. legacy_live_only preserves existing HTTP live access without Playground access until explicitly changed.
        - `connectorId` string
      - `signingSecret` string: One-time secret returned only by a mutation that creates a signing key; never on reads.
    - object
      - `actionId` string, required
      - `family` 'sheets', required
      - `revision` integer, nullable, required
      - `supportedOperations` string[], required
      - `state` ActionState, required
        - `active` boolean, required
        - `playgroundOnly` boolean
        - `status` 'draft' | 'published' | 'paused' | 'archived'
        - `allowInPlayground` boolean
        - `mode` 'off' | 'playground' | 'active' | 'legacy_live_only': Computed availability. legacy_live_only preserves existing HTTP live access without Playground access until explicitly changed.
      - `configuration` SheetsConfiguration, required
        - `actionId` string, required
        - `revision` integer, required
        - `version` integer, required
        - `active` boolean, required
        - `playgroundOnly` boolean, required
        - `definition` union, required
          - LegacySheetsDefinition
            - `name` string, required
            - `whenToUse` string, required
            - `fields` ActionField[], required
              - …
            - `propertyIds` string[], required
            - `production` SheetsTarget, required
              - …
            - `test` SheetsTarget, required
              - …
            - `steps` SheetsStep[], required
              - …
            - `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.
            - `schemaVersion` 1
            - `executionPolicy` 'legacy'
          - SheetsPermissionDefinition
            - `name` string, required
            - `whenToUse` string, required
            - `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.
            - `propertyIds` string[], required
            - `schemaVersion` 2, required
            - `executionPolicy` 'columns'
            - `production` SheetsPermissionTarget, required
              - …
            - `test` SheetsPermissionTarget
              - …
            - `columns` SheetsPermissionColumn[], required
              - …
            - `identifyingColumns` string[], required
            - `recordId` union
              - …
        - `mode` 'off' | 'playground' | 'active': Computed availability. legacy_live_only preserves existing HTTP live access without Playground access until explicitly changed.
        - `operations` object[]
          - `name` string, required
          - `readOnly` boolean, required
          - `inputSchema` object, 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)
