Qual é a diferença entre /biz/* e /business/*?

Os prefixos representam grupos de operações diferentes. /biz/mobile/* reúne atualizações móveis de endereço, categorias, capa, descrição, e-mail, horários, ofertas, sites e campos incrementais do perfil. Já /business/* oferece consultas e atualizações gerais de perfil, recursos, nome verificado e catálogo.

Rota O que faz
POST /biz/profile/fields Atualiza campos do perfil com um mapa de strings.
POST /biz/mobile/address Atualiza endereço e coordenadas no perfil Mobile.
POST /biz/mobile/categories Atualiza as categorias do perfil Mobile.
POST /biz/mobile/description, /biz/mobile/email Atualiza descrição ou e-mail Mobile.
POST /biz/mobile/hours Atualiza fuso horário e horários de funcionamento Mobile.
POST /biz/mobile/offerings, /biz/mobile/websites Atualiza ofertas ou sites do perfil Mobile.
POST /biz/mobile/cover e DELETE /biz/mobile/cover Define ou remove a capa do perfil Mobile.
POST /business/get/profile Consulta o perfil comercial.
POST /business/update/profile Atualiza campos gerais do perfil conectado.
/business/get/categories Consulta categorias comerciais.
/business/get/features, /business/get/privacy Consulta recursos e privacidade comerciais.
POST /business/catalog/product, GET /business/catalog/products Cria produto no catálogo local ou lista produtos.
POST /business/catalog/list, /business/catalog/info Consulta catálogo conectado e informações de um item.

Todas as rotas desta tabela usam autenticação da instância: header token, query ?token=, Authorization: Bearer ou campo JSON token. O ID da instância não substitui o token. Os exemplos a seguir usam o header token.

Quais operações funcionam em Mobile e Companion?

O modo da instância é decisivo para as rotas móveis. Os handlers /biz/mobile/* que chamam o serviço LibGapsMobile exigem instância Mobile. Em Companion, essas operações respondem como não suportadas. Portanto, antes de desenhar um fluxo de atualização, identifique o modo conectado da instância.

As operações comuns do perfil em /business/update/profile selecionam o cliente do modo conectado, Mobile ou Companion. A rota de capa também escolhe uma bridge conforme o modo. Em contrapartida, /business/get/verified_name é Mobile-only. Isso não significa que todas as funções estejam disponíveis em ambos os modos: use a rota e o modo correspondentes à operação planejada.

O modo Mobile registra a conta pelo número e conecta pelo socket mobile do WhatsApp, sem celular, emulador ou aplicativo. O modo Companion vincula um dispositivo como WhatsApp Web. Veja a explicação sobre modo Mobile sem celular para entender essa escolha antes de organizar o cadastro comercial.

Como atualizar o perfil comercial?

POST /business/update/profile aceita campos como descrição, endereço, e-mail, site, lista de sites, categorias, fuso horário, horários e coordenadas. Nenhum deles é obrigatório isoladamente. Um exemplo de atualização de descrição e site é:

curl -X POST 'https://SEU-DOMINIO/business/update/profile' \
  -H 'Content-Type: application/json' \
  -H 'token: SEU_TOKEN' \
  -d '{"description":"Atendimento de segunda a sexta","website":"https://empresa.example"}'

O campo singular website também é acrescentado a websites. Para e-mail, um valor vazio limpa o campo; quando o campo fica ausente, o valor anterior é preservado. A lista websites pode ser enviada vazia para limpá-la. Horários são enviados junto com o fuso horário, e coordenadas entram junto com o endereço. A resposta traz os resultados em response, updated e failed, o que permite tratar os itens processados e as falhas no cliente.

As atualizações móveis usam rotas separadas. Por exemplo, /biz/mobile/description recebe uma string de descrição e /biz/mobile/email uma string de e-mail. Para categorias, o corpo aceita category_ids como lista de strings ou seu alias categories; para horário, informe timezone e business_hours, uma lista com dia da semana, modo, horário de abertura e fechamento. Não há enums nem limites de tamanho publicados nos handlers consultados para esses campos.

Como administrar produtos e catálogos?

A API distingue operações do catálogo local e do catálogo conectado. Para criar um produto local, POST /business/catalog/product exige product_id e title. Descrição, moeda, identificador de varejo, URL, imagem, JID do proprietário, valor em milésimos e quantidade de imagens são opcionais. Um exemplo mínimo válido:

curl -X POST 'https://SEU-DOMINIO/business/catalog/product' \
  -H 'Content-Type: application/json' \
  -H 'token: SEU_TOKEN' \
  -d '{"product_id":"produto-001","title":"Café em grãos"}'

GET /business/catalog/products lista produtos locais sem corpo JSON. Para consultar o catálogo conectado, /business/catalog/list exige jid e aceita after como cursor opcional. /business/catalog/info exige jid e id; remover, mostrar ou ocultar um item conectado usa o id exigido pela respectiva operação. A rota local de exclusão recebe o identificador no caminho em DELETE /business/catalog/product/{id}.

Essas rotas descrevem operações de leitura e gerenciamento, mas não definem conteúdo de catálogo, revisão comercial ou sincronização com sistemas externos. Organize os identificadores do seu catálogo antes de enviar mudanças, e mantenha no seu próprio fluxo a relação entre produto e cadastro interno.

Para relacionar perfil comercial e comunicação, veja também grupos, comunidades, canais e status e API WhatsApp híbrida oficial e não oficial. A escolha entre Mobile e Companion afeta as rotas que seu processo pode chamar.

Quando não escolher a GoZAP

Não escolha a GoZAP se sua integração depende de chamadas /biz/mobile/* em uma instância Companion ou exige o gerenciamento de catálogo por uma rota que não aparece entre as operações descritas. A GoZAP conecta por Web ou Mobile, e ambos os modos ficam fora da API oficial da Meta. Nesse caso, o modo ou o contrato disponível pode não corresponder ao fluxo que você precisa.