API Reference

v1.3.0

Access fresh street-level imagery, map features, and AI-detected video driving events from the world's largest decentralized mapping infrastructure with Bee cameras collecting data globally.

What This API Provides

  • Street-level imagery: Geolocated frames with timestamps, GPS accuracy metrics, and IMU data
  • Map features: Detected road objects (speed limits, stop signs, turn restrictions, fire hydrants, lane lines) with confidence scores and precise positioning
  • Burst locations: Incentivize drivers to map specific areas on-demand
  • AI events: AI-detected video driving events (harsh braking, swerving, stop sign violations, etc.) with video clips for building and training AI models

Key Differentiators

  • Fresh data: Days to weeks old, not months/years like traditional providers
  • Global coverage: 36% of world roads mapped
  • Programmable: Query any geometry (point, line, polygon) with flexible filters

Authentication

Most endpoints require authentication via API key. You can authenticate in two ways:

Option 1: Query Parameter

  • Include apiKey as a query parameter: ?apiKey=YOUR_API_KEY

Option 2: Authorization Header

  • Include an Authorization header with your API key: Authorization: Basic YOUR_API_KEY

Both methods work for all authenticated endpoints.

Important Constraints

  • Max query area: 5 sq km per request. Larger areas must be split into multiple queries.
  • Coordinates: Always [longitude, latitude] order (GeoJSON standard), NOT lat/lon.

Getting Started

  1. Obtain your API key from your Bee Maps account
  2. Make requests to the endpoints below using your API key
  3. Query data by providing a GeoJSON geometry (Point, LineString, or Polygon) in your request

Authentication

All API requests require a Basic API key sent via the Authorization header. You can generate and manage keys in the Developer Portal.

curl -X GET "https://beemaps.com/api/developer/imagery" \
  -H "Authorization: Basic YOUR_API_KEY"

Imagery

Access fresh, high-quality geolocated street-level imagery

POST/imagery/poly

Query street-level imagery for a specific week within a polygon

Returns street-level imagery frames captured during a specific week within your polygon boundary. Use this for historical imagery queries or when you need data from a particular time period.

Each frame includes:

  • Signed URL to download the image (expires after a limited time)
  • Timestamp and GPS position with accuracy metrics (hdop, pdop, etc.)
  • IMU data (accelerometer, gyroscope) at capture time
  • Device type and image dimensions

Use /map-data instead if you need: point+radius queries, route-based queries, or both imagery and map features together.

Constraints:

  • Max area: 5 sq km per request
  • Coordinates: [longitude, latitude] order
  • Image URLs are temporary—download promptly
API Key Required

Parameters

weekstring2023-10-31

YYYY-mm-dd of a day in the week to query

headingsbooleantrue

Include heading information in the response

catalogstring(true)true

When set to 'true', returns catalog metadata only without signed image URLs

Request Body

GeoJSON (Multi)Polygon

typestring

Polygon or MultiPolygon

Example: "Polygon"

coordinatesnumber[][][]

Example: [[[-122.48185591741223,37.76910370072376]]]

POST/imagery/poly
const apiKey = 'your-api-key-here';
const url = 'https://beemaps.com/api/developer/imagery/poly';
const resp = await fetch(url,
{
method: 'post',
body: JSON.stringify({
coordinates: [
[
[-122.41927011115149,37.775414437036275],
[-122.41605628337065,37.7763 86631642566],
[-122.41597692959819,37.77889546188183],
[-122.42299973845249,37.7772647319 11615],
[-122.41927011115149,37.775414437036275]
]
],
type: 'Polygon'
}),
headers: {
'content-type': 'application/json',
'authorization': `Basic ${apiKey}`
}
});
const data = await resp.json();
const frames = data.frames;
framesImageryResults

Array items:

urlstring

temporary signed url

Example: "https://www.cdn.com/image?signed=yoursdearly"

timestampstring

Example: "2023-11-09T02:30:48.974Z"

sequencestring

Example: "60cb39e7cce2931a8cd2fa2d"

idxinteger

Example: 0

devicestring

supported ODC dashcam device

Example: "hdc"

positionobject
latnumber

N

Example: 37.76910370072376

lat_refstring

Example: "n"

lonnumber

E

Example: -122.48185591741223

lon_refstring

Example: "e"

gdopnumber

Example: 0.123

hdopnumber

Example: 0.123

