Base URL
https://api.vancam.ai/cameras/cameras
Authentication
The spatial search API requires an x-api-key header on every request.
curl "https://api.vancam.ai/cameras/cameras?lat=49.2827&lon=-123.1207&radius=1" \ -H "x-api-key: <your key>"
No setup required to try it — every client defaults to this shared, public key if VANCAM_API_KEY (or x-api-key) isn't set: abwSAo91eI8wENsNrZFUE7tC6qGkh9Tw66x4cfcQ.
This is one key shared by every anonymous caller — Python or Node, CLI, MCP, or raw REST. Its 1 req/s / 500 requests/month limit is a single collective pool across all of them combined, not 500 each — if it's busy, you'll get rate-limited by other people's traffic, not just your own.
For a limit that's yours alone (5 req/s, 500 requests/month, not shared with anyone), get a free personal key from your account dashboard. Need more than that? See Pro and Enterprise plans.
Requests without a valid key are rejected with 403.
GET /cameras/cameras
One endpoint, four search modes selected by which params you pass.
A. Radius search
GET /cameras/cameras?lat=49.2827&lon=-123.1207&radius=1
Cameras within radius km of a point. Optional: limit (default 50). radius must be between 0 and 50 km.
B. Route search
GET /cameras/cameras?origin_lat=49.2827&origin_lon=-123.1207&dest_lat=49.2965&dest_lon=-123.0884&buffer=100
Cameras within buffer meters of a straight line between origin and destination. Optional: limit (default 50).
C. Bounds search
GET /cameras/cameras?min_lat=49.2&min_lon=-123.2&max_lat=49.3&max_lon=-123.0
Cameras inside a bounding box. Optional: limit (default 100).
D. Nearest search
GET /cameras/cameras?lat=49.2827&lon=-123.1207&nearest=true&limit=5
N nearest cameras to a point. limit must be between 1 and 50 (default 5).
E. Camera by ID
GET /cameras/cameras?asset_id=30145
Full details for a single camera.
Sample response (radius search)
{
"type": "radius_search",
"count": 1,
"radius_km": 1.0,
"cameras": [
{
"asset_id": 30145,
"level0": "North America",
"level1": "CA",
"level2": "British Columbia",
"level3": "Vancouver",
"longitude": -123.120444,
"latitude": 49.279674,
"direction": "North",
"street_address": "Seymour St and Smithe St",
"camera_class": "open",
"distance_meters": 48.56
}
]
}GET /api?asset_id={id}
Fetch the latest live frame for a camera (binary JPEG).
GET https://api.vancam.ai/api?asset_id=30145
Data schema
asset_id: unique camera identifierlevel0–level3: geographic hierarchy (continent → country → province/state → city)latitude,longitude: WGS84direction: cardinal camera facingcamera_class:openorprivatedistance_meters/route_fraction: present on radius/nearest/route searches
MCP equivalent
Prefer MCP for Cursor and Claude? See the MCP page — same backend, agent-native interface.