Ver grupo

GET /groups/{group_id}

Retorna um grupo com os participantes e as configurações. Sai da cópia que a api guarda (renovada quando fica velha); refresh=true busca no WhatsApp.

Com include, vêm também o link de convite e os pedidos de entrada. Só administrador recebe esses dois: para os demais, eles não vêm.

Para pegar só o link de convite, sem a lista de participantes (mais rápido em grupo grande): GET /groups/{group_id}?participants=false&include=invite_link.

Autenticação

[
  {
    "token": []
  }
]
{
  "token": {
    "name": "token",
    "type": "apiKey",
    "in": "header"
  }
}

Parâmetros

[
  {
    "name": "group_id",
    "in": "path",
    "required": true,
    "schema": {
      "type": "string"
    },
    "description": "O grupo (`<id>@g.us`; o id sem `@g.us` também vale)."
  },
  {
    "name": "participants",
    "in": "query",
    "schema": {
      "type": "boolean"
    },
    "description": "`false` deixa os participantes de fora (padrão `true`)."
  },
  {
    "name": "include",
    "in": "query",
    "schema": {
      "type": "string"
    },
    "description": "Separados por vírgula: `invite_link`, `pending_requests`."
  },
  {
    "name": "refresh",
    "in": "query",
    "schema": {
      "type": "boolean"
    },
    "description": "`true` busca o grupo de novo no WhatsApp. É mais lento e o WhatsApp limita: use só quando os dados parecerem desatualizados."
  }
]

Respostas

{
  "200": {
    "description": "O grupo.",
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/OrkesioGroup"
        },
        "example": {
          "id": "120363028782550019@g.us",
          "name": "Clientes VIP",
          "is_admin": true,
          "is_member": true,
          "description": "Novidades e ofertas.",
          "picture_url": "https://pps.whatsapp.net/v/t61/grupo.jpg",
          "picture_preview_url": "https://pps.whatsapp.net/v/t61/grupo_preview.jpg",
          "owner": {
            "id": "5511888888888@s.whatsapp.net",
            "phone": "5511888888888"
          },
          "created_at": "2026-09-01T12:00:00.000Z",
          "announce": true,
          "locked": true,
          "join_approval": false,
          "member_add_mode": "admin_add",
          "ephemeral_seconds": 0,
          "community": false,
          "participant_count": 2,
          "participants": [
            {
              "id": "5511888888888@s.whatsapp.net",
              "phone": "5511888888888",
              "role": "superadmin"
            },
            {
              "id": "5511999999999@s.whatsapp.net",
              "phone": "5511999999999",
              "lid": "123456789012345@lid",
              "name": "Maria",
              "contact_name": "Maria Souza",
              "role": "member"
            }
          ],
          "invite_link": "https://chat.whatsapp.com/AbCdEf123456"
        }
      }
    }
  },
  "401": {
    "description": "Token inválido ou ausente.",
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/OrkesioError"
        },
        "example": {
          "error": "unauthorized",
          "message": "Token inválido."
        }
      }
    }
  },
  "404": {
    "description": "Grupo não encontrado ou a inbox não participa.",
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/OrkesioError"
        },
        "example": {
          "error": "not_found",
          "message": "Grupo não encontrado."
        }
      }
    }
  },
  "429": {
    "$ref": "#/components/responses/RateLimited"
  },
  "500": {
    "$ref": "#/components/responses/InternalError"
  },
  "501": {
    "$ref": "#/components/responses/CloudUnsupported"
  },
  "503": {
    "description": "`disconnected`: a inbox está desconectada do WhatsApp.",
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/OrkesioError"
        },
        "example": {
          "error": "disconnected",
          "message": "Inbox desconectada do WhatsApp."
        }
      }
    }
  },
  "504": {
    "description": "`unavailable`: o WhatsApp não respondeu a tempo; tente de novo.",
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/OrkesioError"
        },
        "example": {
          "error": "unavailable",
          "message": "O WhatsApp não respondeu a tempo; tente de novo."
        }
      }
    }
  }
}

Estado: Disponível

Compatibilidade de canais