pdopnumber

Example: 0.123

ephnumber

Example: 0.123

cnonumber

Example: 0.123

widthinteger

Example: 2028

heightinteger

Example: 1024

imuobject
acc_xnumber

Example: 0.123

acc_ynumber

Example: 0.123

acc_znumber

Example: 0.123

gyro_xnumber

Example: 0.123

gyro_ynumber

Example: 0.123

gyro_znumber

Example: 0.123

notestring

Optional note about the query result

Successful operation
POST/latest/poly

Query the most recent street-level imagery available within a polygon

Returns the freshest available street-level imagery within your polygon, optionally filtered to exclude data older than a specified week. Use this when you want current conditions rather than historical data.

Ideal for:

  • Real-time condition monitoring
  • Verifying current state of a location
  • Getting the newest available frames regardless of specific date

Constraints:

  • Max area: 5 sq km per request
  • Coordinates: [longitude, latitude] order
API Key Required

Parameters

min_weekstring2023-10-31

YYYY-mm-dd of a day in the week to use as cutoff

headingsbooleantrue

Include heading information in the response

catalogstring(true)true

When set to 'true', returns catalog metadata only without signed image URLs

crossjoinbooleantrue

When true, queries use the full input polygon for each time period instead of sub-polygons

Request Body

GeoJSON (Multi)Polygon

typestring

Polygon or MultiPolygon

Example: "Polygon"

coordinatesnumber[][][]

Example: [[[-122.48185591741223,37.76910370072376]]]

POST/latest/poly
const apiKey = 'your-api-key-here';
const url = 'https://beemaps.com/api/developer/latest/poly';
const resp = await fetch(url,
{
method: 'post',
body: JSON.stringify({
coordinates: [
[
[-122.41927011115149,37.775414437036275],
[-122.41605628337065,37.7763 86631642566],
[-122.41597692959819,37.77889546188183],
[-122.42299973845249,37.7772647319 11615],
[-122.41927011115149,37.775414437036275]
]
],
type: 'Polygon'
}),
headers: {
'content-type': 'application/json',
'authorization': `Basic ${apiKey}`
}
});
const data = await resp.json();
const frames = data.frames;
framesImageryResults

Array items:

urlstring

temporary signed url

Example: "https://www.cdn.com/image?signed=yoursdearly"

timestampstring

Example: "2023-11-09T02:30:48.974Z"

sequencestring

Example: "60cb39e7cce2931a8cd2fa2d"

idxinteger

Example: 0

devicestring

supported ODC dashcam device

Example: "hdc"

positionobject
latnumber

N

Example: 37.76910370072376

lat_refstring

Example: "n"

lonnumber

E

Example: -122.48185591741223

lon_refstring

Example: "e"

gdopnumber

Example: 0.123

hdopnumber

Example: 0.123

pdopnumber

Example: 0.123

ephnumber

Example: 0.123

cnonumber

Example: 0.123

widthinteger

Example: 2028

heightinteger

Example: 1024

imuobject
acc_xnumber

Example: 0.123

acc_ynumber

Example: 0.123

acc_znumber

Example: 0.123

gyro_xnumber

Example: 0.123

gyro_ynumber

Example: 0.123

gyro_znumber

Example: 0.123

notestring

Optional note about the query result

Successful operation

AI Event Videos

Access AI-detected driving video events from Bee cameras on vehicles

POST/aievents/search

Search AI Event Videos

Access action-rich video clips with synchronized ego-vehicle data for training AI driving systems and world models.

Search and retrieve video segments capturing specific driving behaviors and scenarios—harsh braking, lane changes, stop sign interactions, swerving maneuvers, and more.

Use Cases

  • World model training data — Video clips paired with ego-vehicle actions (speed, steering, acceleration) for action-conditioned generation
  • Edge case mining — Surface rare, safety-critical scenarios (near-misses, emergency maneuvers, unusual agent interactions) that are expensive or dangerous to collect intentionally
  • Behavior cloning datasets — Real driver responses to real-world stimuli with ground-truth control outputs
  • Simulation validation — Benchmark synthetic scenarios against authentic driving events

Response Data

Each event includes:

  • Event type and timestamp
  • GPS location
  • Associated metadata (speed, acceleration, speed history array, etc.)
  • Video URL (signed, temporary) when available

Constraints

  • Date range must not exceed 31 days
  • Max 500 results per request
