Skip to content

Analyzer

The Analyzer API provides access to simulation output data that is used by the SESAM Analyzer. The endpoints described here are intended for retrieving result data of an existing simulation run or a simulation-level overview.

Most endpoints require the simulation_run_id of a simulation run that belongs to the current user. The simulation runs overview endpoints require the simulation_id instead. Simulation runs can be retrieved through the workspace simulation endpoints.

Note

Some analyzer datasets are only available when the corresponding output was enabled for the simulation. For example, trip data requires tripinfo output and FCD (Floating Car Data) playback data requires geo FCD output.

Scenario Data

These endpoints describe the underlying scenario rather than the result of a specific run. They are addressed by a simulation_run_id, but the data is the same for every run of the simulation.

Network

The analyzer/ds/network/{simulation_run_id} endpoint returns the detailed road-network GeoJSON for the simulation that owns the given simulation run. The response is a GeoJSON FeatureCollection and contains the network representation used by the Analyzer map.

HTTP Example
GET https://sesam.co4e.com/api/v1/analyzer/ds/network/42
Response Example
{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [13.370386, 52.511029],
            [13.37, 52.510971],
            [13.370011, 52.510943],
            [13.370397, 52.511001],
            [13.370386, 52.511029]
          ]
        ]
      },
      "properties": {
        "element": "edge",
        "id": "-1121496496",
        "name": "Tiergartenstra\u00dfe",
        "fromNode": "3102417660",
        "toNode": "3342452759",
        "numLanes": 1,
        "maxSpeed": 13.89,
        "allow": ["bicycle", "bus", "delivery", "passenger", "taxi"]
      }
    },
    {
      "type": "Feature",
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [13.37066, 52.508207],
            [13.370594, 52.508247],
            [13.37056, 52.508227],
            [13.370626, 52.508187],
            [13.37066, 52.508207]
          ]
        ]
      },
      "properties": {
        "element": "lane",
        "id": "-1096467527_0",
        "index": 0,
        "maxSpeed": 5.56,
        "width": 3.2,
        "allow": ["bicycle", "delivery", "pedestrian"],
        "outgoingLanes": ["-1210306380#1_0", "1096467527_0", "419410233#0_0"],
        "centerLine": {
          "type": "LineString",
          "coordinates": [
            [13.370643, 52.508197],
            [13.370577, 52.508237]
          ]
        }
      }
    },
    {
      "type": "Feature",
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [13.370691, 52.508207],
            [13.370759, 52.508167],
            [13.370678, 52.508098],
            [13.370585, 52.50814],
            [13.37066, 52.508207],
            [13.370691, 52.508207]
          ]
        ]
      },
      "properties": {
        "element": "junction",
        "id": "4194795025"
      }
    },
    {
      "type": "Feature",
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [13.383545, 52.511338],
            [13.383537, 52.511337],
            [13.383538, 52.511335],
            [13.383546, 52.511337],
            [13.383545, 52.511338]
          ]
        ]
      },
      "properties": {
        "element": "tls_connection",
        "id": "cluster_25661372_3073854003_3073854015_4605644857_#1more_0",
        "tls": "cluster_25661372_3073854003_3073854015_4605644857_#1more",
        "tlIndex": 0
      }
    }
  ]
}

Vehicle Types

The analyzer/ds/vtypes/{simulation_run_id} endpoint returns SUMO vehicle type definitions for a simulation run as JSON. The Analyzer uses this data for vehicle classes, dimensions, and rendering metadata. SESAM extracts the available vehicle types from the running SUMO simulation and stores them with the simulation results.

HTTP Example
GET https://sesam.co4e.com/api/v1/analyzer/ds/vtypes/42
Response Example
{
  "DEFAULT_BIKETYPE": {
    "accel": 1.2,
    "decel": 3.0,
    "height": 1.7,
    "width": 0.65,
    "length": 1.6,
    "max_speed": 13.88888888888889,
    "min_gap": 0.5,
    "tau": 1.0,
    "vehicle_class": "bicycle"
  },
  "DEFAULT_VEHTYPE": {
    "accel": 2.6,
    "decel": 4.5,
    "height": 1.5,
    "width": 1.8,
    "length": 5.0,
    "max_speed": 55.55555555555556,
    "min_gap": 2.5,
    "tau": 1.0,
    "vehicle_class": "passenger"
  },
  "bus_bus": {
    "accel": 1.2,
    "decel": 4.0,
    "height": 3.4,
    "width": 2.5,
    "length": 12.0,
    "max_speed": 27.77777777777778,
    "min_gap": 2.5,
    "tau": 1.0,
    "vehicle_class": "bus"
  },
  "rail_urban_rail_urban": {
    "accel": 1.0,
    "decel": 3.0,
    "height": 3.6,
    "width": 3.0,
    "length": 109.5,
    "max_speed": 27.77777777777778,
    "min_gap": 5.0,
    "tau": 1.0,
    "vehicle_class": "rail_urban"
  },
  "truck_truck": {
    "accel": 1.3,
    "decel": 4.0,
    "height": 2.4,
    "width": 2.4,
    "length": 7.1,
    "max_speed": 36.11111111111111,
    "min_gap": 2.5,
    "tau": 1.0,
    "vehicle_class": "truck"
  }
}