CanalCompatívelObservação
WhatsApp (Web)Sim
WhatsApp (API oficial)NãoA Orkesio não atende os grupos da API oficial.
InstagramNão
MessengerNão
TelegramNão

Eventos que esta rota gera

Nenhum. Esta rota não gera evento no webhook (nem em GET /events): o resultado vem só na resposta.

Antes e depois (uazapi → Orkesio)

Na uazapi: POST /group/info, GET /group/invitelink/{groupJID}.

  • GET com o grupo no caminho (antes groupjid no corpo).
  • getInviteLink/getRequestsParticipants → include=invite_link,pending_requests; force → refresh.
  • O grupo em snake_case, com os participantes e o papel de cada um (role), sem os campos internos do WhatsApp.
  • O link de convite (antes GET /group/invitelink/{groupJID}, em inviteLink) vem com include=invite_link, em invite_link.

#/components/schemas/OrkesioGroup

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Id do grupo (`<id>@g.us`)."
    },
    "name": {
      "type": "string",
      "description": "Nome."
    },
    "name_set_at": {
      "type": "string",
      "format": "date-time",
      "description": "Quando o nome mudou pela última vez. ISO 8601 em UTC com milissegundos."
    },
    "name_set_by": {
      "$ref": "#/components/schemas/OrkesioParticipant",
      "description": "Quem mudou o nome pela última vez."
    },
    "is_admin": {
      "type": "boolean",
      "description": "A inbox é administradora."
    },
    "is_member": {
      "type": "boolean",
      "description": "A inbox ainda participa."
    },
    "can_send": {
      "type": "boolean",
      "description": "Se a inbox pode mandar mensagem no grupo agora: `false` na comunidade e, sem ser admin, no grupo de avisos e no grupo só de admins (`announce`)."
    },
    "description": {
      "type": "string",
      "description": "Descrição."
    },
    "description_set_at": {
      "type": "string",
      "format": "date-time",
      "description": "Quando a descrição mudou pela última vez. ISO 8601 em UTC com milissegundos."
    },
    "description_set_by": {
      "$ref": "#/components/schemas/OrkesioParticipant",
      "description": "Quem mudou a descrição pela última vez."
    },
    "announce": {
      "type": "boolean",
      "description": "Só admins enviam."
    },
    "locked": {
      "type": "boolean",
      "description": "Só admins editam os dados."
    },
    "community": {
      "type": "boolean",
      "description": "É comunidade."
    },
    "picture_url": {
      "type": "string",
      "description": "Foto completa do grupo, quando conhecida."
    },
    "picture_preview_url": {
      "type": "string",
      "description": "Miniatura da foto do grupo, quando conhecida (use nas listas)."
    },
    "owner": {
      "$ref": "#/components/schemas/OrkesioParticipant",
      "description": "Quem criou o grupo."
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "description": "Criação. ISO 8601 em UTC com milissegundos."
    },
    "join_approval": {
      "type": "boolean",
      "description": "Entrada pelo link precisa da aprovação de um administrador."
    },
    "member_add_mode": {
      "type": "string",
      "enum": [
        "admin_add",
        "all_member_add"
      ],
      "description": "Quem adiciona membros: só administradores (`admin_add`) ou todos (`all_member_add`)."
    },
    "ephemeral_seconds": {
      "type": "integer",
      "description": "Mensagens temporárias: duração em segundos (`0` = desligado)."
    },
    "parent_community": {
      "type": "object",
      "description": "A comunidade a que o grupo pertence.",
      "additionalProperties": false,
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Id da comunidade (`<id>@g.us`)."
        },
        "name": {
          "type": "string",
          "description": "Nome da comunidade, quando conhecido."
        },
        "picture_url": {
          "type": "string",
          "description": "Foto completa, quando conhecida."
        },
        "picture_preview_url": {
          "type": "string",
          "description": "Miniatura da foto, quando conhecida (use nas listas)."
        },
        "default_subgroup_id": {
          "type": "string",
          "description": "Id do grupo de avisos da comunidade, quando conhecido."
        }
      }
    },
    "default_subgroup": {
      "type": "boolean",
      "description": "É o grupo de avisos da comunidade."
    },
    "default_subgroup_id": {
      "type": "string",
      "description": "Só na comunidade: id do grupo de avisos dela."
    },
    "participant_count": {
      "type": "integer",
      "description": "Quantos participantes."
    },
    "participants": {
      "type": "array",
      "description": "Os participantes (sem eles com `participants=false`).",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Id no WhatsApp."
          },
          "phone": {
            "type": "string",
            "description": "Telefone (só dígitos), quando conhecido."
          },
          "lid": {
            "type": "string",
            "description": "LID, quando conhecido."
          },
          "username": {
            "type": "string",
            "description": "Nome de usuário (@), quando conhecido."
          },
          "name": {
            "type": "string",
            "description": "Nome do perfil do WhatsApp (push name), quando conhecido."
          },
          "display_name": {
            "type": "string",
            "description": "Nome que o WhatsApp mostra no grupo para quem não tem o número visível, quando conhecido."
          },
          "contact_name": {
            "type": "string",
            "description": "Nome salvo na agenda do aparelho, quando o participante está nela (o mesmo critério do `contact_name` da conversa). Use antes de `name` para mostrar quem é."
          },
          "picture_url": {
            "type": "string",
            "description": "Foto completa do participante, quando conhecida."
          },
          "picture_preview_url": {
            "type": "string",
            "description": "Miniatura da foto do participante, quando conhecida (use nas listas)."
          },
          "role": {
            "type": "string",
            "enum": [
              "member",
              "admin",
              "superadmin"
            ],
            "description": "Papel no grupo (`superadmin` é o dono)."
          }
        }
      }
    },
    "invite_link": {
      "type": "string",
      "description": "Link de convite: só com `include=invite_link`, para administrador."
    },
    "pending_requests": {
      "type": "array",
      "description": "Pedidos de entrada esperando aprovação: só com `include=pending_requests`, para administrador.",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Id no WhatsApp."
          },
          "phone": {
            "type": "string",
            "description": "Telefone (só dígitos), quando conhecido."
          },
          "lid": {
            "type": "string",
            "description": "LID, quando conhecido."
          },
          "name": {
            "type": "string",
            "description": "Nome, quando conhecido."
          },
          "requested_at": {
            "type": "string",
            "format": "date-time",
            "description": "Quando pediu. ISO 8601 em UTC com milissegundos."
          }
        }
      }
    },
    "needs_refresh": {
      "type": "boolean",
      "description": "Só na resposta do `PATCH /groups`: `true` quando ela ainda não mostra tudo o que mudou (a foto nova, que chega na leitura seguinte); `GET /groups/{group_id}?refresh=true` traz. Ausente nas outras rotas."
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "description": "Grupo ou comunidade."
}

