Preview Trace

August 3, 2026 ยท View on GitHub

Use case

Returns rule/volume decision traces captured from /routing/evaluate. The route name remains /analytics/preview-trace for transport compatibility even when the UI labels these as decisions.

Authentication

Protected. Send either Authorization: Bearer <jwt_token> or x-api-key: <api_key>. In sandbox, also send x-feature: decision-engine.

For local development, start with:

export BASE_URL=http://localhost:8080
export AUTH_HEADER="Authorization: Bearer <jwt_token>"
export TENANT_HEADER="x-tenant-id: public"
# Sandbox only:
# export BASE_URL=https://sandbox.hyperswitch.io
# export FEATURE_HEADER="x-feature: decision-engine"

Request

  • Method and path: GET /analytics/preview-trace
  • Parameters:
    • x-tenant-id (header, required, string) โ€” see Environment setup.
    • range (query, optional, string)
    • start_ms (query, optional, integer)
    • end_ms (query, optional, integer)
    • page (query, optional, integer)
    • page_size (query, optional, integer)
    • payment_method_type (query, optional, string)
    • payment_method (query, optional, string)
    • card_network (query, optional, string)
    • card_is_in (query, optional, string)
    • currency (query, optional, string)
    • country (query, optional, string)
    • auth_type (query, optional, string)
    • gateway (query, optional, string)
    • payment_id (query, optional, string)
    • request_id (query, optional, string)
    • route (query, optional, string)
    • status (query, optional, string)
    • flow_type (query, optional, string)
    • routing_approach (query, optional, string)
    • exclude_routing_approach (query, optional, string)
    • error_code (query, optional, string)
  • Body: Optional query parameters include range, page, page_size, payment_id, gateway, status, and route=routing_evaluate.

Example

Rule decision traces

curl "$BASE_URL/analytics/preview-trace?range=1d&page=1&page_size=10&route=routing_evaluate" \
  --header "$AUTH_HEADER" \
  --header "$TENANT_HEADER"

Open one decision trace

curl "$BASE_URL/analytics/preview-trace?range=1d&payment_id=volume_decision_001" \
  --header "$AUTH_HEADER" \
  --header "$TENANT_HEADER"

Response

/analytics/preview-trace returns the same envelope as /analytics/payment-audit (a PaymentAuditResponse), scoped to rule/volume preview events (route defaults to routing_evaluate).

{
  "merchant_id": "merchant_demo",
  "range": "1d",
  "payment_id": "volume_decision_001",
  "request_id": null,
  "gateway": null,
  "route": "routing_evaluate",
  "status": null,
  "flow_type": null,
  "routing_approach": null,
  "error_code": null,
  "page": 1,
  "page_size": 12,
  "total_results": 1,
  "total_success": 1,
  "total_failure": 0,
  "results": [
    {
      "lookup_key": "volume_decision_001",
      "payment_id": "volume_decision_001",
      "request_id": null,
      "merchant_id": "merchant_demo",
      "first_seen_ms": 1808624000000,
      "last_seen_ms": 1808624000000,
      "event_count": 1,
      "latest_status": "success",
      "latest_gateway": "stripe",
      "latest_stage": "rule_evaluated",
      "gateways": ["stripe"],
      "routes": ["routing_evaluate"]
    }
  ],
  "timeline": [
    {
      "id": "evt_...",
      "flow_type": "preview",
      "event_stage": "rule_evaluated",
      "route": "routing_evaluate",
      "merchant_id": "merchant_demo",
      "payment_id": "volume_decision_001",
      "request_id": null,
      "global_request_id": null,
      "trace_id": null,
      "payment_method_type": "CARD",
      "payment_method": "CREDIT",
      "gateway": "stripe",
      "routing_approach": null,
      "rule_name": "priority rule",
      "status": "success",
      "error_code": null,
      "error_message": null,
      "score_value": null,
      "sigma_factor": null,
      "average_latency": null,
      "tp99_latency": null,
      "transaction_count": null,
      "details": null,
      "details_json": null,
      "created_at_ms": 1808624000000
    }
  ]
}

Notes

  • Analytics reads are ClickHouse-backed and merchant-scoped by the authenticated context.
  • Use range=15m|1h|12h|1d|1w or start_ms plus end_ms for a custom window.
  • Freshly inserted ClickHouse events can take a short moment to become queryable.
  • This endpoint is used for rule/volume decision inspection, not auth-rate transaction scoring.