Reenviar os eventos desde um momento
Coloca na fila de novo os eventos que cada número guardou desde since, passando pelo filtro atual do webhook. Cada evento volta com o MESMO X-Synergy-Delivery-Id da primeira vez: um receptor que já o processou descarta.
Limites: 30 dias para trás (7 dias para statuses), 5.000 eventos por número por chamada, e o tamanho da fila do número. truncated: true diz que sobrou evento: repita com um since mais recente. O webhook precisa estar ativo.
Requer#
- Escopo da chave
- Gerenciar webhooks
managementComo os escopos funcionam - Recurso do plano
- API e webhooks
apiVer os planos que incluem - Formato
- Próprio do Synergy. Erros em
{ "error": "…" }.
Parâmetros#
No caminho#
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| hook_id | string | obrigatório | O id do webhook. |
Cabeçalhos#
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| Authorization | string | obrigatório | Sua chave de API, no formato Bearer <chave>. Veja Autenticação. |
Corpo#
Tipo de conteúdo: application/json.
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| since | integer | obrigatório | Um momento dos últimos 30 dias, no passado (ms desde 1970). |
Respostas#
| Status | Código | Quando acontece |
|---|---|---|
| 200 | — | Eventos na fila |
| 400 | — | since fora dos últimos 30 dias |
| 401 | — | Chave revogada ou desconhecida |
| 401 | 190 | Chave malformada ou forjada |
| 403 | — | A chave não tem o escopo management |
| 403 | — | O plano da organização não inclui a API |
| 403 | — | A conta está em modo leitura ou suspensa por falta de pagamento |
| 404 | — | Webhook não encontrado |
| 409 | — | Webhook desativado |
| 413 | — | Corpo grande demais |
| 429 | — | Limite de taxa |
Os erros no formato da Meta trazem o código em error.code. Ver todos os erros.
Corpo da resposta 200#
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| ok | true | obrigatório | |
| queued | integer | obrigatório | Eventos colocados na fila, somados entre os números. |
| truncated | boolean | obrigatório | true = algum número tinha mais de 5.000 eventos no período, ou a fila dele encheu: repita com um since mais recente. |
| suspended | integer | obrigatório | Números em que o webhook está suspenso (nada foi reenviado neles). |
| failed | integer | obrigatório | Números que não responderam. |
Limites de taxa#
- Gestão: 30 requisições a cada 60 s por chave (API_MGMT_LIMIT).
Notas#
- Só os eventos que a Meta mandou para o número são reenviados: ecos de mensagens do Inbox,
synergy_conversationse eventos da conta (WABA) não ficam guardados para replay.
curl
curl -X POST 'https://api.synergyconnect.com.br/v1/webhooks/7c1f0c7e-4b53-4c7b-9a51-3f6f0a2d9e10/replay' \
-H "Authorization: Bearer $SYNERGY_API_KEY" \
-H 'Content-Type: application/json' \
-d "{\"since\": $(( ($(date +%s) - 3600) * 1000 ))}"JavaScript
const res = await fetch('https://api.synergyconnect.com.br/v1/webhooks/7c1f0c7e-4b53-4c7b-9a51-3f6f0a2d9e10/replay', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.SYNERGY_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ since: Date.now() - 3_600_000 }),
});
console.log(res.status, await res.json());Python
import os
import time
import requests
res = requests.post(
"https://api.synergyconnect.com.br/v1/webhooks/7c1f0c7e-4b53-4c7b-9a51-3f6f0a2d9e10/replay",
headers={
"Authorization": f"Bearer {os.environ['SYNERGY_API_KEY']}",
},
json={"since": int((time.time() - 3600) * 1000)},
)
print(res.status_code, res.json())200
{
"ok": true,
"queued": 37,
"truncated": false,
"suspended": 0,
"failed": 0
}400
{
"error": "Invalid body",
"issues": [
{
"code": "custom",
"path": [
"since"
],
"message": "escolha um momento dos últimos 30 dias"
}
]
}401
{
"error": "Invalid or revoked key"
}Há 2 casos com este status; veja a tabela de respostas.
403
{
"error": "This key lacks the management scope"
}Há 3 casos com este status; veja a tabela de respostas.
404
{
"error": "Webhook not found"
}409
{
"error": "Enable the webhook before replaying events"
}413
{
"error": "The body is too large (16 KB max)"
}429
{
"error": "Rate limit hit"
}Ficou com dúvida? Escreva para suporte@synergyconnect.com.br.