VenddorDocumentação API
API atualAPI legada
Guia rápidoReferência completa
Carregando índice…
API atual/Referência completa/WhatsApp: moderação de mídia

Decisões em lote

Aprova ou rejeita vários itens da fila de moderação de mídias em uma só chamada.

Quando a fila acumula dezenas de itens, decidir um a um é lento. As rotas de lote aplicam a mesma decisão a até 200 itens por chamada, ou a tudo que casa com um filtro.

Aprovar em lote

Aprova de uma vez os itens listados em ids. Cada item é tratado sozinho: se um falha, os outros continuam e a resposta conta os sucessos e as falhas.

POST/api/v1/admin/whatsapp/media-moderation/bulk-approveAdmin

Aprova vários itens de uma vez

Corpo da requisição

idsarrayobrigatório
Ids (UUID) dos itens a decidir. Obrigatório e não vazio, no máximo 200 por chamada. Dispensável quando você usa filter.
notesstring
Observação gravada em todos os itens. Opcional.
tagsarray
Etiquetas gravadas em todos os itens. Opcional.
filterobject
Alternativa a ids: um critério (por exemplo {"status":"pending","media_type":"image"}). Quando enviado, a chamada passa a ser um lote por filtro, que exige simulação antes (veja a explicação abaixo).
simulateboolean
Só com filter. true não altera nada e devolve o total, uma amostra e um confirm_token.
confirm_tokenstring
Só com filter. O token devolvido pela simulação, para confirmar a execução.

Exemplo de requisição (Aprovar em lote)

bash
curl -X POST "$BASE_URL/api/v1/admin/whatsapp/media-moderation/bulk-approve" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "ids": [
      "3f6c1d2a-8b44-4e0a-9c1e-5d7a2b9f0e11",
      "7a2e9c40-6d15-4b3f-8e22-1c9b0d5f7a33"
    ],
    "notes": "Conferido com o cliente.",
    "tags": [
      "lote"
    ]
  }'

Resposta (Aprovar em lote)

200Lote processado
json
{
  "status": "approved",
  "success_count": 2,
  "failure_count": 0,
  "failure_errors": []
}
200Com falhas parciais
json
{
  "status": "approved",
  "success_count": 1,
  "failure_count": 1,
  "failure_errors": [
    "id=7a2e9c40-6d15-4b3f-8e22-1c9b0d5f7a33: moderation row not found"
  ]
}

Campos da resposta

statusstring
approved
Estado aplicado a todos os itens.
success_countinteger
Quantos itens mudaram de estado.
failure_countinteger
Quantos itens falharam.
failure_errorsarray
Uma frase por falha, no formato id=<uuid>: <motivo>.

Erros (Aprovar em lote)

StatusQuandoCorpo
400Corpo que não é JSON, ids vazio ou ausente, ou mais de 200 ids.{"error":"ids must be a non-empty array"} ou {"error":"bulk operations limited to 200 ids per request"}
401Sem token, token inválido ou expirado.{"error":"missing authorization header"}
403O 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 manage_orders) ou {"error":"admin access required"}
409O confirm_token pertence a outro pedido, ou o recorte cresceu desde a simulação.{"error":"confirm_token_invalid","detail":"..."}
428Lote por filtro sem simulação prévia.{"error":"simulate_required","detail":"..."}
Falha parcial responde 200

Mesmo quando alguns itens falham, o status HTTP é 200. Confira sempre failure_count e failure_errors.

Lote por filtro, em duas etapas

Em vez de listar ids, você pode mandar filter. Nesse modo a plataforma exige um ensaio: primeiro chame a mesma rota com o mesmo corpo e simulate: true; a resposta traz total, uma amostra (sample) e um confirm_token com validade (expires_at). Depois repita a chamada sem simulate, com o confirm_token. Lotes grandes podem responder 202 com async: true e um objeto job. Os campos aceitos em filter para estas rotas são status, media_type, vendor_id, thread_id, auto_classification, confidence_min, confidence_max, created_after e created_before (datas, AAAA-MM-DD).

Rejeitar em lote

Rejeita de uma vez os itens listados em ids, com a mesma regra do lote de aprovação.

POST/api/v1/admin/whatsapp/media-moderation/bulk-rejectAdmin

Rejeita vários itens de uma vez

Corpo da requisição

idsarrayobrigatório
Ids (UUID) dos itens a decidir. Obrigatório e não vazio, no máximo 200 por chamada. Dispensável quando você usa filter.
notesstring
Observação gravada em todos os itens. Opcional.
tagsarray
Etiquetas gravadas em todos os itens. Opcional.
filterobject
Alternativa a ids: um critério (por exemplo {"status":"pending","media_type":"image"}). Quando enviado, a chamada passa a ser um lote por filtro, que exige simulação antes (veja a explicação abaixo).
simulateboolean
Só com filter. true não altera nada e devolve o total, uma amostra e um confirm_token.
confirm_tokenstring
Só com filter. O token devolvido pela simulação, para confirmar a execução.

Exemplo de requisição (Rejeitar em lote)

bash
curl -X POST "$BASE_URL/api/v1/admin/whatsapp/media-moderation/bulk-reject" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "ids": [
      "3f6c1d2a-8b44-4e0a-9c1e-5d7a2b9f0e11",
      "7a2e9c40-6d15-4b3f-8e22-1c9b0d5f7a33"
    ],
    "notes": "Não confere com o pedido.",
    "tags": [
      "lote"
    ]
  }'

Resposta (Rejeitar em lote)

200Lote processado
json
{
  "status": "rejected",
  "success_count": 2,
  "failure_count": 0,
  "failure_errors": []
}
200Com falhas parciais
json
{
  "status": "rejected",
  "success_count": 1,
  "failure_count": 1,
  "failure_errors": [
    "id=7a2e9c40-6d15-4b3f-8e22-1c9b0d5f7a33: moderation row not found"
  ]
}

Campos da resposta

statusstring
rejected
Estado aplicado a todos os itens.
success_countinteger
Quantos itens mudaram de estado.
failure_countinteger
Quantos itens falharam.
failure_errorsarray
Uma frase por falha, no formato id=<uuid>: <motivo>.

Erros (Rejeitar em lote)

StatusQuandoCorpo
400Corpo que não é JSON, ids vazio ou ausente, ou mais de 200 ids.{"error":"ids must be a non-empty array"} ou {"error":"bulk operations limited to 200 ids per request"}
401Sem token, token inválido ou expirado.{"error":"missing authorization header"}
403O 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 manage_orders) ou {"error":"admin access required"}
409O confirm_token pertence a outro pedido, ou o recorte cresceu desde a simulação.{"error":"confirm_token_invalid","detail":"..."}
428Lote por filtro sem simulação prévia.{"error":"simulate_required","detail":"..."}
Mesmas regras do lote de aprovação

Limite de 200 ids, falha parcial com status 200 e o modo por filter com simulação valem aqui também.

Veja também

  • Fila de mídias
  • Decidir um item
Anterior
Decidir um item
Próxima
WhatsApp Platform
Nesta página
  • Aprovar em lote
  • Exemplo de requisição (Aprovar em lote)
  • Resposta (Aprovar em lote)
  • Erros (Aprovar em lote)
  • Rejeitar em lote
  • Exemplo de requisição (Rejeitar em lote)
  • Resposta (Rejeitar em lote)
  • Erros (Rejeitar em lote)
  • Veja também