Produtos sincronizados
Dispara a sincronização completa, lista o espelho dos produtos na Meta e tenta de novo os que falharam.
A plataforma guarda um espelho de cada produto enviado: o retailer_id (identificador do item na Meta), o resultado do último envio e o erro, se houve. Um produto só é reenviado quando seu conteúdo mudou (a plataforma compara uma assinatura do conteúdo). Estas rotas disparam o envio e permitem auditar o resultado.
Sincronização completa
Percorre os produtos ativos e visíveis no WhatsApp e envia os novos ou alterados; itens que deixaram de ser vendáveis são removidos da Meta. A chamada é síncrona e processa no máximo 200 produtos por vez, com pequena pausa entre eles. Catálogos maiores precisam de várias chamadas (ou esperar a sincronização automática). Se a Meta limitar a taxa, o ciclo para e o restante fica pending.
/api/v1/admin/whatsapp/catalog-sync/fullAdminEnvia à Meta os produtos ativos do seller que mudaram
Corpo da requisição
vendor_idstringobrigatórioExemplo de requisição (Sincronização completa)
curl -X POST "$BASE_URL/api/v1/admin/whatsapp/catalog-sync/full" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36"
}'Resposta (Sincronização completa)
{
"pushed": 120,
"skipped": 75,
"failed": 5
}Campos da resposta
pushedintegerskippedintegerfailedintegerErros (Sincronização completa)
| Status | Quando | Corpo |
|---|---|---|
| 400 | Sem vendor_id (a rota exige o seller; usuários vinculados a um seller usam o próprio). | {"error":"vendor_id required"} |
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O módulo WhatsApp Commerce está desligado na loja, o usuário não é administrador ou não tem o privilégio exigido. | {"error":"module_disabled","module":"whatsapp-commerce"} ou {"error":"insufficient privileges","required":"manage_settings"} ou {"error":"admin access required"} |
| 500 | A sincronização não pôde começar (não está ligada, seller sem token...). O corpo traz também os contadores. | {"error":"whatsapp catalog: sync not enabled for vendor","pushed":0,"skipped":0,"failed":0} |
Listar o espelho
Mostra, por produto, o estado do último envio à Meta.
/api/v1/admin/whatsapp/catalog-sync/productsAdminLista os produtos enviados e o resultado de cada envio
Parâmetros de consulta
vendor_idstringobrigatóriostatusstringpendingsuccessfailedremovedremove_failedqstringretailer_id ou do id do produto.pageintegerpadrão: 1per_pageintegerpadrão: 50Exemplo de requisição (Listar o espelho)
curl "$BASE_URL/api/v1/admin/whatsapp/catalog-sync/products?vendor_id=94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36&status=failed" \
-H "Authorization: Bearer $TOKEN"Resposta (Listar o espelho)
{
"rows": [
{
"id": "6e5d4c3b-2a19-4f08-9e7d-6c5b4a392817",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"product_id": "22fbd12a-1b6e-41ea-a84f-4d9cf06c8766",
"retailer_id": "v2-22fbd12a-1b6e-41ea-a84f-4d9cf06c8766",
"meta_product_id": "9988776655",
"last_pushed_at": "2026-10-11T20:01:00Z",
"last_push_status": "failed",
"last_push_error": "meta 400: Invalid image URL",
"created_at": "2026-10-01T12:00:00Z",
"updated_at": "2026-10-11T20:01:00Z",
"product_name": "Camisa do Flamengo Masculina I 26 Adidas"
}
],
"total": 1,
"page": 1,
"per_page": 50
}Campos da resposta
rowsarrayLinhas do espelho.
idstringvendor_idstringproduct_idstringretailer_idstringmeta_product_idstringlast_pushed_atstringlast_push_statusstringpending, success, failed, removed ou remove_failed.last_push_errorstringfailed.product_namestringcreated_atstringupdated_atstringtotalintegerpageintegerper_pageintegerErros (Listar o espelho)
| Status | Quando | Corpo |
|---|---|---|
| 400 | Sem vendor_id (a rota exige o seller; usuários vinculados a um seller usam o próprio). | {"error":"vendor_id required"} |
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O módulo WhatsApp Commerce está desligado na loja, o usuário não é administrador ou não tem o privilégio exigido. | {"error":"module_disabled","module":"whatsapp-commerce"} ou {"error":"insufficient privileges","required":"manage_settings"} ou {"error":"admin access required"} |
Tentar um produto de novo
Reenvia um único produto, normalmente um que ficou failed depois de você corrigir a causa (por exemplo, a imagem). O produto precisa estar entre os 500 primeiros produtos visíveis do seller.
/api/v1/admin/whatsapp/catalog-sync/products/{id}/retryAdminReenvia um produto à Meta
Parâmetros de caminho
idstringobrigatórioCorpo da requisição
vendor_idstringobrigatórioExemplo de requisição (Tentar um produto de novo)
curl -X POST "$BASE_URL/api/v1/admin/whatsapp/catalog-sync/products/22fbd12a-1b6e-41ea-a84f-4d9cf06c8766/retry" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36"
}'Resposta (Tentar um produto de novo)
{
"ok": true
}Campos da resposta
okbooleantrue.Erros (Tentar um produto de novo)
| Status | Quando | Corpo |
|---|---|---|
| 400 | Sem vendor_id (a rota exige o seller; usuários vinculados a um seller usam o próprio). | {"error":"vendor_id required"} |
| 400 | Sincronização desligada, seller sem token, produto fora da lista ou recusa da Meta (a mensagem vem em error). | {"error":"whatsapp catalog: sync not enabled for vendor"} |
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O módulo WhatsApp Commerce está desligado na loja, o usuário não é administrador ou não tem o privilégio exigido. | {"error":"module_disabled","module":"whatsapp-commerce"} ou {"error":"insufficient privileges","required":"manage_settings"} ou {"error":"admin access required"} |