API Key Required

Parameters

apiKeystringyour-api-key-here

Your API key. Alternative to Authorization header.

Request Body

startDatestringrequired

Start of the time range (ISO 8601)

endDatestringrequired

End of the time range (ISO 8601). Must be within 31 days of startDate.

deviceIdsstring[]

Array of Device IDs to filter by

typesstring · enum[]

Array of AI event types to filter by

HARSH_BRAKINGAGGRESSIVE_ACCELERATIONSWERVINGHIGH_SPEEDHIGH_G_FORCESTOP_SIGN_VIOLATIONTRAFFIC_LIGHT_VIOLATIONTAILGATING
polygonnumber[][]

Array of [lon, lat] coordinates defining a closed polygon. Must have at least 4 points with first and last point matching. Must not self-intersect.

limitinteger

Number of items to return

Default: 100

offsetinteger

Offset for pagination

Default: 0

POST/aievents/search
const apiKey = 'your-api-key-here';
const url = 'https://beemaps.com/api/developer/aievents/search';
const resp = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Basic ${apiKey}`
},
body: JSON.stringify({
startDate: '2026-01-01T00:00:00.000Z',
endDate: '2026-01-21T23:59:59.000Z',
types: ['SWERVING', 'HARSH_BRAKING'],
limit: 100
})
});
const data = await resp.json();
// Response: { pagination: {...}, startDate, endDate, events: [...] }
paginationAIEventPagination
totalinteger

Total number of events matching the query

limitinteger

Number of items returned per page

offsetinteger

Current offset for pagination

startDatestring
endDatestring
eventsAIEvent[]

Array items:

idstring

Unique event identifier

Example: "697100eef68342b197b78418"

typestring · enum

Type of AI-detected driving event

HARSH_BRAKINGAGGRESSIVE_ACCELERATIONSWERVINGHIGH_SPEEDHIGH_G_FORCESTOP_SIGN_VIOLATIONTRAFFIC_LIGHT_VIOLATIONTAILGATING
timestampstring

When the event occurred

Example: "2026-01-21T16:37:27.250Z"

locationobject

GPS coordinates where the event occurred

latnumber

Latitude

Example: 37.7749

lonnumber

Longitude

Example: -122.4194

metadataobject

Event-specific metadata. Contents vary by event type. Common fields include ACCELERATION_MS2, SPEED_MS, SPEED_LIMIT_MS, FIRMWARE_VERSION.

Example: {"ACCELERATION_MS2":1.108304,"FIRMWARE_VERSION":"6.63.0"}

videoUrlstring

Temporary signed URL to download the event video clip. May be null if video is not available.

Example: "https://example-bucket.s3.amazonaws.com/recordings/.../video.mp4?X-Amz-..."

gnssDataobject[]

High-precision GPS data array. Only included when includeGnssData=true query parameter is set. Contains ~30-60 samples at ~1Hz rate around the event.

Example: [{"timestamp":1769731194000,"lat":37.7749123,"lon":-122.4194567,"alt":15.5},{"timestamp":1769731195000,"lat":37.7749234,"lon":-122.4194678,"alt":15.6}]

Array items:

timestampnumber

Unix timestamp in milliseconds

Example: 1769731194000

latnumber

Latitude in degrees

Example: 37.7749123

lonnumber

Longitude in degrees

Example: -122.4194567

altnumber

Altitude in meters

Example: 15.5

imuDataobject[]

High-frequency IMU (Inertial Measurement Unit) sensor data. Only included when includeImuData=true query parameter is set. Contains 3000+ samples at ~10Hz (100ms intervals) capturing 3-axis accelerometer and gyroscope readings around the event.

Example: [{"timestamp":1769731194000.461,"acc_x":-0.204417,"acc_y":-0.000218,"acc_z":1.011279,"gyro_x":0.030514,"gyro_y":0.915588,"gyro_z":-0.282222},{"timestamp":1769731194100.461,"acc_x":-0.210543,"acc_y":0.004563,"acc_z":1.008234,"gyro_x":0.152592,"gyro_y":0.778777,"gyro_z":-0.335555}]

Array items:

timestampnumber

Unix timestamp in milliseconds with sub-millisecond precision

Example: 1769731194000.461

acc_xnumber

Acceleration in X axis (m/s²)

Example: -0.204417

acc_ynumber

Acceleration in Y axis (m/s²)

Example: -0.000218

acc_znumber

Acceleration in Z axis (m/s²)

Example: 1.011279

gyro_xnumber

Angular velocity around X axis (rad/s)

Example: 0.030514

gyro_ynumber

Angular velocity around Y axis (rad/s)

Example: 0.915588

gyro_znumber

Angular velocity around Z axis (rad/s)

Example: -0.282222

Successful response
GET/aievents/{id}

Get AI Event Video by ID

Retrieve detailed information about a specific AI-detected driving event, including the video clip URL and synchronized ego-vehicle data.

Returns

  • Event type and timestamp
  • GPS location
  • Associated metadata (speed, acceleration, firmware version, etc.)
  • Video URL (signed, temporary) when available
  • Optional: Frame-level sensor data (GPS + IMU)

Sensor Data Expansion

Use query parameters to optionally include frame-level sensor data:

  • ?includeGnssData=true - Include GPS coordinates array (lat, lon, alt, timestamp)
  • ?includeImuData=true - Include IMU array (accelerometer/gyroscope readings with timestamps)
  • ?includeGnssData=true&includeImuData=true - Include both

Note: Sensor data adds 50-200 KB to response size. Only request when needed for detailed analysis, path reconstruction, or ML training.

Use this endpoint after searching to access the full event details and video for analysis, training, or validation purposes.

API Key Required

Parameters

idstringrequired697100eef68342b197b78418

Event ID

includeGnssDatabooleantrue

Include frame-level GPS data (lat, lon, alt, timestamp array)

includeImuDatabooleantrue

Include frame-level IMU data (accelerometer and gyroscope readings with timestamps)

apiKeystringyour-api-key-here

Your API key. Alternative to Authorization header.

GET/aievents/{id}
const apiKey = 'your-api-key-here';
const eventId = '697100eef68342b197b78418';
const url = `https://beemaps.com/api/developer/aievents/${eventId}`;
const resp = await fetch(url, {
method: 'GET',
headers: {
'Authorization': `Basic ${apiKey}`
}
});
const event = await resp.json();
// Response: { id, type, timestamp, location, metadata, videoUrl }
idstring

