{"components":{"securitySchemes":{"bearerAuth":{"scheme":"bearer","type":"http"}}},"info":{"description":"Plan cycling, hiking and running routes from a natural-language brief. Distances are measured by routing real OpenStreetMap roads, never estimated by a language model. A plan call takes 1-3 minutes.","title":"Route AI Agent API","version":"1.0.0"},"openapi":"3.1.0","paths":{"/api/agent/routes":{"post":{"operationId":"planRoute","requestBody":{"content":{"application/json":{"schema":{"properties":{"activity":{"type":"string"},"avoid":{"items":{"type":"string"},"type":"array"},"bike_type":{"type":"string"},"daily_distance_km":{"properties":{"max":{"type":"number"},"min":{"type":"number"}},"type":"object"},"days":{"type":"integer"},"end":{"type":"string"},"preferences":{"items":{"type":"string"},"type":"array"},"prompt":{"description":"Trip brief in any language","type":"string"},"start":{"type":"string"}},"required":["prompt"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"days":{"type":"integer"},"distance_km":{"type":"number"},"elevation_m":{"type":"integer"},"name":{"type":"string"},"route_id":{"type":"string"},"share_url":{"type":"string"},"stages":{"items":{"properties":{"day":{"type":"integer"},"distance_km":{"type":"number"},"elevation_m":{"type":"integer"},"name":{"type":"string"},"retraced_pct":{"type":"integer"},"waypoints":{"items":{"type":"string"},"type":"array"}},"type":"object"},"type":"array"},"warnings":{"items":{"properties":{"message":{"type":"string"},"type":{"type":"string"}},"type":"object"},"type":"array"}},"type":"object"}}},"description":"Planned route"}},"summary":"Plan a route from a natural-language brief"}},"/api/agent/routes/{route_id}":{"get":{"operationId":"getRoute","parameters":[{"description":"Route id, or the token from a route-ai.app/s/... share URL","in":"path","name":"route_id","required":true,"schema":{"type":"string"}},{"description":"Set to 1 to include full coordinates","in":"query","name":"geometry","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"days":{"type":"integer"},"distance_km":{"type":"number"},"elevation_m":{"type":"integer"},"name":{"type":"string"},"route_id":{"type":"string"},"share_url":{"type":"string"},"stages":{"items":{"properties":{"day":{"type":"integer"},"distance_km":{"type":"number"},"elevation_m":{"type":"integer"},"name":{"type":"string"},"retraced_pct":{"type":"integer"},"waypoints":{"items":{"type":"string"},"type":"array"}},"type":"object"},"type":"array"},"warnings":{"items":{"properties":{"message":{"type":"string"},"type":{"type":"string"}},"type":"object"},"type":"array"}},"type":"object"}}},"description":"Route"}},"summary":"Inspect an existing route"}},"/api/agent/routes/{route_id}/export":{"get":{"operationId":"exportRoute","parameters":[{"description":"Route id, or the token from a route-ai.app/s/... share URL","in":"path","name":"route_id","required":true,"schema":{"type":"string"}},{"in":"query","name":"format","required":true,"schema":{"enum":["gpx"],"type":"string"}},{"description":"Export a single day (1-based)","in":"query","name":"day","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/gpx+xml":{}},"description":"GPX file"}},"summary":"Download the route as GPX"}},"/api/agent/routes/{route_id}/share":{"post":{"operationId":"shareRoute","parameters":[{"description":"Route id, or the token from a route-ai.app/s/... share URL","in":"path","name":"route_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"share_url":{"type":"string"}},"type":"object"}}},"description":"Share URL"}},"summary":"Get the public share URL (idempotent)"}}},"security":[{"bearerAuth":[]}],"servers":[{"url":"https://route-ai.app"}]}
