LiveAresGen is live — 65+ models, brand voice, and multilingual content in one workspaceStart free

Webhooks

Subscribe to events. Build on top.

AresGen sends HMAC-signed webhooks for every meaningful event. Retried with exponential backoff, ordered per workspace, and replayable from your dashboard.

10 eventsHMAC SHA-256Retry with backoff

Signing

Verify every request.

Each request includes an Aresgen-Signature and a Aresgen-Timestamp. Recompute the HMAC with your endpoint secret and reject anything that does not match or is older than five minutes.

import { createHmac, timingSafeEqual } from "node:crypto";

export function verify(req: Request, secret: string): boolean {
  const signature = req.headers.get("aresgen-signature") ?? "";
  const timestamp = req.headers.get("aresgen-timestamp") ?? "";
  const body = await req.text();

  const expected = createHmac("sha256", secret)
    .update(`${timestamp}.${body}`)
    .digest("hex");

  const a = Buffer.from(signature, "hex");
  const b = Buffer.from(expected, "hex");
  return a.length === b.length && timingSafeEqual(a, b);
}

Delivery

Retries, ordering, replays.

At-least-once

We deliver every event. Use event.id for idempotency on your side.

Retries

Up to 24 attempts over 72 hours with exponential backoff (10s → 6h).

Ordered per workspace

Events fire in workspace-order; cross-workspace order is not guaranteed.

Replay

Re-deliver any event from the dashboard or POST /v1/webhooks/replay.

Filter by type

Subscribe to one event, a wildcard (e.g. chatbot.*), or all events.

Inspect

Last 30 days of deliveries with status, response code, and payload.

Sample payload

What hits your endpoint.

{
  "id": "evt_01HZ8PJYTM6N9X7QWXAYBVS3J5",
  "type": "workflow.run.completed",
  "created": "2026-05-11T08:14:22.184Z",
  "workspace_id": "ws_main",
  "data": {
    "workflow_id": "wf_publish",
    "run_id": "run_01HZ8PJYTM6N9X7QWXAYBVS3J5",
    "status": "success",
    "duration_ms": 4218,
    "cost_usd": 0.0382
  }
}

Events

10 events
  • Chat
    • chat.message.created

      Payload keys

      thread_id, message_id, role, content, model, voice_id

      A new chat message is created in any thread.

  • Documents
    • document.published

      Payload keys

      document_id, published_at, author, project_id

      A document is marked published or set to public.

  • Brand Voice
    • voice.trained

      Payload keys

      voice_id, sample_word_count, sliders, banned_phrases

      A new brand voice finishes training.

  • Chatbots
    • chatbot.conversation.escalated

      Payload keys

      conversation_id, intent, transcript_url, requested_agent

      A visitor is handed off to a human.

    • chatbot.csat.received

      Payload keys

      conversation_id, score, comment, language

      A visitor rates a chatbot conversation.

  • Workflows
    • workflow.run.completed

      Payload keys

      workflow_id, run_id, status, duration_ms, cost_usd

      A workflow run finishes (success or failure).

    • workflow.run.approval_required

      Payload keys

      workflow_id, run_id, step_id, approval_url

      A workflow blocks on a human-approval gate.

  • Workspace
    • workspace.member.added

      Payload keys

      user_id, email, role, scim_source

      A new user joins the workspace.

    • workspace.member.removed

      Payload keys

      user_id, removed_at, removed_by

      A user is removed from the workspace.

  • Audit
    • audit.policy.violation

      Payload keys

      rule_id, project_id, user_id, blocked_at, reason

      An output is blocked by a brand-voice or compliance rule.

Get started today.

Free for 7 days. No credit card. Bring your team — or just your first prompt.