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

# Remover bot

> Remove um bot do Typebot (com ?botId=) ou todos os bots da instância (sem botId)

**Auth:** `TokenAccount` ou `TokenInstance` • **Rate-limit:** `Global` (100/min) • **Idempotente:** sim

## Descrição

Remove bots do Typebot da instância e re-sincroniza a integração:

* **Com `?botId=`**, apaga **um** bot específico e re-sincroniza os restantes.
* **Sem `botId`**, apaga **todos** os bots da instância e **desconecta a integração** (o vínculo local é removido e a integração é desativada).

Quando o **último** bot é removido (seja pelo delete-all, seja apagando o único bot restante), a integração é desativada e o vínculo local é apagado.

<Warning>
  Chamar este endpoint **sem** `botId` apaga **todos** os bots da instância de uma vez. Use com cuidado, a operação não é reversível.
</Warning>

<Note>
  A re-sincronização da integração é **best-effort**: se ela falhar, o servidor apenas registra um warning e a remoção **continua válida** (as linhas locais já foram apagadas). Por isso este endpoint não expõe erros de sincronização no retorno.
</Note>

## Exemplo

**Remover um bot (`?botId=`):**

<CodeGroup>
  ```bash cURL theme={null}
  curl -X DELETE "https://ryzeapi.cloud/api/typebot/delete/suporte?botId=8f3a1c2e-...-b7d9" \
    -H "token: $Token_Account"
  ```

  ```javascript JavaScript theme={null}
  await fetch("https://ryzeapi.cloud/api/typebot/delete/suporte?botId=8f3a1c2e-...-b7d9", {
    method: "DELETE",
    headers: {
      "token": process.env.Token_Account
    }
  });
  ```

  ```python Python theme={null}
  import os, requests

  requests.delete(
      "https://ryzeapi.cloud/api/typebot/delete/suporte",
      params={"botId": "8f3a1c2e-...-b7d9"},
      headers={"token": os.environ["Token_Account"]}
  )
  ```

  ```go Go theme={null}
  package main

  import (
      "net/http"
      "os"
  )

  func main() {
      req, _ := http.NewRequest("DELETE", "https://ryzeapi.cloud/api/typebot/delete/suporte?botId=8f3a1c2e-...-b7d9", nil)
      req.Header.Set("token", os.Getenv("Token_Account"))
      http.DefaultClient.Do(req)
  }
  ```
</CodeGroup>

**Remover todos os bots:**

<CodeGroup>
  ```bash cURL theme={null}
  curl -X DELETE "https://ryzeapi.cloud/api/typebot/delete/suporte" \
    -H "token: $Token_Account"
  ```

  ```javascript JavaScript theme={null}
  await fetch("https://ryzeapi.cloud/api/typebot/delete/suporte", {
    method: "DELETE",
    headers: {
      "token": process.env.Token_Account
    }
  });
  ```

  ```python Python theme={null}
  import os, requests

  requests.delete(
      "https://ryzeapi.cloud/api/typebot/delete/suporte",
      headers={"token": os.environ["Token_Account"]}
  )
  ```

  ```go Go theme={null}
  package main

  import (
      "net/http"
      "os"
  )

  func main() {
      req, _ := http.NewRequest("DELETE", "https://ryzeapi.cloud/api/typebot/delete/suporte", nil)
      req.Header.Set("token", os.Getenv("Token_Account"))
      http.DefaultClient.Do(req)
  }
  ```
</CodeGroup>

## Resposta de sucesso

```json 200 OK theme={null}
{
  "success": true,
  "message": "typebot bot(s) deleted",
  "meta": {
    "deleted": 1
  }
}
```

| Campo          | Descrição                                                          |
| -------------- | ------------------------------------------------------------------ |
| `success`      | `true` em caso de sucesso.                                         |
| `message`      | Mensagem fixa de confirmação (`typebot bot(s) deleted`).           |
| `meta.deleted` | Quantos bots foram removidos (`1` com `?botId=`; N no delete-all). |

## Parâmetros de rota

<ParamField path="instance" type="string" required>
  Nome da instância (ex.: `suporte`).
</ParamField>

## Query params

<ParamField query="botId" type="string">
  UUID do bot a remover, obtido em [`GET /api/typebot/list/:instance`](/pt/api/typebot/list). **Omitido, apaga todos os bots** da instância e desconecta a integração.
</ParamField>

## Headers

<ParamField header="token" type="string" required>
  `TokenAccount` ou `TokenInstance`.
</ParamField>

## Comportamento

<Steps>
  <Step title="Remove os bots locais">
    Com `?botId=`, apaga a linha correspondente da tabela `typebot_bots` (se não existir, devolve `404`). Sem `botId`, apaga todas as linhas de bots da instância.
  </Step>

  <Step title="Re-sincroniza os bots restantes (timeout 60s)">
    A RyzeAPI recomputa a lista de bots e (re)ativa a integração. Falha aqui é apenas logada como warning, não reverte a remoção.
  </Step>

  <Step title="Desativa se não sobrou nenhum">
    Quando não resta nenhum bot (delete-all, ou remoção do último), a integração é desativada e o vínculo em `typebot_integrations` é apagado.
  </Step>
</Steps>

## Erros

| HTTP | `error.message`                   | Causa                                           |
| :--: | --------------------------------- | ----------------------------------------------- |
|  404 | `instance not found`              | Instância não existe na RyzeAPI.                |
|  404 | `bot not found for this instance` | `?botId=` informado não existe nesta instância. |

## Próximo

<CardGroup cols={2}>
  <Card title="Listar bots" icon="list" href="/pt/api/typebot/list">
    Confira quais bots ainda estão cadastrados na instância.
  </Card>

  <Card title="Cadastrar bot" icon="robot" href="/pt/api/typebot/set">
    Recrie ou adicione um bot com `POST /api/typebot/set/:instance`.
  </Card>
</CardGroup>
