Extract, then plan
Command
Talk through origin, destination, vias, and how it should move. With Review modes on, Command suggests rail, sea, and road before Plan routes. Catalog search still has to identify every place. Plan then charts the sea, rail, and road legs on the existing journey. The same query is a public Command API.
Talk through the movement. Name places as they come — the thread keeps a draft until the chain is ready for Plan.
Ambiguous names stay on this page with suggestions. Say the next place — or go — when the draft looks right. No invented UN/LOCODEs. Overview only — not navigational advice.
Public API
Command API
The same catalog extraction as this page, without a browser session. GET or POST /api/command with a natural-language query. Catalog search still has to identify every place. No invented UN/LOCODEs. Overview only — not navigational advice.
Open to automated callers: robots.txt allows /api/command, and every reply carries Access-Control-Allow-Origin: * so browser-based agents can read it. No key or session. Rate limited to 10 requests per minute per IP.
format=json
Identified points, suggested modes, calculated sea/land legs, and a Plan link. Default.
format=image
PNG satellite overview of those legs. Add stats for the planning-estimate card.
format=link
Absolute Plan URL and /plan path for the first and last places.
Examples
Query is q or query on GET, query or command on POST. map, png, and screenshot also mean image; url means link.
curl -sS "https://ocean.nomap.app/api/command?q=Oakland+to+Qingdao&format=json"
curl -sS "https://ocean.nomap.app/api/command?q=Oakland+to+Qingdao&format=image" \ -o map.png
curl -sS "https://ocean.nomap.app/api/command?q=Rome+to+Stockholm+via+Paris+and+Berlin&format=image&stats=all" \ -o card.png
curl -sS "https://ocean.nomap.app/api/command?q=Oakland+to+Qingdao&format=link"
curl -sS "https://ocean.nomap.app/api/command" \
-H "content-type: application/json" \
-d '{"query":"Oakland to Qingdao","format":"json"}'All parameters
Every image panel on, plus the POST conversation fields. stats=all is the same card as listing each flag. picks, followUp, and prior are how this page continues an unresolved name; they are valid on a resolved query and ignored when unused.
curl -sS "https://ocean.nomap.app/api/command?q=Oakland+to+Qingdao&format=image&distance=1&time=1&fuel=1&emissions=1&cost=1&highlights=1&countries=1&profile=1&legend=1&assumptions=1&options=1&alerts=1" \ -o card.png
curl -sS "https://ocean.nomap.app/api/command" \
-H "content-type: application/json" \
-d '{
"query": "Oakland to Qingdao",
"format": "image",
"stats": [
"distance",
"time",
"fuel",
"emissions",
"cost",
"highlights",
"countries",
"profile",
"legend",
"assumptions",
"options",
"alerts"
],
"distance": true,
"time": true,
"fuel": true,
"emissions": true,
"cost": true,
"highlights": true,
"countries": true,
"profile": true,
"legend": true,
"assumptions": true,
"options": true,
"alerts": true,
"picks": [
{
"id": "usoak",
"query": "Oakland",
"name": "Oakland",
"country": "United States"
}
],
"followUp": "by sea",
"prior": "Oakland to Qingdao"
}'Open the card with every stats flag · Open the Rome → Stockholm stats card · Oakland → Qingdao · map only
Image stats
stats=all turns every panel on. stats=none (the default) keeps the 1280×720 map. Comma lists and boolean flags work together: stats=all&tolls=0 drops cost. Road-only cards use Google Maps Routes when a key is configured, otherwise a driving-car corridor and published car factors.
| Option | Also | Shows |
|---|---|---|
| fuelLPer100Km | 0–200 | User-supplied consumption factor; fuel = km × factor / 100 |
| co2GPerKm | 0–10000 | User-supplied emissions factor; kg = km × factor / 1000 |
| distance | km | Sum of calculated hop kilometres |
| time | duration, eta | Router duration, or km/day defaults |
| fuel | — | Road: provider fuel estimate or supplied fuelLPer100Km. Sea: labelled MPP estimate |
| emissions | co2, carbon | Road: supplied co2GPerKm × distance. Otherwise explicitly unavailable |
| cost | tolls | Road-only: Google Maps / ORS tolls. Otherwise USD freight band |
| highlights | waypoints | Numbered catalog places |
| countries | — | Unique waypoint countries, not geometry crossed |
| profile | elevation | Sampled Terrarium terrain; unavailable if sampling is incomplete |
| legend | traffic | Road-only: traffic colour key (live overlay unavailable). Mixed: mode colours |
| assumptions | vehicle | Actual routing profile and supplied factors; HGV restrictions are not verified |
| options | alternatives | Calculated route / legs; QR opens the actual Plan link |
| alerts | notes | Hop errors only |
Conversation fields
POST can continue an unresolved command the same way this page does. picks are up to six { id, query, name?, country? } suggestion choices. followUp (400 characters) and prior (1,500 characters) carry the next turn and the working command.
Responses
- 200 — JSON for json/link;
image/pngfor image. - 400 — missing or oversized query, or invalid JSON.
- 422 — place still unresolved. Same
warning,suggestions,draft, andworkingCommandas this page. - 429 — 10 requests per minute per client.
Query maximum is 1,500 characters. Image generation can take up to a minute. Tiles © Esri World Imagery.