#/components/schemas/OrkesioParticipant

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Identificador da pessoa no canal (opaco). No WhatsApp é `<número>@s.whatsapp.net` ou `<BSUID>@bsuid`; em outros canais, o id deles. Não conte com ele ser telefone: use `phone`."
    },
    "phone": {
      "type": "string",
      "description": "Telefone (só dígitos), quando o canal informa."
    },
    "username": {
      "type": "string",
      "description": "Nome de usuário (@), quando o canal informa."
    },
    "lid": {
      "type": "string",
      "description": "**Só WhatsApp.** LID, quando conhecido.",
      "x-only": "whatsapp"
    },
    "name": {
      "type": "string",
      "description": "Nome visível (push name), quando conhecido."
    },
    "picture_url": {
      "type": "string",
      "description": "Foto de perfil, quando conhecida."
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "description": "Pessoa: autor de mensagem, participante de grupo, quem fez uma ação."
}

#/components/schemas/OrkesioError

{
  "type": "object",
  "properties": {
    "error": {
      "type": "string",
      "description": "Código estável do erro, em inglês e `snake_case`. Os de uso geral: `invalid_request` (400): pedido inválido: JSON malformado, campo desconhecido ou valor fora do permitido (o detalhe em `message`; o campo em `field`, quando é um só); `unauthorized` (401): `token` ou `admintoken` ausente ou inválido; `forbidden` (403): o token não pode fazer isso (no servidor de demonstração, por exemplo); `not_admin` (403): o WhatsApp recusou por falta de permissão no grupo ou na newsletter; `account_restricted` (403): o WhatsApp restringiu a conta de iniciar conversas novas (mandar para quem já conversa continua valendo; até quando, em `GET /inbox/limits`); `new_chat_limit` (403): a conta atingiu a cota do WhatsApp de conversas novas neste ciclo (veja `GET /inbox/limits`); os dois também no `error` de `OrkesioMessage` e de `message.status`, e não adianta repetir o envio; `payment_required` (403): na API oficial, a Meta recusou o envio por um problema no pagamento da conta do WhatsApp Business (erro 131042 da Meta); acerte a forma de pagamento no gerenciador da Meta, porque repetir não adianta; também no `error` de `OrkesioMessage` e de `message.status`; `whatsapp_rejected` (400): o WhatsApp recusou a mudança pedida (o campo, em `field`, quando é um só); `not_found` (404): o recurso não existe nesta inbox; `conflict` (409): o recurso já existe ou mudou (id em uso, inbox de outro canal); `inbox_not_paired` (409): a inbox ainda não conectou um número; `payload_too_large` (413): o corpo passou do limite; `canceled` e `expired`: só no `error` de `OrkesioMessage` e de `message.status` (envio cancelado antes de sair, ou que passou do prazo na fila); `rate_limited` (429): muitos pedidos; espere o `Retry-After`; `internal_error` (500): falha inesperada na api; tente de novo; `send_failed` (500): o envio falhou (o motivo em `message`); também no `error` de `OrkesioMessage` e de `message.status`; `unsupported_for_channel` (501): o canal da inbox não atende esta rota ou este tipo de mensagem; `meta_error` (502): a Meta recusou ou não respondeu; `disconnected` (503): a inbox está desconectada (sem sessão do WhatsApp, ou token do canal oficial vencido); `unavailable` (503 ou 504): o WhatsApp não respondeu a tempo, ou algo em andamento impede agora; tente de novo. Cada rota lista os códigos próprios dela (`outside_window`, `number_invalid`, `flow_invalid`...). A lista pode crescer: trate código desconhecido pelo status HTTP."
    },
    "message": {
      "type": "string",
      "description": "Descrição para pessoas (às vezes o texto do WhatsApp ou da Meta). Não compare o texto: use `error`."
    },
    "field": {
      "type": "string",
      "description": "O campo do pedido que causou o erro, quando é um só (por exemplo, o campo que o WhatsApp recusou num `PATCH`)."
    }
  },
  "required": [
    "error",
    "message"
  ],
  "additionalProperties": true,
  "description": "O objeto de erro da Orkesio, o mesmo em todo lugar: o corpo das respostas de erro e o `error` de `OrkesioMessage`, `message.status` e `message.failed`. Algumas rotas juntam campos próprios (`request_id`, `errors`...)."
}

