Build on IoBeacons.
Everything you can do in Maps, you can do from code. Send positions from devices, keep your own systems in sync with your map layers and embed live maps in your product.
Getting started
- Create a workspace (the 7-day trial includes the API).
- In Maps, open Settings → API keys and create a key. Copy it now; it is shown once.
- Send it as a bearer token to
https://iobeacons.com/maps/api/v1.
curl https://iobeacons.com/maps/api/v1/maps \
-H "Authorization: Bearer iobm_your_key_here"
Responses are JSON. Errors come back with an HTTP status and an error message you can show to a person. The API is part of the Professional plan and above (100,000 calls a month on Professional, 1,000,000 on Business). Check a key with GET /me.
Send device positions
Use your own id for the device. If the device doesn't exist yet it is created for you.
curl -X POST https://iobeacons.com/maps/api/v1/devices/truck-12/positions \
-H "Authorization: Bearer iobm_your_key_here" \
-H "Content-Type: application/json" \
-d '{"lon": -95.99, "lat": 36.15, "speed_mph": 34, "heading": 90}'
To catch up after being offline, send up to 1,000 positions at once with their times:
{"positions": [
{"lon": -95.99, "lat": 36.15, "time": "2026-11-06T14:00:00Z"},
{"lon": -95.98, "lat": 36.16, "time": "2026-11-06T14:01:00Z"}
]}
The answer lists any alerts the new positions set off, so your system can react straight away.
The API library
Every part of the platform is in the API: maps and layers, features, sites, zones, devices and positions, alert rules, reports, notes and findings, live data layers, and satellites and weather. The API reference lists all of it with examples in curl, JavaScript and Python, and lets you try each call with your own key.
| Area | What you can do |
|---|---|
| Maps, layers, features | Create and share maps, add layers, read and write GeoJSON, upload files, export, vector tiles |
| Devices | Send one or 1,000 positions at once, read trails and last positions |
| Sites, zones, alerts | Places, geofences, rules that email, text or call your webhook, and the alerts they raised |
| Reports | Site Intelligence Reports for any point, as JSON or PDF |
| Space | Where any satellite or piece of debris is now or at any moment, its ground track and catalogue record |
| Weather, catalog | Radar loop frames, Doppler winds, warnings, earthquakes, wildfires, flood zones and address search |
| Notes, findings | Pin notes for your team and save views you can share by link |
Client libraries
Each is one file with no dependencies. Every endpoint is a method, named as in the reference.
| Language | Download | Works with |
|---|---|---|
| JavaScript | iobeacons.mjs and types | Node 18+, Deno, Bun and browsers |
| Python | iobeacons.py | Python 3.8+, standard library only |
| Anything else | OpenAPI 3.1 description | Postman, Insomnia, or a generator for your language |
// JavaScript
import { IoBeacons } from './iobeacons.mjs';
const io = new IoBeacons(process.env.IOBEACONS_API_KEY);
await io.sendPositions('truck-12', { lon: -95.99, lat: 36.15, speed_mph: 34 });
const iss = await io.satellitePosition(25544); // { lon, lat, altKm, speedKmS }
# Python
from iobeacons import IoBeacons
io = IoBeacons() # reads IOBEACONS_API_KEY
io.send_positions("truck-12", {"lon": -95.99, "lat": 36.15, "speed_mph": 34})
iss = io.satellite_position(25544)
Embed a live map
In Maps, open a map, choose Share, turn on the link and copy the embed code. It looks like this:
<iframe src="https://iobeacons.com/maps/embed.html#your-share-token"
width="100%" height="480" style="border:0" loading="lazy"></iframe>
Viewers don't need an account. Turning the link off in Maps stops the embed straight away.
Webhooks
Alert rules can call your URL. Each call carries the alert as JSON and a signature header so you can check it came from IoBeacons. Set the URL and secret on the rule in Maps.
Need something the API does not cover?
Our engineers build custom feeds and integrations. Tell us what you are connecting.