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

# Alternar Status do Webhook

> Habilitar ou desabilitar um webhook

## Visão Geral

Alterna o status habilitado/desabilitado de um webhook. Isso é útil para parar temporariamente as notificações de webhook sem excluir a configuração.

## Endpoint

<ParamField path="agent_id" type="string" required>
  UUID do Agente
</ParamField>

<ParamField path="webhook_id" type="string" required>
  UUID do Webhook
</ParamField>

## Requisição

<RequestExample>
  ```bash theme={null}
  curl -X PATCH \
    'https://app.talkover.ai/api/v1/agents/9fbef0b7-8d4e-4a08-9207-66c22155721d/webhooks/9fcafbf2-7593-44d6-8cd7-1b221beba62a/toggle' \
    -H 'Authorization: Bearer YOUR_TOKEN'
  ```

  ```javascript theme={null}
  const response = await fetch('https://app.talkover.ai/api/v1/agents/9fbef0b7-8d4e-4a08-9207-66c22155721d/webhooks/9fcafbf2-7593-44d6-8cd7-1b221beba62a/toggle', {
    method: 'PATCH',
    headers: {
      'Authorization': 'Bearer YOUR_TOKEN'
    }
  });
  const data = await response.json();
  ```

  ```php theme={null}
  <?php

  $client = new \GuzzleHttp\Client();
  $response = $client->patch('https://app.talkover.ai/api/v1/agents/9fbef0b7-8d4e-4a08-9207-66c22155721d/webhooks/9fcafbf2-7593-44d6-8cd7-1b221beba62a/toggle', [
      'headers' => [
          'Authorization' => 'Bearer YOUR_TOKEN',
      ],
  ]);
  $data = json_decode($response->getBody());
  ```
</RequestExample>

## Resposta

<ResponseField name="success" type="boolean">
  Indica se o status do webhook foi alternado com sucesso
</ResponseField>

<ResponseField name="message" type="string">
  Mensagem de status indicando se o webhook foi habilitado ou desabilitado
</ResponseField>

<ResponseField name="data" type="object">
  Objeto do webhook atualizado com novo status habilitado
</ResponseField>

<ResponseField name="data.id" type="string">
  Identificador único do webhook
</ResponseField>

<ResponseField name="data.agent_id" type="string">
  UUID do agente ao qual este webhook pertence
</ResponseField>

<ResponseField name="data.name" type="string">
  Nome do webhook
</ResponseField>

<ResponseField name="data.webhook_url" type="string">
  URL do webhook
</ResponseField>

<ResponseField name="data.events" type="array">
  Array de tipos de eventos configurados
</ResponseField>

<ResponseField name="data.timeout" type="integer">
  Timeout da requisição em segundos
</ResponseField>

<ResponseField name="data.max_retries" type="integer">
  Máximo de tentativas de nova tentativa
</ResponseField>

<ResponseField name="data.enabled" type="boolean">
  Novo status do webhook (alternado do estado anterior)
</ResponseField>

<ResponseField name="data.created_at" type="string">
  Timestamp ISO 8601 quando o webhook foi criado
</ResponseField>

<ResponseField name="data.updated_at" type="string">
  Timestamp ISO 8601 quando o webhook foi atualizado pela última vez
</ResponseField>

<ResponseField name="data.events_count" type="integer">
  Número de eventos configurados para este webhook
</ResponseField>

<ResponseField name="data.status" type="string">
  Status atual do webhook
</ResponseField>

<ResponseExample title="Webhook Habilitado">
  ```json theme={null}
  {
    "success": true,
    "message": "Webhook habilitado",
    "data": {
      "id": "9fcafbf2-7593-44d6-8cd7-1b221beba62a",
      "agent_id": "9fbef0b7-8d4e-4a08-9207-66c22155721d",
      "name": "Meu Webhook",
      "webhook_url": "https://example.com/webhook",
      "events": ["event_phone_call_started", "event_phone_call_ended"],
      "timeout": 30,
      "max_retries": 3,
      "enabled": true,
      "created_at": "2025-09-03T23:19:51.000000Z",
      "updated_at": "2025-09-03T23:50:15.000000Z",
      "events_count": 2,
      "status": "active"
    }
  }
  ```
</ResponseExample>

<ResponseExample title="Webhook Desabilitado">
  ```json theme={null}
  {
    "success": true,
    "message": "Webhook desabilitado",
    "data": {
      "id": "9fcafbf2-7593-44d6-8cd7-1b221beba62a",
      "agent_id": "9fbef0b7-8d4e-4a08-9207-66c22155721d",
      "name": "Meu Webhook",
      "webhook_url": "https://example.com/webhook",
      "events": ["event_phone_call_started", "event_phone_call_ended"],
      "timeout": 30,
      "max_retries": 3,
      "enabled": false,
      "created_at": "2025-09-03T23:19:51.000000Z",
      "updated_at": "2025-09-03T23:50:15.000000Z",
      "events_count": 2,
      "status": "disabled"
    }
  }
  ```
</ResponseExample>

## Respostas de erro

<ResponseExample title="401 Não Autorizado">
  ```json theme={null}
  {
    "message": "Token Bearer ausente"
  }
  ```
</ResponseExample>

<ResponseExample title="404 Não Encontrado">
  ```json theme={null}
  {
    "success": false,
    "message": "Agente não encontrado neste ambiente."
  }
  ```
</ResponseExample>

<ResponseExample title="404 Webhook Não Encontrado">
  ```json theme={null}
  {
    "success": false,
    "message": "Webhook não encontrado."
  }
  ```
</ResponseExample>

## Notas Importantes

* Este endpoint alterna o status atual habilitado/desabilitado do webhook
* Webhooks desabilitados não receberão nenhum evento até serem re-habilitados
* Operações de webhook limpam automaticamente o cache do agente para efeito imediato
* Use este endpoint para gerenciamento temporário de webhook sem perder a configuração

## Endpoints relacionados

* [Listar Webhooks do Agente](/api-reference/endpoints/list-agent-webhooks) - Obter todos os webhooks de um agente
* [Criar Webhook](/api-reference/endpoints/create-webhook) - Configurar um novo webhook
* [Obter Detalhes do Webhook](/api-reference/endpoints/get-webhook-details) - Recuperar informações específicas do webhook
* [Atualizar Webhook](/api-reference/endpoints/update-webhook) - Modificar configuração do webhook
* [Excluir Webhook](/api-reference/endpoints/delete-webhook) - Remover configuração do webhook
* [Testar Webhook](/api-reference/endpoints/test-webhook) - Enviar payload de teste para verificar conectividade
