Fluxo completo
Este exemplo junta as peças da API em um fluxo típico de integração:
Executar o bot
O seu sistema chama POST /v1/run com o nome do bot, os parâmetros e uma webhook_url.
Receber o resultado
Quando a execução termina, o Sinfonia chama a webhook_url com o exec_id e o status.
Buscar o log
Com o exec_id, o seu sistema chama GET /v1/execlog/{id} e guarda o log ou trata o erro.
Disparar a execução
import json
import os
import requests
SINFONIA_API = "https://sinfonia.live/api"
TOKEN = os.environ["SINFONIA_TOKEN"]
def executar_faturamento(mes: str) -> None:
response = requests.post(
f"{SINFONIA_API}/v1/run",
headers={"token": TOKEN},
json={
"bot_name": "bot-faturamento",
"bot_params": json.dumps({"MES": mes}),
"label": f"fat-{mes}",
"webhook_url": "https://meusistema.com/webhooks/sinfonia?key=um-segredo-longo",
},
timeout=30,
)
response.raise_for_status() # 200: execução na fila
executar_faturamento("2026-10")Nota
Repare que bot_params é serializado duas vezes: os parâmetros viram uma string JSON, e essa string vai dentro do corpo da requisição.
Receber o resultado e buscar o log
O receptor do webhook recebe o exec_id, busca o log e decide o que fazer. Veja o código completo em Webhook de retorno.
Tratamento de erros
| Status | O que fazer |
|---|---|
400 | Confira o nome do bot, a versão, o agente e se o corpo é um JSON válido. |
401 | Confira o header token e se o token ainda existe na tela de Tokens. |
429 | Aguarde e tente de novo. O limite é de 5 requisições por segundo por rota. |
5xx | Tente de novo com intervalo crescente entre as tentativas. |
Última modificação em