Simulation Runs Overview

The simulation runs overview aggregates the results of all successful runs of a simulation into a single set of artifacts. Unlike the other analyzer endpoints, the overview endpoints are addressed by the simulation_id of the simulation (not a single simulation_run_id), because they describe the simulation as a whole. The simulation_id can be retrieved through the workspace simulation endpoints.

Note

An overview is only built when a simulation has at least two successful simulation runs. For simulations with fewer than two successful runs, the overview endpoints return 404.

Each numeric metric is aggregated across the runs into three columns: <metric> (mean across the runs), <metric>_stddev (standard deviation across the runs, 0.0 for a single sample), and <metric>_count (number of runs that contained a value for that element). Elements that are missing from a run simply do not contribute, so <metric>_count reflects how many runs actually had the value.

Overview Metadata

The analyzer/ds/overview/{simulation_id} endpoint returns the database metadata of the simulation runs overview as JSON. Use this endpoint when accessing overview results through the backend API without loading the Analyzer frontend.

The response includes the overview analysis id, lifecycle state, aggregated simulation run ids, and global database-backed metrics. Each metric under metrics contains sample_count, mean, and stddev.

HTTP Example
GET https://sesam.co4e.com/api/v1/analyzer/ds/overview/42
Response Example
{
  "id": 17,
  "analysis_type": "simulation_runs_overview",
  "name": "Overview of Morning Peak",
  "comment": "",
  "task_state": "SUCCESS",
  "created": "2026-06-11T10:15:30.123456+00:00",
  "simulation_id": 42,
  "simulation_name": "Morning Peak",
  "simulation_run_count": 3,
  "simulation_run_ids": [101, 102, 103],
  "metrics": {
    "vehicle_trip_statistics_route_length": {
      "metric_key": "vehicle_trip_statistics_route_length",
      "sample_count": 3,
      "mean": 1284.25,
      "stddev": 42.7
    }
  }
}

Overview Edge Data

The analyzer/ds/overview-edges/{simulation_id} endpoint streams the aggregated edge data of the simulation runs overview as a Parquet file. The response uses the content type application/vnd.apache.parquet and supports byte-range requests. There is one row per edge id, aggregated across all successful runs; streetname is carried over from the runs. The underlying per-run values are based on SUMO lane-/edge-based traffic measures; see the SUMO Lane- or Edge-based Traffic Measures documentation for the meaning of the metrics. Use a Parquet-capable client library such as PyArrow, pandas, DuckDB, or hyparquet to read the response.

HTTP Example
GET https://sesam.co4e.com/api/v1/analyzer/ds/overview-edges/42
Parquet Schema
id: large_string
streetname: large_string
traveltime: double
traveltime_stddev: double
traveltime_count: uint32
density: double
density_stddev: double
density_count: uint32
occupancy: double
occupancy_stddev: double
occupancy_count: uint32
time_loss: double
time_loss_stddev: double
time_loss_count: uint32
speed: double
speed_stddev: double
speed_count: uint32
speed_relative: double
speed_relative_stddev: double
speed_relative_count: uint32
entered: double
entered_stddev: double
entered_count: uint32
left: double
left_stddev: double
left_count: uint32
avg_traffic_volume: double
avg_traffic_volume_stddev: double
avg_traffic_volume_count: uint32

Overview Trips Data

The analyzer/ds/overview-trips/{simulation_id} endpoint streams the aggregated trips data of the simulation runs overview as a Parquet file. The response uses the content type application/vnd.apache.parquet and supports byte-range requests. There is one row per trip id, aggregated across all successful runs; trip_kind, vtype, and vclass are carried over from the runs. This data is available only when tripinfo output was enabled for the simulation. The underlying per-run values are derived from SUMO tripinfo output; see the SUMO TripInfo output documentation for the meaning of the trip fields. As with the per-run Trips Data, all time values are in seconds, route_length is in meters, depart_speed / arrival_speed are in m/s, and speed_factor is dimensionless. Use a Parquet-capable client library such as PyArrow, pandas, DuckDB, or hyparquet to read the response.

