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

# Criar comunidade

> Cria uma comunidade (parent group), opcionalmente vinculando grupos existentes na mesma chamada

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

## Descrição

Cria uma comunidade (grupo-pai com Grupo de Anúncios automático). Aceita opcionalmente descrição, foto e uma lista de grupos existentes a vincular durante a criação. Cada vinculação tem **delay de 1s** entre chamadas para evitar throttling do servidor WhatsApp.

<Warning>
  Se o servidor WhatsApp rejeitar a criação como parent (`400`), o serviço faz **fallback automático** para grupo regular. A resposta vem com `isCommunity: false` na resposta e um aviso na `message`.
</Warning>

## Exemplos

### Mínimo

Cria a comunidade apenas com o `name` obrigatório ("Comunidade Alpha"), sem descrição, foto nem subgrupos vinculados na chamada.

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://ryzeapi.cloud/api/community/create/$Instance_Name" \
    -H "token: $Token_Instance" \
    -H "Content-Type: application/json" \
    -d '{
      "name": "Comunidade Alpha"
    }'
  ```

  ```javascript JavaScript theme={null}
  await fetch(`https://ryzeapi.cloud/api/community/create/${process.env.Instance_Name}`, {
    method: "POST",
    headers: {
      "token":        process.env.Token_Instance,
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      name: "Comunidade Alpha"
    })
  });
  ```

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

  requests.post(
      f"https://ryzeapi.cloud/api/community/create/{os.environ['Instance_Name']}",
      headers={
          "token":        os.environ["Token_Instance"],
          "Content-Type": "application/json"
      },
      json={
          "name": "Comunidade Alpha"
      }
  )
  ```

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

  import (
      "net/http"
      "os"
      "strings"
  )

  func main() {
      body := strings.NewReader(`{
          "name": "Comunidade Alpha"
      }`)
      req, _ := http.NewRequest("POST", "https://ryzeapi.cloud/api/community/create/"+os.Getenv("Instance_Name"), body)
      req.Header.Set("token", os.Getenv("Token_Instance"))
      req.Header.Set("Content-Type", "application/json")
      http.DefaultClient.Do(req)
  }
  ```
</CodeGroup>

### Com subgrupos

Cria a comunidade "Empresa XYZ" com descrição, foto e já vincula 2 grupos existentes (`groupJid`) como subgrupos, além de definir `membershipApprovalMode: request_required` para que entradas precisem de aprovação.

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://ryzeapi.cloud/api/community/create/$Instance_Name" \
    -H "token: $Token_Instance" \
    -H "Content-Type: application/json" \
    -d '{
      "name": "Empresa XYZ",
      "description": "Comunidade oficial",
      "image": "https://exemplo.com/community.png",
      "groupJid": [
        "120363406289005074@g.us",
        "120363406289005075@g.us"
      ],
      "membershipApprovalMode": "request_required"
    }'
  ```

  ```javascript JavaScript theme={null}
  await fetch(`https://ryzeapi.cloud/api/community/create/${process.env.Instance_Name}`, {
    method: "POST",
    headers: {
      "token":        process.env.Token_Instance,
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      name:        "Empresa XYZ",
      description: "Comunidade oficial",
      image:       "https://exemplo.com/community.png",
      groupJid: [
        "120363406289005074@g.us",
        "120363406289005075@g.us"
      ],
      membershipApprovalMode: "request_required"
    })
  });
  ```

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

  requests.post(
      f"https://ryzeapi.cloud/api/community/create/{os.environ['Instance_Name']}",
      headers={
          "token":        os.environ["Token_Instance"],
          "Content-Type": "application/json"
      },
      json={
          "name":        "Empresa XYZ",
          "description": "Comunidade oficial",
          "image":       "https://exemplo.com/community.png",
          "groupJid": [
              "120363406289005074@g.us",
              "120363406289005075@g.us"
          ],
          "membershipApprovalMode": "request_required"
      }
  )
  ```

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

  import (
      "net/http"
      "os"
      "strings"
  )

  func main() {
      body := strings.NewReader(`{
          "name": "Empresa XYZ",
          "description": "Comunidade oficial",
          "image": "https://exemplo.com/community.png",
          "groupJid": [
              "120363406289005074@g.us",
              "120363406289005075@g.us"
          ],
          "membershipApprovalMode": "request_required"
      }`)
      req, _ := http.NewRequest("POST", "https://ryzeapi.cloud/api/community/create/"+os.Getenv("Instance_Name"), body)
      req.Header.Set("token", os.Getenv("Token_Instance"))
      req.Header.Set("Content-Type", "application/json")
      http.DefaultClient.Do(req)
  }
  ```
</CodeGroup>

## Resposta de sucesso

Devolve a comunidade recém-criada em `group`, onde `group.jid` é o JID da comunidade (use-o como `communityJid` em chamadas subsequentes) e `isCommunity: true` confirma que o WhatsApp aceitou a criação como parent group. Os grupos passados em `groupJid` são processados em ordem e separados em `linkedGroups` (sucesso) e `failedGroups` (falha). Se uma `image` foi enviada mas falhou ao aplicar, o motivo aparece em `imageError` sem abortar a criação.

```json 200 OK theme={null}
{
  "success": true,
  "message": "Community created successfully",
  "linkedGroups": ["120363406289005074@g.us"],
  "failedGroups": [],
  "imageError": "",
  "group": {
    "name": "Comunidade Alpha",
    "jid": "120363406289005073@g.us",
    "description": "Comunidade oficial",
    "inviteCode": "ABC123XYZ",
    "inviteLink": "https://chat.whatsapp.com/ABC123XYZ",
    "createdBy": "5511999999999@s.whatsapp.net",
    "participantCount": 1,
    "participants": [
      { "jid": "5511999999999@s.whatsapp.net", "isAdmin": true, "isSuperAdmin": true }
    ],
    "isCommunity": true,
    "isParent": true
  }
}
```

## Parâmetros de rota

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

## Headers

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

<ParamField header="Content-Type" type="string" required>
  `application/json`
</ParamField>

## Request body

<ParamField body="name" type="string" required>
  Nome da comunidade. Máximo de **25 caracteres**.
</ParamField>

<ParamField body="description" type="string">
  Descrição da comunidade.
</ParamField>

<ParamField body="image" type="string">
  URL ou base64. Convertida para JPEG. Falha de imagem **não** aborta a criação, vem reportada em `imageError`.
</ParamField>

<ParamField body="groupJid" type="string[]">
  Lista de JIDs `@g.us` de grupos existentes a vincular como subgrupos.
</ParamField>

<ParamField body="membershipApprovalMode" type="string">
  `request_required` (subgrupos exigem aprovação por default) ou string vazia (open).
</ParamField>

## Notas

<Note>
  * A comunidade nasce **sem participantes**, membros entram via cada subgrupo.
  * O **Grupo de Anúncios** é criado automaticamente pelo WhatsApp. Você não controla nome / descrição dele aqui, use [`PUT /api/group/update`](/pt/api/groups/update) depois para ajustar.
  * Limite de **50 subgrupos** por comunidade (excedentes caem em `failedGroups`).
  * `imageError` é populado quando a foto falha mas a comunidade é criada normalmente.
  * Fallback silencioso para grupo regular: monitore `isCommunity` no cliente para alertar o usuário.
</Note>

## Erros

| HTTP | Mensagem                                                |
| ---- | ------------------------------------------------------- |
| 400  | `community name is required`                            |
| 400  | `Community name must be 25 characters or less`          |
| 400  | `Instance is not connected to WhatsApp`                 |
| 429  | `rate limit exceeded (429): wait before creating again` |
| 500  | `failed to create community: <reason>`                  |

Envelope:

```json theme={null}
{
  "success": false,
  "error": { "message": "community name is required" }
}
```

## Próximo

<CardGroup cols={2}>
  <Card title="Vincular grupos" icon="link" href="/pt/api/communities/link">
    Adicionar mais subgrupos depois da criação.
  </Card>

  <Card title="Listar subgrupos" icon="list" href="/pt/api/communities/list-subgroups">
    Conferir os grupos atualmente vinculados.
  </Card>
</CardGroup>
