> ## Documentation Index
> Fetch the complete documentation index at: https://docs.visitoai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Manage channel activation and configuration

> Use for explicitly requested activation, property assignments or Instagram story reply/mention policy. Read get_channel first and discover propertyIds with list_properties. Reuses native entitlement, channel type and binding synchronization safeguards and native last-write behavior. It does not accept respondEnabled: use set_channel_response_enabled with the current updatedAt for automatic replies. Read after a timeout before retrying; fields may already be saved. Provider readiness is independent of active. Requires `channels:manage:write`.



## OpenAPI

````yaml /openapi.json patch /channels/{channelId}
openapi: 3.0.3
info:
  title: Visito M2M API
  version: 1.0.0
  description: >-
    Tenant-scoped server-to-server API for channels, conversations, commerce,
    custom AI tools, and WhatsApp templates. Send operations are asynchronous
    and return queued acknowledgements. Expansion adds conversation controls,
    knowledge, sales opportunities, delivery status, reporting, and signed
    webhooks.
servers:
  - url: https://platform-api.visitoai.com/m2m/v1
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Channels
  - name: Conversations
  - name: Commerce
  - name: Custom tools
  - name: WhatsApp templates
  - name: Properties
  - name: Knowledge
  - name: Sales CRM
  - name: Delivery
  - name: Reporting
  - name: Webhooks
paths:
  /channels/{channelId}:
    patch:
      tags:
        - Channels
      summary: Manage channel activation and configuration
      description: >-
        Use for explicitly requested activation, property assignments or
        Instagram story reply/mention policy. Read get_channel first and
        discover propertyIds with list_properties. Reuses native entitlement,
        channel type and binding synchronization safeguards and native
        last-write behavior. It does not accept respondEnabled: use
        set_channel_response_enabled with the current updatedAt for automatic
        replies. Read after a timeout before retrying; fields may already be
        saved. Provider readiness is independent of active. Requires
        `channels:manage:write`.
      operationId: update_channel_configuration
      parameters:
        - name: channelId
          in: path
          required: true
          description: >-
            Stored channel.id from list_channels or get_channel. Provider page,
            phone, account and WABA IDs are not this ID.
          schema:
            type: string
            pattern: ^[a-fA-F0-9]{24}$
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                active:
                  type: boolean
                propertyIds:
                  type: array
                  items:
                    type: string
                    maxLength: 120
                    minLength: 1
                  minItems: 1
                  maxItems: 100
                instagramResponsePolicy:
                  type: object
                  properties:
                    storyMentions:
                      type: boolean
                    storyReplies:
                      type: boolean
                  additionalProperties: false
              additionalProperties: false
      responses:
        '200':
          description: Manage channel activation and configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChannelDetailResponse'
        default:
          $ref: '#/components/responses/Error'
      security:
        - bearerAuth: []
components:
  schemas:
    ChannelDetailResponse:
      type: object
      properties:
        channel:
          $ref: '#/components/schemas/Channel'
      additionalProperties: false
      required:
        - channel
    Channel:
      type: object
      required:
        - id
        - tenantId
        - propertyIds
        - provider
        - type
        - active
        - respondEnabled
        - degraded
        - identifiers
        - createdAt
        - updatedAt
      properties:
        id:
          type: string
        tenantId:
          type: string
        propertyId:
          type: string
        propertyIds:
          type: array
          items:
            type: string
        provider:
          type: string
          enum:
            - meta
            - native
            - tiktok
        type:
          type: string
          enum:
            - whatsapp
            - instagram
            - messenger
            - webchat
            - tiktok
        name:
          type: string
        active:
          type: boolean
        respondEnabled:
          type: boolean
        degraded:
          type: boolean
        identifiers:
          type: object
          properties:
            phoneNumberId:
              type: string
            phoneNumber:
              type: string
            wabaId:
              type: string
            igAccountId:
              type: string
            pageId:
              type: string
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        externalId:
          type: string
        appId:
          type: string
        metaAppKey:
          type: string
        igGraphApi:
          type: string
        waConnectionMode:
          type: string
        waActivationStatus:
          type: string
        tokenStatus:
          type: string
        tokenRefreshErrorCode:
          type: string
        degradedCode:
          type: string
        degradedByService:
          type: string
        expiresAt:
          type: string
          format: date-time
        tokenLastRefreshedAt:
          type: string
          format: date-time
        tokenRefreshErrorAt:
          type: string
          format: date-time
        degradedAt:
          type: string
          format: date-time
        degradedWindowStartedAt:
          type: string
          format: date-time
        degradedLastErrorAt:
          type: string
          format: date-time
        waActivationUpdatedAt:
          type: string
          format: date-time
        degradedSignalCount:
          type: integer
        instagramResponsePolicy:
          type: object
          properties:
            storyMentions:
              type: boolean
            storyReplies:
              type: boolean
          additionalProperties: false
          required:
            - storyMentions
            - storyReplies
      additionalProperties: false
      description: >-
        Saved channel configuration and readiness signals. Active/respondEnabled
        do not prove provider readiness or message delivery. Error codes are
        safe diagnostics; raw provider error text and credentials are omitted.
    ErrorResponse:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
              example: M2M_AUTH_INSUFFICIENT_SCOPE
            message:
              type: string
            details:
              type: object
              additionalProperties: true
      example:
        error:
          code: M2M_AUTH_INSUFFICIENT_SCOPE
          message: M2M credential does not have required scope.
          details:
            requiredScopes:
              - conversations:write
            missingScopes:
              - conversations:write
  responses:
    Error:
      description: Structured error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Visito M2M API key
      description: Server-side tenant-scoped credential created from Build > API Keys.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.