HTTP Example
GET https://sesam.co4e.com/api/v1/analyzer/ds/overview-trips/42
Parquet Schema
id: large_string
trip_kind: large_string
vtype: large_string
vclass: large_string
depart: double
depart_stddev: double
depart_count: uint32
arrival: double
arrival_stddev: double
arrival_count: uint32
duration: double
duration_stddev: double
duration_count: uint32
route_length: double
route_length_stddev: double
route_length_count: uint32
time_loss: double
time_loss_stddev: double
time_loss_count: uint32
waiting_time: double
waiting_time_stddev: double
waiting_time_count: uint32
depart_speed: double
depart_speed_stddev: double
depart_speed_count: uint32
arrival_speed: double
arrival_speed_stddev: double
arrival_speed_count: uint32
speed_factor: double
speed_factor_stddev: double
speed_factor_count: uint32

Overview Trip Info

The analyzer/ds/overview-tinfos/{simulation_id} endpoint returns pooled trip histogram data of the simulation runs overview as JSON. This data is used for the Analyzer trip statistics chart in the overview. In contrast to the per-trip aggregation of the other overview artifacts, the histograms pool every (trip, run) value into one distribution, so the real run-to-run spread of the trip outcomes is preserved.

The response shape matches the per-run Trip Info endpoint: one histogram per metric under metrics (duration, route_length, time_loss, waiting_time), each with an all histogram and optional by_trip_kind and by_vclass breakdowns, where every histogram contains bins (bin edges) and counts (count per bin, length len(bins) - 1). In addition to num_trips, available_trip_kinds, and available_vclasses, the top-level meta object reports num_runs (the number of pooled runs).

This endpoint is available only when tripinfo output was generated for the simulation; if the histograms were not produced, the response is an empty JSON object.

HTTP Example
GET https://sesam.co4e.com/api/v1/analyzer/ds/overview-tinfos/42

Single Run Data

These endpoints return the result data of a single simulation run and are addressed by its simulation_run_id.

Edge Data

The analyzer/ds/edges/{simulation_run_id} endpoint returns aggregated edge result data for a simulation run as JSON. This data is used for the Analyzer edge table and analysis map. The values are based on SUMO lane-/edge-based traffic measures; see the SUMO Lane- or Edge-based Traffic Measures documentation for the meaning of the underlying output fields.

If the optional edge data file is not available, the endpoint returns an empty JSON object.

HTTP Example
GET https://sesam.co4e.com/api/v1/analyzer/ds/edges/42
Response Example
[
  {
    "id": "-1046171603",
    "streetname": "",
    "traveltime": 5.12,
    "density": 0.0,
    "occupancy": 0.0,
    "time_loss": 0.0,
    "speed": 5.56,
    "speed_relative": 1.0,
    "entered": 0,
    "left": 0,
    "avg_traffic_volume": 0.0
  },
  {
    "id": "-1056820803#0",
    "streetname": "",
    "traveltime": 0.04,
    "density": 0.53,
    "occupancy": 0.08,
    "time_loss": 0.07,
    "speed": 3.2,
    "speed_relative": 0.58,
    "entered": 1,
    "left": 1,
    "avg_traffic_volume": 6.105600000000001
  },
  {
    "id": "-1096467527",
    "streetname": "",
    "traveltime": 1.65,
    "density": 1.5,
    "occupancy": 0.26,
    "time_loss": 2.27,
    "speed": 3.95,
    "speed_relative": 0.71,
    "entered": 2,
    "left": 4,
    "avg_traffic_volume": 21.330000000000002
  },
  {
    "id": "-1121496496",
    "streetname": "Tiergartenstra\u00dfe",
    "traveltime": 2.39,
    "density": 1.91,
    "occupancy": 1.21,
    "time_loss": 4.43,
    "speed": 11.51,
    "speed_relative": 0.83,
    "entered": 12,
    "left": 13,
    "avg_traffic_volume": 79.14276
  }
]

Trips Data

The analyzer/ds/trips/{simulation_run_id} endpoint streams normalized trip output for a simulation run as a Parquet file. This data is available only when tripinfo output was generated for the simulation. The response combines vehicle trips and person trips into a single dataset and includes both completed and uncompleted trips. Uncompleted trips (entities that were still in transit when the simulation ended) can be identified by arrival being null. For those trips the metrics duration, route_length, time_loss, and waiting_time contain the partial values accumulated up to the simulation cutoff, not the values of a finished trip. Use a Parquet-capable client library such as PyArrow, pandas, DuckDB, or hyparquet to read the response. The Parquet file is derived from SUMO tripinfo output; see the SUMO TripInfo output documentation for the meaning of the underlying trip fields.