Unique event identifier

Example: "697100eef68342b197b78418"

typestring · enum

Type of AI-detected driving event

HARSH_BRAKINGAGGRESSIVE_ACCELERATIONSWERVINGHIGH_SPEEDHIGH_G_FORCESTOP_SIGN_VIOLATIONTRAFFIC_LIGHT_VIOLATIONTAILGATING
timestampstring

When the event occurred

Example: "2026-01-21T16:37:27.250Z"

locationobject

GPS coordinates where the event occurred

latnumber

Latitude

Example: 37.7749

lonnumber

Longitude

Example: -122.4194

metadataobject

Event-specific metadata. Contents vary by event type. Common fields include ACCELERATION_MS2, SPEED_MS, SPEED_LIMIT_MS, FIRMWARE_VERSION.

Example: {"ACCELERATION_MS2":1.108304,"FIRMWARE_VERSION":"6.63.0"}

videoUrlstring

Temporary signed URL to download the event video clip. May be null if video is not available.

Example: "https://example-bucket.s3.amazonaws.com/recordings/.../video.mp4?X-Amz-..."

gnssDataobject[]

High-precision GPS data array. Only included when includeGnssData=true query parameter is set. Contains ~30-60 samples at ~1Hz rate around the event.

Example: [{"timestamp":1769731194000,"lat":37.7749123,"lon":-122.4194567,"alt":15.5},{"timestamp":1769731195000,"lat":37.7749234,"lon":-122.4194678,"alt":15.6}]

Array items:

timestampnumber

Unix timestamp in milliseconds

Example: 1769731194000

latnumber

Latitude in degrees

Example: 37.7749123

lonnumber

Longitude in degrees

Example: -122.4194567

altnumber

Altitude in meters

Example: 15.5

imuDataobject[]

High-frequency IMU (Inertial Measurement Unit) sensor data. Only included when includeImuData=true query parameter is set. Contains 3000+ samples at ~10Hz (100ms intervals) capturing 3-axis accelerometer and gyroscope readings around the event.