#/components/responses/RateLimited

{
  "description": "`rate_limited`: passou do limite de chamadas desta inbox (ou do admin); espere o tempo do header `Retry-After` e tente de novo.",
  "headers": {
    "Retry-After": {
      "description": "Segundos até poder chamar de novo.",
      "schema": {
        "type": "integer",
        "minimum": 1
      }
    }
  },
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/OrkesioError"
      },
      "example": {
        "error": "rate_limited",
        "message": "Muitas requisições."
      }
    }
  }
}

#/components/responses/InternalError

{
  "description": "`internal_error`: falha inesperada na api (no banco, por exemplo); tente de novo.",
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/OrkesioError"
      },
      "example": {
        "error": "internal_error",
        "message": "Falha inesperada."
      }
    }
  }
}

#/components/responses/CloudUnsupported

{
  "description": "`unsupported_for_channel`: o canal da inbox não atende esta rota (rota só do WhatsApp Web numa inbox oficial, ou rota da API oficial numa inbox do WhatsApp Web). O canal está em `Inbox.channel`.",
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/OrkesioError"
      },
      "example": {
        "error": "unsupported_for_channel",
        "message": "Esta rota não está disponível no canal da inbox."
      }
    }
  }
}

Guias relacionados

Visão geral · O que funciona em cada canal · O que muda da uazapi