All time values (depart, arrival, duration, time_loss, waiting_time) are in seconds of simulation time, route_length is in meters, and depart_speed / arrival_speed are in m/s. speed_factor is dimensionless. trip_kind is either vehicle or person.

HTTP Example
GET https://sesam.co4e.com/api/v1/analyzer/ds/trips/42
Parquet Schema
id: large_string
trip_kind: large_string
vtype: large_string
vclass: large_string
depart: double
arrival: double
duration: double
route_length: double
time_loss: double
waiting_time: double
depart_speed: double
arrival_speed: double
speed_factor: double
Example Rows
1
2
3
4
id           trip_kind  vtype                  vclass      depart  arrival  duration  route_length  time_loss  waiting_time  depart_speed  arrival_speed  speed_factor
rail_urban0  vehicle    rail_urban_rail_urban  rail_urban     0.0     54.0      54.0        367.94       0.00           0.0          6.94           6.94          1.00
motorcycle2  vehicle    motorcycle_motorcycle  motorcycle     5.0     55.0      50.0        344.98      10.40           0.0          7.97           6.22          0.96
bike4        vehicle    bike_bicycle           bicycle        9.0     57.0      48.0        259.60       3.63           0.0          5.92           5.64          1.07

Trip Info

The analyzer/ds/tinfos/{simulation_run_id} endpoint returns precomputed trip histogram data as JSON. This data is used for the Analyzer trip statistics chart. The histograms are computed from completed trips only and cover both vehicle trips and person trips. Trips that did not finish within the simulation are not included.

The response contains one histogram per metric under metrics. The available metrics are duration (seconds), route_length (meters), time_loss (seconds), and waiting_time (seconds). Each metric provides an all histogram and may additionally provide breakdowns under by_trip_kind (keys vehicle, person) and by_vclass (keys are SUMO vehicle classes). Each histogram contains bins (bin edges) and counts (count per bin, length len(bins) - 1). The top-level meta object reports num_trips, available_trip_kinds, and available_vclasses.

This endpoint is available only when tripinfo output was generated for the simulation.

HTTP Example
GET https://sesam.co4e.com/api/v1/analyzer/ds/tinfos/42
Response Example
{
  "metrics": {
    "duration": {
      "all": {
        "bins": [2.0, 69.0, 136.0, 203.0, 270.0],
        "counts": [35, 48, 46, 30]
      },
      "by_trip_kind": {
        "person": {
          "bins": [13.0, 144.25, 275.5, 406.75, 538.0],
          "counts": [8, 11, 6, 3]
        },
        "vehicle": {
          "bins": [2.0, 66.25, 130.5, 194.75, 259.0],
          "counts": [33, 39, 40, 23]
        }
      },
      "by_vclass": {
        "bicycle": {
          "bins": [45.0, 123.5, 202.0, 280.5],
          "counts": [16, 12, 12]
        },
        "passenger": {
          "bins": [28.0, 137.5, 247.0, 356.5, 466.0],
          "counts": [7, 9, 15, 5]
        }
      }
    },
    "route_length": {
      "all": {
        "bins": [14.57, 190.405, 366.24, 542.075, 717.91],
        "counts": [20, 45, 34, 31]
      }
    },
    "time_loss": {
      "all": {
        "bins": [0.0, 29.7225, 59.445, 89.1675, 118.89],
        "counts": [185, 33, 27, 15]
      }
    },
    "waiting_time": {
      "all": {
        "bins": [0.0, 31.0, 62.0, 93.0, 124.0],
        "counts": [183, 33, 27, 15]
      }
    }
  },
  "meta": {
    "num_trips": 1150,
    "available_trip_kinds": ["person", "vehicle"],
    "available_vclasses": ["bicycle", "bus", "motorcycle", "passenger", "pedestrian", "rail", "rail_urban", "truck"]
  }
}

Vehicle Routes

The analyzer/ds/vroutes/{simulation_run_id} endpoint returns vehicle route data for a simulation run as JSON. The Analyzer uses this data to show and highlight vehicle routes. The values are derived from SUMO vehicle routes output; see the SUMO VehRoutes output documentation for details.

If the optional route data file is not available, the endpoint returns an empty JSON object.

HTTP Example
GET https://sesam.co4e.com/api/v1/analyzer/ds/vroutes/42
Response Example
{
  "rail_urban0": {
    "route": ["199325270#0", "494016701#0", "494016701#1"]
  },
  "motorcycle2": {
    "route": ["-4588215#0", "-1468511724#1", "-1468511724#0", "-1468511723", "48859718#3"]
  },
  "bike4": {
    "route": ["1152880161", "9657820", "-1465141696", "-1152880161", "-1152880162#1"]
  },
  "veh8": {
    "route": ["356359316#1", "356359316#3", "356359316#4", "1199404285", "505526660#0"]
  }
}

