Platform Platform overview Modules Solutions Industries Commodities Roles Quant More Pricing Customers Knowledge Center Blog Company Request Demo
Knowledge Center · API

Events & webhooks

React to platform activity in real time, no polling, no batch. Meaningful activity emits a signed event; your systems subscribe and respond within seconds.

9 min read · Back to API Reference · Data dictionary

Event-driven by design

Meaningful platform activity, a trade booked, a valuation updated, a settlement completed, emits an event. Subscribers react in real time instead of polling or waiting for a nightly file. This is the external face of the platform’s internal event backbone.

Trade bookedevent logValuationPositionRisk & limitsAnalytics martsseconds,not hours
One booking emits a single event to the log; valuation, position, risk, and analytics each consume it and update within seconds. The trade is referenced, never copied.

The event payload

Events are JSON, versioned, and carry enough to act on without a follow-up call for common cases. Each has a stable type, an id for idempotency, and a data body.

json{
  "id": "evt_01J9Z8...",
  "type": "trade.booked",
  "version": "1",
  "occurredAt": "2026-07-08T09:14:22Z",
  "data": {
    "tradeId": "TR-000184213",
    "book": "GAS-EU",
    "instrument": "TTF-MONTH",
    "quantity": 50000,
    "price": 32.15
  }
}

Webhooks

Register a webhook endpoint to receive events over HTTPS. Payloads are JSON and signed, so you can verify authenticity, and delivery is retried on failure so transient outages do not lose events. Verify the signature before trusting a payload:

pythonimport hmac, hashlib

def verify(request_body: bytes, signature: str, secret: str) -> bool:
    """Verify the HMAC signature on an incoming webhook."""
    expected = hmac.new(secret.encode(), request_body, hashlib.sha256).hexdigest()
    return hmac.compare_digest(expected, signature)   # constant-time compare

# In your handler:
def on_webhook(request):
    if not verify(request.body, request.headers["X-Gravitas-Signature"], SECRET):
        return 401
    event = json.loads(request.body)
    if event["type"] == "trade.booked":
        rerun_risk(event["data"]["book"])             # react in real time
    return 200
At-least-once delivery. a webhook may be delivered more than once (after a retry), so handlers must be idempotent: use the event id to ignore a duplicate rather than acting on it twice.

Common uses

  • Trigger a downstream risk re-run when a trade is booked.
  • Refresh a BI mart incrementally as data changes, instead of a nightly full reload.
  • Notify an external system, treasury, ERP, a data warehouse, on settlement.
  • Drive straight-through processing where one event kicks off the next automated step.

Related

See this on your own trades

A live walkthrough is the fastest way to connect this to your desk.

Request a demo Back to API Reference