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, androute=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|1worstart_msplusend_msfor 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.