Account
Check your key, plan and this month's usage.
Who this key belongs to
The workspace, plan and this month's API use for the key you sent. A good first call to check a key works.
curl JavaScript Python
curl "https://iobeacons.com/maps/api/v1/me" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.me();
result = io.me()
Try it
Usage this month
Counts of maps, features, devices, zones, rules and sites, plus this month's map views, reports and API calls.
curl JavaScript Python
curl "https://iobeacons.com/maps/api/v1/usage" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.usage();
result = io.usage()
Try it
Maps
Maps hold layers, a saved view and sharing settings.
List maps
Every map in the workspace the key can see, newest change first.
curl JavaScript Python
curl "https://iobeacons.com/maps/api/v1/maps" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.listMaps();
result = io.list_maps()
Try it
Create a map
Styles: streets, light, dark, satellite, terrain.
curl JavaScript Python
curl -X POST "https://iobeacons.com/maps/api/v1/maps" \
-H "Authorization: Bearer $IOBEACONS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Fleet yard","style":"streets","view":{"center":[-95.99,36.15],"zoom":11}}'
const result = await io.createMap({"name":"Fleet yard","style":"streets","view":{"center":[-95.99,36.15],"zoom":11}});
result = io.create_map({"name":"Fleet yard","style":"streets","view":{"center":[-95.99,36.15],"zoom":11}})
Try it
Get a map with its layers
The map, its saved view, every layer with its style, and share links if sharing is on.
Parameter In What it is idpath Its id (a UUID).
curl JavaScript Python
curl "https://iobeacons.com/maps/api/v1/maps/{id}" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.getMap('ID');
result = io.get_map("ID")
Try it
id
Send GET
Change a map
Send only what changes: name, description, style, view, settings or visibility (private, team, link, public). Turning on link or public sharing returns share and embed links.
Parameter In What it is idpath Its id (a UUID).
curl JavaScript Python
curl -X PATCH "https://iobeacons.com/maps/api/v1/maps/{id}" \
-H "Authorization: Bearer $IOBEACONS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Fleet yard (north)","visibility":"link"}'
const result = await io.updateMap('ID', {"name":"Fleet yard (north)","visibility":"link"});
result = io.update_map("ID", {"name":"Fleet yard (north)","visibility":"link"})
Try it
id
JSON body {
"name": "Fleet yard (north)",
"visibility": "link"
}
Send PATCH This changes data in your workspace.
Delete a map
Deletes the map, its layers and their features.
Parameter In What it is idpath Its id (a UUID).
curl JavaScript Python
curl -X DELETE "https://iobeacons.com/maps/api/v1/maps/{id}" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.deleteMap('ID');
result = io.delete_map("ID")
Try it
id
Send DELETE This changes data in your workspace.
POST /maps/{id}/duplicate#
Copy a map
Copies the map with all its layers and features.
Parameter In What it is idpath Its id (a UUID).
curl JavaScript Python
curl -X POST "https://iobeacons.com/maps/api/v1/maps/{id}/duplicate" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.duplicateMap('ID');
result = io.duplicate_map("ID")
Try it
id
Send POST This changes data in your workspace.
POST /maps/{id}/share/reset#
Make a new share link
The old link and embed stop working straight away.
Parameter In What it is idpath Its id (a UUID).
curl JavaScript Python
curl -X POST "https://iobeacons.com/maps/api/v1/maps/{id}/share/reset" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.resetShareLink('ID');
result = io.reset_share_link("ID")
Try it
id
Send POST This changes data in your workspace.
Upload a file as a new layer
Send multipart/form-data with a file field (GeoJSON, KML, KMZ, GPX, CSV or a zipped shapefile) and an optional name. CSV rows with addresses are geocoded.
Parameter In What it is idpath Its id (a UUID).
curl JavaScript Python
curl -X POST "https://iobeacons.com/maps/api/v1/maps/{id}/upload" \
-H "Authorization: Bearer $IOBEACONS_API_KEY" \
-F "file=@depots.csv" -F "name=Depots"
const result = await io.uploadFile('ID', file, 'Depots');
result = io.upload_file("ID", "depots.csv", name="Depots")
Try it
id
File
Send POST This changes data in your workspace.
Layers
Layers on a map: your own features or live catalog data.
Add a layer
kind "features" (default) is your own data. kind "catalog" with a catalog_key adds a live layer from the catalog, for example "radar" or "earthquakes".
Parameter In What it is idpath The map id.
curl JavaScript Python
curl -X POST "https://iobeacons.com/maps/api/v1/maps/{id}/layers" \
-H "Authorization: Bearer $IOBEACONS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Depots","style":{"color":"#2876ee","radius":6}}'
const result = await io.createLayer('ID', {"name":"Depots","style":{"color":"#2876ee","radius":6}});
result = io.create_layer("ID", {"name":"Depots","style":{"color":"#2876ee","radius":6}})
Try it
id
JSON body {
"name": "Depots",
"style": {
"color": "#2876ee",
"radius": 6
}
}
Send POST This changes data in your workspace.
Change a layer
Name, visible, position, or style (color, opacity, width, radius, mode, field, label, popup, palette).
Parameter In What it is idpath Its id (a UUID).
curl JavaScript Python
curl -X PATCH "https://iobeacons.com/maps/api/v1/layers/{id}" \
-H "Authorization: Bearer $IOBEACONS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Depots","visible":true,"style":{"color":"#d9781a"}}'
const result = await io.updateLayer('ID', {"name":"Depots","visible":true,"style":{"color":"#d9781a"}});
result = io.update_layer("ID", {"name":"Depots","visible":True,"style":{"color":"#d9781a"}})
Try it
id
JSON body {
"name": "Depots",
"visible": true,
"style": {
"color": "#d9781a"
}
}
Send PATCH This changes data in your workspace.
Delete a layer
Parameter In What it is idpath Its id (a UUID).
curl JavaScript Python
curl -X DELETE "https://iobeacons.com/maps/api/v1/layers/{id}" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.deleteLayer('ID');
result = io.delete_layer("ID")
Try it
id
Send DELETE This changes data in your workspace.
GET /layers/{id}/export.{format}#
Download a layer
The whole layer as a file.
Parameter In What it is idpath Its id (a UUID). formatpath geojson, csv or kml
curl JavaScript Python
curl "https://iobeacons.com/maps/api/v1/layers/{id}/export.geojson" \
-H "Authorization: Bearer $IOBEACONS_API_KEY" \
-o download
const result = await io.exportLayer('ID', "geojson");
result = io.export_layer("ID", "geojson")
Try it
id format
Send GET
GET /tiles/{layerId}/{z}/{x}/{y}.pbf#
Vector tiles
Mapbox Vector Tiles for large layers. Point MapLibre or Mapbox GL at https://iobeacons.com/maps/api/v1/tiles/{layerId}/{z}/{x}/{y}.pbf and send the key as a header (transformRequest).
Parameter In What it is layerIdpath The layer id. zpath xpath ypath
curl JavaScript Python
curl "https://iobeacons.com/maps/api/v1/tiles/{layerId}/3/1/3.pbf" \
-H "Authorization: Bearer $IOBEACONS_API_KEY" \
-o download
const result = await io.layerTile('LAYERID', "3", "1", "3");
result = io.layer_tile("LAYERID", "3", "1", "3")
Try it
layerId z x y
Send GET
Features
Points, lines and polygons inside a layer, as GeoJSON.
GET /layers/{id}/features#
Read features
A GeoJSON FeatureCollection. Each feature carries its id in properties._id. Up to 20,000 per call; truncated is true when there are more, so ask for a smaller bbox.
Parameter In What it is idpath The layer id. bbox optional query Only what falls inside west,south,east,north (degrees).
curl JavaScript Python
curl "https://iobeacons.com/maps/api/v1/layers/{id}/features" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.listFeatures('ID', { bbox: "-96.1,36.0,-95.8,36.3" });
result = io.list_features("ID", bbox="-96.1,36.0,-95.8,36.3")
Try it
id bbox optional
Send GET
POST /layers/{id}/features#
Add features
Send one GeoJSON Feature or a FeatureCollection. Returns the new ids.
Parameter In What it is idpath The layer id.
curl JavaScript Python
curl -X POST "https://iobeacons.com/maps/api/v1/layers/{id}/features" \
-H "Authorization: Bearer $IOBEACONS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"type":"Feature","geometry":{"type":"Point","coordinates":[-95.99,36.15]},"properties":{"name":"Depot 4"}}'
const result = await io.addFeatures('ID', {"type":"Feature","geometry":{"type":"Point","coordinates":[-95.99,36.15]},"properties":{"name":"Depot 4"}});
result = io.add_features("ID", {"type":"Feature","geometry":{"type":"Point","coordinates":[-95.99,36.15]},"properties":{"name":"Depot 4"}})
Try it
id
JSON body {
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
-95.99,
36.15
]
},
"properties": {
"name": "Depot 4"
}
}
Send POST This changes data in your workspace.
Change a feature
Send a new geometry, new properties, or both. Properties replace the old ones.
Parameter In What it is idpath The feature id (a number).
curl JavaScript Python
curl -X PATCH "https://iobeacons.com/maps/api/v1/features/{id}" \
-H "Authorization: Bearer $IOBEACONS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"properties":{"name":"Depot 4 (closed)"}}'
const result = await io.updateFeature('ID', {"properties":{"name":"Depot 4 (closed)"}});
result = io.update_feature("ID", {"properties":{"name":"Depot 4 (closed)"}})
Try it
id
JSON body {
"properties": {
"name": "Depot 4 (closed)"
}
}
Send PATCH This changes data in your workspace.
Delete a feature
Parameter In What it is idpath The feature id (a number).
curl JavaScript Python
curl -X DELETE "https://iobeacons.com/maps/api/v1/features/{id}" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.deleteFeature('ID');
result = io.delete_feature("ID")
Try it
id
Send DELETE This changes data in your workspace.
Sites
Places that matter to you. Reports and weather alerts use them.
List sites
Your places of interest as GeoJSON points.
curl JavaScript Python
curl "https://iobeacons.com/maps/api/v1/sites" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.listSites();
result = io.list_sites()
Try it
Send GET
Add a site
Give lon and lat, or an address to look up. An optional boundary polygon is used by weather alerts.
curl JavaScript Python
curl -X POST "https://iobeacons.com/maps/api/v1/sites" \
-H "Authorization: Bearer $IOBEACONS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Tulsa yard","address":"1 W 3rd St, Tulsa, OK"}'
const result = await io.createSite({"name":"Tulsa yard","address":"1 W 3rd St, Tulsa, OK"});
result = io.create_site({"name":"Tulsa yard","address":"1 W 3rd St, Tulsa, OK"})
Try it
JSON body {
"name": "Tulsa yard",
"address": "1 W 3rd St, Tulsa, OK"
}
Send POST This changes data in your workspace.
Change a site
Parameter In What it is idpath Its id (a UUID).
curl JavaScript Python
curl -X PATCH "https://iobeacons.com/maps/api/v1/sites/{id}" \
-H "Authorization: Bearer $IOBEACONS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Tulsa yard (main)"}'
const result = await io.updateSite('ID', {"name":"Tulsa yard (main)"});
result = io.update_site("ID", {"name":"Tulsa yard (main)"})
Try it
id
JSON body {
"name": "Tulsa yard (main)"
}
Send PATCH This changes data in your workspace.
Delete a site
Parameter In What it is idpath Its id (a UUID).
curl JavaScript Python
curl -X DELETE "https://iobeacons.com/maps/api/v1/sites/{id}" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.deleteSite('ID');
result = io.delete_site("ID")
Try it
id
Send DELETE This changes data in your workspace.
Zones
Geofences for enter and exit alerts.
List zones
Geofences as GeoJSON polygons.
curl JavaScript Python
curl "https://iobeacons.com/maps/api/v1/zones" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.listZones();
result = io.list_zones()
Try it
Send GET
Add a zone
Send a circle (lon, lat, radius_m) or a GeoJSON Polygon as geometry.
curl JavaScript Python
curl -X POST "https://iobeacons.com/maps/api/v1/zones" \
-H "Authorization: Bearer $IOBEACONS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Yard","circle":{"lon":-95.99,"lat":36.15,"radius_m":300}}'
const result = await io.createZone({"name":"Yard","circle":{"lon":-95.99,"lat":36.15,"radius_m":300}});
result = io.create_zone({"name":"Yard","circle":{"lon":-95.99,"lat":36.15,"radius_m":300}})
Try it
JSON body {
"name": "Yard",
"circle": {
"lon": -95.99,
"lat": 36.15,
"radius_m": 300
}
}
Send POST This changes data in your workspace.
Change a zone
Parameter In What it is idpath Its id (a UUID).
curl JavaScript Python
curl -X PATCH "https://iobeacons.com/maps/api/v1/zones/{id}" \
-H "Authorization: Bearer $IOBEACONS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Main yard","color":"#d9781a"}'
const result = await io.updateZone('ID', {"name":"Main yard","color":"#d9781a"});
result = io.update_zone("ID", {"name":"Main yard","color":"#d9781a"})
Try it
id
JSON body {
"name": "Main yard",
"color": "#d9781a"
}
Send PATCH This changes data in your workspace.
Delete a zone
Parameter In What it is idpath Its id (a UUID).
curl JavaScript Python
curl -X DELETE "https://iobeacons.com/maps/api/v1/zones/{id}" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.deleteZone('ID');
result = io.delete_zone("ID")
Try it
id
Send DELETE This changes data in your workspace.
Devices
Vehicles, trackers and sensors, and the positions they send.
List devices
Every device with its last position, plus a FeatureCollection of those that have reported.
curl JavaScript Python
curl "https://iobeacons.com/maps/api/v1/devices" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.listDevices();
result = io.list_devices()
Try it
Send GET
Add a device
external_id is your own id for it. You can skip this step: sending positions for a new external id creates the device.
curl JavaScript Python
curl -X POST "https://iobeacons.com/maps/api/v1/devices" \
-H "Authorization: Bearer $IOBEACONS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Truck 12","external_id":"truck-12","kind":"vehicle"}'
const result = await io.createDevice({"name":"Truck 12","external_id":"truck-12","kind":"vehicle"});
result = io.create_device({"name":"Truck 12","external_id":"truck-12","kind":"vehicle"})
Try it
JSON body {
"name": "Truck 12",
"external_id": "truck-12",
"kind": "vehicle"
}
Send POST This changes data in your workspace.
Delete a device
Parameter In What it is idpath Its id (a UUID).
curl JavaScript Python
curl -X DELETE "https://iobeacons.com/maps/api/v1/devices/{id}" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.deleteDevice('ID');
result = io.delete_device("ID")
Try it
id
Send DELETE This changes data in your workspace.
POST /devices/{ref}/positions#
Send positions
One fix, or { "positions": [...] } with up to 1,000 fixes and their times. The answer lists alerts the new positions set off.
Parameter In What it is refpath The device id or your external id.
curl JavaScript Python
curl -X POST "https://iobeacons.com/maps/api/v1/devices/truck-12/positions" \
-H "Authorization: Bearer $IOBEACONS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"lon":-95.99,"lat":36.15,"speed_mph":34,"heading":90}'
const result = await io.sendPositions("truck-12", {"lon":-95.99,"lat":36.15,"speed_mph":34,"heading":90});
result = io.send_positions("truck-12", {"lon":-95.99,"lat":36.15,"speed_mph":34,"heading":90})
Try it
ref
JSON body {
"lon": -95.99,
"lat": 36.15,
"speed_mph": 34,
"heading": 90
}
Send POST This changes data in your workspace.
A device's trail
A GeoJSON LineString of recent positions.
Parameter In What it is idpath Its id (a UUID). hours optional query How far back, 1 to 168. Default 24.
curl JavaScript Python
curl "https://iobeacons.com/maps/api/v1/devices/{id}/track" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.deviceTrack('ID');
result = io.device_track("ID")
Try it
id hours optional
Send GET
Alerts
Rules that watch zones, sites, devices and live feeds, and the alerts they raised.
List alert rules
curl JavaScript Python
curl "https://iobeacons.com/maps/api/v1/rules" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.listRules();
result = io.list_rules()
Try it
Send GET
Add an alert rule
Trigger types: zone_enter, zone_exit, offline, speed, nws_warning, earthquake. Channels: emails, sms (with country code) and https webhooks.
curl JavaScript Python
curl -X POST "https://iobeacons.com/maps/api/v1/rules" \
-H "Authorization: Bearer $IOBEACONS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Truck left the yard","trigger":{"type":"zone_exit","zone_id":"00000000-0000-0000-0000-000000000000"},"channels":{"emails":["ops@example.com"],"webhooks":["https://example.com/hooks/iobeacons"]}}'
const result = await io.createRule({"name":"Truck left the yard","trigger":{"type":"zone_exit","zone_id":"00000000-0000-0000-0000-000000000000"},"channels":{"emails":["ops@example.com"],"webhooks":["https://example.com/hooks/iobeacons"]}});
result = io.create_rule({"name":"Truck left the yard","trigger":{"type":"zone_exit","zone_id":"00000000-0000-0000-0000-000000000000"},"channels":{"emails":["ops@example.com"],"webhooks":["https://example.com/hooks/iobeacons"]}})
Try it
JSON body {
"name": "Truck left the yard",
"trigger": {
"type": "zone_exit",
"zone_id": "00000000-0000-0000-0000-000000000000"
},
"channels": {
"emails": [
"ops@example.com"
],
"webhooks": [
"https://example.com/hooks/iobeacons"
]
}
}
Send POST This changes data in your workspace.
Change an alert rule
Parameter In What it is idpath Its id (a UUID).
curl JavaScript Python
curl -X PATCH "https://iobeacons.com/maps/api/v1/rules/{id}" \
-H "Authorization: Bearer $IOBEACONS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"enabled":false}'
const result = await io.updateRule('ID', {"enabled":false});
result = io.update_rule("ID", {"enabled":False})
Try it
id
JSON body {
"enabled": false
}
Send PATCH This changes data in your workspace.
Delete an alert rule
Parameter In What it is idpath Its id (a UUID).
curl JavaScript Python
curl -X DELETE "https://iobeacons.com/maps/api/v1/rules/{id}" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.deleteRule('ID');
result = io.delete_rule("ID")
Try it
id
Send DELETE This changes data in your workspace.
Recent alerts
The last 100 alerts and how each was delivered.
curl JavaScript Python
curl "https://iobeacons.com/maps/api/v1/alerts" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.listAlerts();
result = io.list_alerts()
Try it
Send GET
Reports
Site Intelligence Reports for any point.
Make a site report
Flood zone, weather warnings, earthquakes, nearby services and more for a point or a site_id.
curl JavaScript Python
curl -X POST "https://iobeacons.com/maps/api/v1/reports" \
-H "Authorization: Bearer $IOBEACONS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"lon":-95.99,"lat":36.15,"radius_mi":1}'
const result = await io.createReport({"lon":-95.99,"lat":36.15,"radius_mi":1});
result = io.create_report({"lon":-95.99,"lat":36.15,"radius_mi":1})
Try it
JSON body {
"lon": -95.99,
"lat": 36.15,
"radius_mi": 1
}
Send POST This changes data in your workspace.
List reports
curl JavaScript Python
curl "https://iobeacons.com/maps/api/v1/reports" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.listReports();
result = io.list_reports()
Try it
Send GET
Get a report
Parameter In What it is idpath Its id (a UUID).
curl JavaScript Python
curl "https://iobeacons.com/maps/api/v1/reports/{id}" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.getReport('ID');
result = io.get_report("ID")
Try it
id
Send GET
Download a report as PDF
Parameter In What it is idpath Its id (a UUID).
curl JavaScript Python
curl "https://iobeacons.com/maps/api/v1/reports/{id}/pdf" \
-H "Authorization: Bearer $IOBEACONS_API_KEY" \
-o download
const result = await io.reportPdf('ID');
result = io.report_pdf("ID")
Try it
id
Send GET
Catalog
Live public data layers and address search.
List live data layers
Ready-made layers (weather warnings, radar, earthquakes, wildfires, flood zones and more), with which your plan includes.
curl JavaScript Python
curl "https://iobeacons.com/maps/api/v1/catalog" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.listCatalog();
result = io.list_catalog()
Try it
Send GET
Read a live data layer
GeoJSON for vector catalog layers, or tile details for raster ones.
Parameter In What it is keypath bbox optional query Only what falls inside west,south,east,north (degrees).
curl JavaScript Python
curl "https://iobeacons.com/maps/api/v1/catalog/earthquakes/data" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.catalogData("earthquakes", { bbox: "-96.1,36.0,-95.8,36.3" });
result = io.catalog_data("earthquakes", bbox="-96.1,36.0,-95.8,36.3")
Try it
key bbox optional
Send GET
Look up an address
Parameter In What it is qquery An address or place name.
curl JavaScript Python
curl "https://iobeacons.com/maps/api/v1/geocode" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.geocode({ q: "1 W 3rd St, Tulsa" });
result = io.geocode(q="1 W 3rd St, Tulsa")
Try it
q
Send GET
Space
Satellites and debris: orbital elements, live positions and ground tracks. Try these without a key.
List satellite groups
Stations, weather, Earth observation, GPS, science, Starlink, every active satellite, recent launches and three debris fields.
curl JavaScript Python
curl "https://iobeacons.com/maps/api/v1/space" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.spaceGroups();
result = io.space_groups()
Try it works without a key
Send GET
Orbital elements for a group
Two-line elements (TLE) from CelesTrak, refreshed every few hours.
Parameter In What it is grouppath
curl JavaScript Python
curl "https://iobeacons.com/maps/api/v1/space/stations" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.spaceGroup("stations");
result = io.space_group("stations")
Try it works without a key
group
Send GET
GET /space/{group}/positions#
Where a whole group is
Every object in the group as GeoJSON points with altitude and speed.
Parameter In What it is grouppath time optional query A moment within 30 days of now, as an ISO date. Default: now.
curl JavaScript Python
curl "https://iobeacons.com/maps/api/v1/space/stations/positions" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.spaceGroupPositions("stations");
result = io.space_group_positions("stations")
Try it works without a key
group time optional
Send GET
GET /space/objects/{norad}/position#
Where one object is
Longitude, latitude, altitude (km) and speed (km/s), worked out from the latest elements.
Parameter In What it is noradpath NORAD catalogue number. time optional query A moment within 30 days of now, as an ISO date. Default: now.
curl JavaScript Python
curl "https://iobeacons.com/maps/api/v1/space/objects/25544/position" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.satellitePosition("25544");
result = io.satellite_position("25544")
Try it works without a key
norad time optional
Send GET
GET /space/objects/{norad}/track#
Ground track
The path over the ground as a GeoJSON MultiLineString, split at the date line.
Parameter In What it is noradpath time optional query A moment within 30 days of now, as an ISO date. Default: now. minutes optional query How long a path, 1 to 1440. Default: one orbit. step optional query Seconds between points, 10 to 600. Default 60.
curl JavaScript Python
curl "https://iobeacons.com/maps/api/v1/space/objects/25544/track" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.satelliteTrack("25544");
result = io.satellite_track("25544")
Try it works without a key
norad time optional minutes optional step optional
Send GET
GET /space/objects/{norad}/heard#
Recordings by ground stations
Recent passes of this object recorded by SatNOGS, an open network of volunteer ground stations, and checked as good: when, which station and where, frequency, mode, decoded packets, and links to the recording.
Parameter In What it is noradpath NORAD catalogue number.
curl JavaScript Python
curl "https://iobeacons.com/maps/api/v1/space/objects/25544/heard" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.satelliteHeard("25544");
result = io.satellite_heard("25544")
Try it works without a key
norad
Send GET
Check our positions
Our ISS position next to an independent public tracker at the same moment, and how far apart they are. agrees is true within 25 km.
curl JavaScript Python
curl "https://iobeacons.com/maps/api/v1/space/check/iss" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.checkIss();
result = io.check_iss()
Try it works without a key
Send GET
Catalogue record
Owner, launch date and site, type, status, orbit and radar size from the CelesTrak satellite catalogue.
Parameter In What it is noradpath
curl JavaScript Python
curl "https://iobeacons.com/maps/api/v1/space/info/25544" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.satelliteInfo("25544");
result = io.satellite_info("25544")
Try it works without a key
norad
Send GET
Weather
Moving radar and Doppler winds. Try these without a key.
GET /weather/radar-frames#
Radar loop frames
Tile URLs for each frame of the last hour, oldest first, ready for a map library.
Parameter In What it is source optional query us (high resolution, 5-minute steps) or world (10-minute steps). Default us.
curl JavaScript Python
curl "https://iobeacons.com/maps/api/v1/weather/radar-frames" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.radarFrames();
result = io.radar_frames()
Try it works without a key
source optional
Send GET
Doppler winds near a point
The nearest NEXRAD radar within about 460 km and tile URLs for its wind velocity.
Parameter In What it is lonquery Longitude. latquery Latitude.
curl JavaScript Python
curl "https://iobeacons.com/maps/api/v1/weather/doppler" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.doppler({ lon: -95.99, lat: 36.15 });
result = io.doppler(lon=-95.99, lat=36.15)
Try it works without a key
lon lat
Send GET
Notes
Notes pinned to places, satellites and maps, shared with your team.
List notes
Parameter In What it is map_id optional query Only notes on this map. norad optional query Only notes about this satellite.
curl JavaScript Python
curl "https://iobeacons.com/maps/api/v1/notes" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.listNotes();
result = io.list_notes()
Try it
map_id optional norad optional
Send GET
Add a note
A note pins to a place (lng, lat), a satellite (norad) or a whole map. Add map_id to show it on a map.
curl JavaScript Python
curl -X POST "https://iobeacons.com/maps/api/v1/notes" \
-H "Authorization: Bearer $IOBEACONS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"body":"Gate 3 floods after heavy rain.","target":{"kind":"place","lng":-95.99,"lat":36.15}}'
const result = await io.createNote({"body":"Gate 3 floods after heavy rain.","target":{"kind":"place","lng":-95.99,"lat":36.15}});
result = io.create_note({"body":"Gate 3 floods after heavy rain.","target":{"kind":"place","lng":-95.99,"lat":36.15}})
Try it
JSON body {
"body": "Gate 3 floods after heavy rain.",
"target": {
"kind": "place",
"lng": -95.99,
"lat": 36.15
}
}
Send POST This changes data in your workspace.
Change a note
An API key can change notes written with an API key.
Parameter In What it is idpath Its id (a UUID).
curl JavaScript Python
curl -X PATCH "https://iobeacons.com/maps/api/v1/notes/{id}" \
-H "Authorization: Bearer $IOBEACONS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"body":"Gate 3 floods after heavy rain. Use gate 4."}'
const result = await io.updateNote('ID', {"body":"Gate 3 floods after heavy rain. Use gate 4."});
result = io.update_note("ID", {"body":"Gate 3 floods after heavy rain. Use gate 4."})
Try it
id
JSON body {
"body": "Gate 3 floods after heavy rain. Use gate 4."
}
Send PATCH This changes data in your workspace.
Delete a note
Parameter In What it is idpath Its id (a UUID).
curl JavaScript Python
curl -X DELETE "https://iobeacons.com/maps/api/v1/notes/{id}" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.deleteNote('ID');
result = io.delete_note("ID")
Try it
id
Send DELETE This changes data in your workspace.
Findings
Saved views with a note, which you can share by link.
List findings
curl JavaScript Python
curl "https://iobeacons.com/maps/api/v1/findings" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.listFindings();
result = io.list_findings()
Try it
Send GET
Save a finding
A saved view with a note. kind "map" (center, zoom, pitch, bearing, mapId) or "orbit" (norad, time, camera). With share: true the answer includes a link anyone can open.
curl JavaScript Python
curl -X POST "https://iobeacons.com/maps/api/v1/findings" \
-H "Authorization: Bearer $IOBEACONS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"title":"Storm cell over the north yard","note":"Moving east at 30 mph.","kind":"map","view":{"center":[-95.99,36.15],"zoom":9},"share":true}'
const result = await io.createFinding({"title":"Storm cell over the north yard","note":"Moving east at 30 mph.","kind":"map","view":{"center":[-95.99,36.15],"zoom":9},"share":true});
result = io.create_finding({"title":"Storm cell over the north yard","note":"Moving east at 30 mph.","kind":"map","view":{"center":[-95.99,36.15],"zoom":9},"share":True})
Try it
JSON body {
"title": "Storm cell over the north yard",
"note": "Moving east at 30 mph.",
"kind": "map",
"view": {
"center": [
-95.99,
36.15
],
"zoom": 9
},
"share": true
}
Send POST This changes data in your workspace.
Change a finding
Parameter In What it is idpath Its id (a UUID).
curl JavaScript Python
curl -X PATCH "https://iobeacons.com/maps/api/v1/findings/{id}" \
-H "Authorization: Bearer $IOBEACONS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"share":false}'
const result = await io.updateFinding('ID', {"share":false});
result = io.update_finding("ID", {"share":False})
Try it
id
JSON body {
"share": false
}
Send PATCH This changes data in your workspace.
Delete a finding
Parameter In What it is idpath Its id (a UUID).
curl JavaScript Python
curl -X DELETE "https://iobeacons.com/maps/api/v1/findings/{id}" \
-H "Authorization: Bearer $IOBEACONS_API_KEY"
const result = await io.deleteFinding('ID');
result = io.delete_finding("ID")
Try it
id
Send DELETE This changes data in your workspace.