Example: [{"timestamp":1769731194000.461,"acc_x":-0.204417,"acc_y":-0.000218,"acc_z":1.011279,"gyro_x":0.030514,"gyro_y":0.915588,"gyro_z":-0.282222},{"timestamp":1769731194100.461,"acc_x":-0.210543,"acc_y":0.004563,"acc_z":1.008234,"gyro_x":0.152592,"gyro_y":0.778777,"gyro_z":-0.335555}]

Array items:

timestampnumber

Unix timestamp in milliseconds with sub-millisecond precision

Example: 1769731194000.461

acc_xnumber

Acceleration in X axis (m/s²)

Example: -0.204417

acc_ynumber

Acceleration in Y axis (m/s²)

Example: -0.000218

acc_znumber

Acceleration in Z axis (m/s²)

Example: 1.011279

gyro_xnumber

Angular velocity around X axis (rad/s)

Example: 0.030514

gyro_ynumber

Angular velocity around Y axis (rad/s)

Example: 0.915588

gyro_znumber

Angular velocity around Z axis (rad/s)

Example: -0.282222

Successful response

Map Features

Query detected road objects like speed limits, stop signs, and lane lines

POST/map-data

Query map features and/or street-level imagery within a geographic area

The primary endpoint for accessing Hivemapper road intelligence. Returns detected road features (speed limits, stop signs, turn restrictions, fire hydrants, lane lines) and/or street-level imagery within your specified geometry.

