## Optimize route through waypoints `OptimizeResult Optimize.Create(OptimizeCreateParamsparameters, CancellationTokencancellationToken = default)` **post** `/api/v1/optimize` Optimize route through waypoints ### Parameters - `OptimizeCreateParams parameters` - `required GeoJsonGeometry waypoints` Waypoints to visit (GeoJSON MultiPoint geometry, minimum 2 points) - `Mode mode` Travel mode (default: auto) - `"auto"Auto` - `"foot"Foot` - `"bicycle"Bicycle` - `Boolean roundtrip` Whether route returns to start (default: true) ### Returns - `class OptimizeResult: A class that can be one of several variants.union` Optimization response — either a completed GeoJSON Feature route or an async job reference - `class OptimizeCompletedResult:` Completed optimization — GeoJSON Feature with optimized route - `required GeoJsonGeometry Geometry` - `required Coordinates Coordinates` GeoJSON coordinates array (nesting depth varies by geometry type) - `IReadOnlyList` - `IReadOnlyList>` - `IReadOnlyList>>` - `IReadOnlyList>>>` - `required Type Type` - `"Point"Point` - `"LineString"LineString` - `"Polygon"Polygon` - `"MultiPoint"MultiPoint` - `"MultiLineString"MultiLineString` - `"MultiPolygon"MultiPolygon` - `required Properties Properties` - `Double Distance` Total distance in meters - `Double Duration` Estimated duration in seconds - `IReadOnlyList WaypointOrder` Optimized waypoint ordering - `required Status Status` Job status - `"completed"Completed` - `required Type Type` - `"Feature"Feature` - `class OptimizeProcessingResult:` Async optimization in progress — poll with the job_id - `required string JobID` Job ID for polling - `required Status Status` Job status - `"processing"Processing` ### Example ```csharp OptimizeCreateParams parameters = new() { Waypoints = new() { Coordinates = new( [ 0 ] ), Type = Type.Point, }, }; var optimizeResult = await client.Optimize.Create(parameters); Console.WriteLine(optimizeResult); ```