FCD Metadata

The analyzer/ds/fcd/meta/{simulation_run_id} endpoint returns metadata for generated FCD playback data as JSON. This metadata describes how the FCD Parquet data is organized for playback and provides the mapping from the numeric entity_id used in the FCD Parquet file to the original SUMO entity id and its kind.

The response contains the time and step layout of the recording (scenario_begin, scenario_duration, step_min, step_max, step_length, time_min, time_max, step_count), a summary of the recorded entities (entity_count, has_vehicles, has_persons, row_group_count), and the per-entity table under entities. Each entry in entities provides entity_id (the numeric id used in the FCD Parquet rows), entity (the original SUMO id string), is_vehicle (true for vehicles, false for persons), and vtype. step_length is given in seconds and is the same simulation step length that the step column in the FCD and TLS Parquet files refers to.

This endpoint is available only when FCD output was generated for the simulation.

HTTP Example
GET https://sesam.co4e.com/api/v1/analyzer/ds/fcd/meta/42
Response Example
{
  "scenario_begin": 0,
  "scenario_duration": 600,
  "step_min": 0,
  "step_max": 599,
  "step_length": 1.0,
  "time_min": 0.0,
  "time_max": 599.0,
  "entity_count": 1150,
  "has_vehicles": true,
  "has_persons": true,
  "row_group_count": 2,
  "step_count": 600,
  "entities": [
    {
      "entity": "bike0",
      "is_vehicle": true,
      "vtype": "bike_bicycle",
      "entity_id": 0
    },
    {
      "entity": "bike1",
      "is_vehicle": true,
      "vtype": "bike_bicycle",
      "entity_id": 1
    },
    {
      "entity": "ped0",
      "is_vehicle": false,
      "vtype": "ped_pedestrian",
      "entity_id": 2
    }
  ]
}

FCD Parquet

The analyzer/ds/fcd/parquet/{simulation_run_id} endpoint streams generated geo FCD playback data for a simulation run as a Parquet file. The response uses the content type application/vnd.apache.parquet and supports byte-range requests. The dataset combines vehicle and person movements into a single Parquet file, with each row identified by entity_id.

entity_id is a numeric id that is assigned by SESAM and only valid within this simulation run. To resolve it to the original SUMO entity id and to determine whether the row belongs to a vehicle or a person, use the FCD Metadata endpoint, which provides the entity_id → (entity, is_vehicle, vtype) mapping under entities.

step is a zero-based simulation step index that matches step_min / step_max / step_count in the FCD metadata. Multiply step by step_length (from the FCD metadata, in seconds) and add scenario_begin to obtain the simulation time in seconds. lon and lat are WGS84 coordinates in degrees, angle is the heading in degrees, and speed is in m/s.

This endpoint is available only when FCD output was generated for the simulation.

HTTP Example
GET https://sesam.co4e.com/api/v1/analyzer/ds/fcd/parquet/42

Example schema and rows after reading the Parquet response:

Parquet Schema
1
2
3
4
5
6
step: uint32
entity_id: uint32
lon: double
lat: double
angle: float
speed: float
Example Rows
1
2
3
4
step  entity_id  lon        lat        angle       speed
0     0          13.375182  52.507435  199.939560   4.623889
0     266        13.376924  52.506427   20.806007  13.890000
0     366        13.372503  52.510899  119.679054   7.360388

TLS Parquet

The analyzer/ds/tls/parquet/{simulation_run_id} endpoint streams traffic light state data for a simulation run as a Parquet file. The response uses the content type application/vnd.apache.parquet and supports byte-range requests. The fields are derived from SUMO traffic light state output; see the SUMO Traffic Lights output documentation for the meaning of tls_id, program_id, phase, and state.

step uses the same zero-based simulation step index as the FCD Parquet file. To convert it to simulation time in seconds, multiply by step_length from the FCD Metadata response and add scenario_begin.

HTTP Example
GET https://sesam.co4e.com/api/v1/analyzer/ds/tls/parquet/42

Example schema and rows after reading the Parquet response:

Parquet Schema
1
2
3
4
5
step: uint32
tls_id: large_string
program_id: int32
phase: int32
state: large_string
Example Rows
1
2
3
4
step  tls_id       program_id  phase  state
0     11347379603           0      1  r
0     11347379607           0      1  r
0     11347379608           0      0  G