Use this endpoint when you need:

  • Both imagery and map features in a single request
  • Point-based queries with radius (e.g., whats within 100m of this location')
  • Route-based queries with buffer (e.g., whats along this delivery path')
  • Polygon-based queries for arbitrary areas

Common use cases: fleet route validation, robotaxi pickup/dropoff zone checks, POI verification, AI training data collection, infrastructure auditing.

Geometry options:

  • Point with radius (meters): circular area query
  • LineString with buffer (meters): corridor along a route
  • Polygon: arbitrary boundary

Constraints:

  • Max query area: 5 sq km. Split larger areas into multiple requests.
  • Coordinates must be [longitude, latitude] order (GeoJSON standard).
  • startDate defaults to 1 week ago if not specified for imagery queries.
API Key Required

Parameters

apiKeystringyour-api-key-here

Your API key. Alternative to Authorization header.

Request Body

Request parameters including geometry, data type, and optional filters

typestring · enum[]required

Array of data types to query (at least one required)

mapFeaturesimagery
geometryPointGeometry | LinestringGeometry | PolygonGeometryrequired

One of:

PointGeometryPointGeometry
LinestringGeometryLinestringGeometry
PolygonGeometryPolygonGeometry
startDatestring

Start date (YYYY-MM-DD) for imagery queries. Must be within the last year. If not provided, defaults to one week ago.

headingsboolean

Include heading information (imagery only)

POST/map-data
const apiKey = 'your-api-key-here';
const url = `https://beemaps.com/api/developer/map-data?apiKey=${apiKey}`;
const resp = await fetch(url, {
method: 'post',
body: JSON.stringify({
type: ['mapFeatures'],
geometry: {
type: 'Point',
coordinates: [-122.419, 37.774],
radius: 100
}
}),
headers: {
'content-type': 'application/json'
}
});
const data = await resp.json();
// Response: { totalCreditsUsed, totalCreditsRemaining, mapFeatureResults: { type, data, creditsUsed } }
totalCreditsUsedintegerrequired

Total number of credits consumed by all query types

totalCreditsRemainingintegerrequired

Number of credits remaining after the query

mapFeatureResultsMapDataResult
typestring · enumrequired

The type of data returned

mapFeaturesimagery
dataMapFeaturesResults | ImageryResultsrequired

The actual data - either map features or imagery frames

One of:

MapFeaturesResultsMapFeaturesResults
ImageryResultsImageryResults
notestring

Optional note about the query result

imageryResultsMapDataResult
typestring · enumrequired

The type of data returned

mapFeaturesimagery
dataMapFeaturesResults | ImageryResultsrequired

The actual data - either map features or imagery frames

One of:

MapFeaturesResultsMapFeaturesResults
ImageryResultsImageryResults
notestring

Optional note about the query result

Successful operation
POST/mapFeatures/poly

Query detected road features within a polygon

Returns map features (road signs, infrastructure, lane markings) detected within your polygon boundary. Each feature includes precise positioning, confidence score, and feature-specific properties.

Feature types include:

  • speed-limit-sign: Posted speed with value, unit (mph/kph), regulatory status
  • stop-sign, yield-sign: Intersection control
  • turn-restriction-sign: No left/right/U-turn indicators
  • traffic-light: Signal locations
  • fire-hydrant: Hydrant positions (useful for parking/dropoff validation)
  • lane-line: Lane markings for determining road width and lane count
  • parking-restriction-sign: No parking, time-limited zones
  • highway-sign: Route markers and exit signs

Each feature includes:

  • position: lon, lat, azimuth (direction sign faces), physical dimensions
  • confidence: Detection confidence score (0-1)
  • observed.firstSeen / observed.lastSeen: Detection timestamps
  • properties: Feature-specific data (e.g., speed limit value)

Use /map-data instead if you need: point+radius queries, route-based queries, or both imagery and features together.

Constraints:

  • Max area: 5 sq km per request
  • Coordinates: [longitude, latitude] order
  • Currently available in US, EU, and UK
API Key Required

Request Body

GeoJSON (Multi)Polygon

typestring

Polygon or MultiPolygon

Example: "Polygon"

coordinatesnumber[][][]

Example: [[[-122.48185591741223,37.76910370072376]]]

POST/mapFeatures/poly
const apiKey = 'your-api-key-here';
const url = 'https://beemaps.com/api/developer/mapFeatures/poly';
const resp = await fetch(url,
{
method: 'post',
body: JSON.stringify({
coordinates: [
[
[-122.41927011115149,37.775414437036275],
[-122.41605628337065,37.7763 86631642566],
[-122.41597692959819,37.77889546188183],
[-122.42299973845249,37.7772647319 11615],
[-122.41927011115149,37.775414437036275]
]
],
type: 'Polygon'
}),
headers: {
'content-type': 'application/json',
'authorization': `Basic ${apiKey}`
}
});
const data = await resp.json();
const features = data.features;
featuresMapFeaturesResults

Array items:

idstring

unique id

Example: "SLS299345"

statusstring

Example: "active"

propertiesobject
speedLimitinteger

Example: 35

unitstring

Example: "mph"

regulatorystring

Example: "enforced"

positionobject
lonnumber

Example: -108.123

latnumber

Example: 34.234

azimuthnumber

Example: 90

heightnumber

Example: 0.5

widthnumber

Example: 0.3

observedobject
firstSeenstring

Example: "2023-11-09T03:09:40.131Z"

LastSeenstring

Example: "2023-11-09T03:09:40.131Z"

confidencenumber

Example: 0.99

classstring

Example: "speed-limit"

Successful operation

Bursts

POST/burst/create

Create incentivized mapping requests to get fresh coverage of specific areas

Creates bursts that incentivize Hivemapper drivers to map specific locations. Once created, bursts appear in the Bee App and trigger push notifications to nearby drivers.

Use this when:

  • You need fresh coverage of a location with stale or missing imagery
  • You want to ensure an area gets mapped before a specific date
  • Existing data doesn't meet your recency requirements

Input options:

  • Point with radius: Specify center coordinates and radius in meters
  • Polygon: Specify exact boundary to cover

Coverage timing (depends on local driver density):

  • Urban areas: Often within hours to 1-2 days
  • Suburban: Typically 1-3 days
  • Rural: May take several days or longer

After creating a burst:

  1. Monitor status via GET /bursts (check isHit field)
  2. Query new imagery via /latest/poly or /map-data once coverage arrives
API Key Required

Request Body

Array of burst creation requests

Array items:

geojsonPolygon | PointGeometry

Either a GeoJSON Polygon or a Point with radius (in meters). Point + radius will be converted to a Polygon internally.

One of:

PolygonPolygon
PointGeometryPointGeometry
trackedLocationstring

Optional Tracked location ID

expirationstring

Optional expiration date overwrite

deviceTypestring · enum

Optional device type of burst target

bee
POST/burst/create
const apiKey = 'your-api-key-here';
const url = 'https://beemaps.com/api/developer/burst/create';
const resp = await fetch(url, {
method: 'POST',
headers: {
'Authorization': `Basic ${apiKey}`,
'Content-Type': 'application/json'
},
body: JSON.stringify([{
geojson: {
type: 'Point',
coordinates: [-122.419, 37.774],
radius: 500
},
credits: 125
}])
});
const data = await resp.json();
// Response: { success: true, bursts: [...], creditsRemaining: 1000 }
successboolean
burstsHoneyBurst[]

Array items:

_idstringrequired
geojsonPolygonrequired
typestring

Polygon or MultiPolygon

Example: "Polygon"

coordinatesnumber[][][]

Example: [[[-122.48185591741223,37.76910370072376]]]

amountnumberrequired
statusstring · enum
activeexpiredrefunded
validFromstringrequired
validUntilstringrequired
deviceTypestring · enum
bee
isHitboolean

Whether the burst has been intersected by a coverage report

latestHitAtstring

Timestamp of the coverage report that triggered the hit detection

createdAtstring
updatedAtstring
Successful operation
GET/bursts

List and monitor your created bursts

Returns a paginated list of bursts you've created, with their current status and coverage information.

Use this to:

  • Check if bursts have been hit (driver collected imagery in the area)
  • Monitor burst expiration dates
  • Audit your burst creation history

Key fields in response:

  • status: active (waiting for coverage), expired, or refunded
  • isHit: true if a driver has mapped the burst area
  • latestHitAt: Timestamp when coverage was detected
  • validUntil: Burst expiration date
API Key Required

Parameters

limitinteger100

Max results to return (max 1000, default 100)

skipinteger0

Results to skip (default 0)

GET/bursts
curl -X GET "https://beemaps.com/api/developer/bursts" \
-H "Authorization: Basic YOUR_API_KEY"
burstsHoneyBurst[]

Array items:

_idstringrequired
geojsonPolygonrequired
typestring

Polygon or MultiPolygon

Example: "Polygon"

coordinatesnumber[][][]

Example: [[[-122.48185591741223,37.76910370072376]]]

amountnumberrequired
statusstring · enum
activeexpiredrefunded
validFromstringrequired
validUntilstringrequired
deviceTypestring · enum
bee
isHitboolean

Whether the burst has been intersected by a coverage report

latestHitAtstring

Timestamp of the coverage report that triggered the hit detection

createdAtstring
updatedAtstring
totalinteger
limitinteger
skipinteger
List of honey bursts

General

GET/devices

Get camera calibration parameters for Hivemapper device types

Returns camera intrinsic parameters (focal length, distortion coefficients) for each Hivemapper device type. No authentication required.

Use this when:

  • Processing imagery for computer vision tasks
  • Undistorting images for accurate measurements
  • Building 3D reconstructions or photogrammetry pipelines

Device types:

  • hdc: Hivemapper Dashcam (original)
  • hdcs: Hivemapper Dashcam S
  • bee: Bee camera

Parameters returned:

  • focal: Focal length
  • k1, k2: Radial distortion coefficients
No Auth Required
GET/devices
curl -X GET "https://beemaps.com/api/developer/devices" \
-H "Authorization: Basic YOUR_API_KEY"
Camera Intrinsic Parameters
POST/mcp

MCP Streamable HTTP Transport

Send JSON-RPC messages to the MCP server using Streamable HTTP transport.

API Key Required

Parameters

apiKeystringrequired

Your Beemaps API key

Request Body

MCP JSON-RPC Message

POST/mcp
{
"mcpServers": {
"beemaps": {
"url": "https://beemaps.com/api/mcp?apiKey=YOUR_API_KEY"
}
}
}
JSON-RPC response

Account

Access account information

GET/history

Retrieve your API query history with credit consumption details

Returns a paginated log of your past API queries, including the geometry queried, credits consumed, and timestamps.

Use this to:

  • Audit API usage patterns
  • Debug unexpected credit consumption
  • Generate usage reports
  • Review which areas you've queried

Each history entry includes:

  • area: Query area in sq km
  • credits: Credits consumed
  • payload: The geometry you queried
  • timestamp: When the query was made
  • weeks: Which data weeks were included
API Key Required

Parameters

limitinteger100

Max results to return

skipinteger0

Results to skip

GET/history
curl -X GET "https://beemaps.com/api/developer/history" \
-H "Authorization: Basic YOUR_API_KEY"
historyobject[]

Array items:

areanumber

Example: 101.123

payloadPolygon
typestring

Polygon or MultiPolygon

Example: "Polygon"

coordinatesnumber[][][]

Example: [[[-122.48185591741223,37.76910370072376]]]

timestampstring

Example: "2023-11-09T03:09:40.131Z"

weeksstring[]
Paginated API transactions