## Optimize route through waypoints `optimize().create(OptimizeCreateParamsparams, RequestOptionsrequestOptions = RequestOptions.none()) : OptimizeResult` **post** `/api/v1/optimize` Optimize route through waypoints ### Parameters - `params: OptimizeCreateParams` - `optimizeRequest: OptimizeRequest` Route optimization request through waypoints ### 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 - `geometry: GeoJsonGeometry` - `coordinates: Coordinates` GeoJSON coordinates array (nesting depth varies by geometry type) - `List` - `List>` - `List>>` - `List>>>` - `type: Type` - `POINT("Point")` - `LINE_STRING("LineString")` - `POLYGON("Polygon")` - `MULTI_POINT("MultiPoint")` - `MULTI_LINE_STRING("MultiLineString")` - `MULTI_POLYGON("MultiPolygon")` - `properties: Properties` - `distance: Optional` Total distance in meters - `duration: Optional` Estimated duration in seconds - `waypointOrder: Optional>` Optimized waypoint ordering - `status: Status` Job status - `COMPLETED("completed")` - `type: Type` - `FEATURE("Feature")` - `class OptimizeProcessingResult:` Async optimization in progress — poll with the job_id - `jobId: String` Job ID for polling - `status: Status` Job status - `PROCESSING("processing")` ### Example ```kotlin package com.plazafyi.example import com.plazafyi.client.PlazaClient import com.plazafyi.client.okhttp.PlazaOkHttpClient import com.plazafyi.models.GeoJsonGeometry import com.plazafyi.models.optimize.OptimizeCreateParams import com.plazafyi.models.optimize.OptimizeRequest import com.plazafyi.models.optimize.OptimizeResult fun main() { val client: PlazaClient = PlazaOkHttpClient.fromEnv() val params: OptimizeRequest = OptimizeRequest.builder() .waypoints(GeoJsonGeometry.builder() .coordinatesOfDoubles(listOf(0.0)) .type(GeoJsonGeometry.Type.POINT) .build()) .build() val optimizeResult: OptimizeResult = client.optimize().create(params) } ```