Introduction
Welcome to the Sherpa OSINT API. Our infrastructure continuously ingests data from dozens of disconnected global arrays (ADS-B exchanges, USGS seismic rigs, NORAD Celestrak datasets, public unsecured webcams, and AIS vessel trackers), homogenizes the telemetry, and serves it via a single, ultra-low-latency RESTful API.
This API is designed for enterprise integration, enabling developers to build global situational awareness dashboards, supply chain trackers, and early-warning systems without managing complex ETL pipelines.
Quickstart Guide
Get your first telemetry response in under 3 minutes.
- Sign up for a Sandbox Key. Visit the Pricing page and select the Hobbyist tier. A mock Stripe interface will issue an `sk_hob_` prefixed key instantly. Or, subscribe directly via the RapidAPI Marketplace.
- Set your headers. All requests to the `/query` endpoint require the `X-RapidAPI-Key` (or the legacy `x-api-key`) header.
- Run your first query. Execute the following cURL command to fetch live aircraft data:
curl -X GET "https://api.sherpa-solutions.com/v1/osint/query?type=flights&limit=5" \ -H "X-RapidAPI-Key: YOUR_GENERATED_KEY_HERE"
Environments
The Sherpa OSINT API provides multiple environments for safe development.
| Environment | Base URL | Description |
|---|---|---|
| Production | https://api.sherpa-solutions.com | Live, real-time data. Requires an `sk_pro_` or `sk_ent_` key. Rate limits strictly enforced. |
| Sandbox | http://localhost:8001 | Mock development environment using cached local SQLite databases. |
Authentication
The OSINT API uses API keys to authenticate requests. You can view and manage your API keys in the developer dashboard.
Your API keys carry many privileges, so be sure to keep them secure. Do not share your secret API keys in publicly accessible areas such as GitHub, client-side code, and so forth.
Authentication to the API is performed via the HTTP Header X-RapidAPI-Key (or the legacy x-api-key).
# Example Python Request
import requests
url = "https://api.sherpa-solutions.com/v1/osint/query"
headers = {
"X-RapidAPI-Key": "your_secret_key"
}
params = {"type": "earthquakes", "limit": 10}
response = requests.get(url, headers=headers, params=params)
print(response.json())
Rate Limiting
To ensure system stability, limits are applied to the number of API requests your application can make.
| Tier | Requests Per Minute (RPM) | Max Records per Payload |
|---|---|---|
| Hobbyist | 60 RPM | 100 Records |
| Professional | 1,000 RPM | 1,000 Records |
| Enterprise | Unlimited | 10,000+ Records |
If you exceed your limit, the API will respond with a `429 Too Many Requests` status code. Enterprise customers have access to WebSockets for unthrottled streaming data.
Error Codes
We use standard HTTP response codes to indicate the success or failure of an API request.
| Code | Meaning |
|---|---|
| 200 - OK | Everything worked as expected. |
| 400 - Bad Request | The request was unacceptable, often due to missing a required parameter (`type`). |
| 401 - Unauthorized | No valid API key provided in the `X-RapidAPI-Key` or `x-api-key` header. |
| 429 - Too Many Requests | You hit the rate limit constraint for your subscription tier. |
| 50x - Server Error | An underlying database routing error on our end. |
API Reference
POST /api/v1/osint/authenticate
Exchanges a registered email for a stateless API key. This simulates a payment gateway or OAuth flow.
Request Body
{
"email": "string (required)",
"tier": "string (hobbyist, professional, enterprise) (required)"
}
Response
{
"status": "success",
"api_key": "sk_hob_7a8b9c...cd4e"
}
GET /api/v1/osint/query
The core telemetry endpoint. Dynamically routes your authenticated request to the requested planetary database shard.
Parameters
| Parameter | Type | Description |
|---|---|---|
| type * | string | The exact data stream to query. Must be one of: `flights`, `military_flights`, `satellites`, `earthquakes`, `cctv`, or `vessels`. |
| limit | integer | Optional. Maximum number of rows to return. Default is 10. Maximum depends on subscription tier. |
Code Snippet: Node.js (Axios)
const axios = require('axios');
const options = {
method: 'GET',
url: 'https://api.sherpa-solutions.com/v1/osint/query',
params: { type: 'military_flights', limit: '50' },
headers: { 'X-RapidAPI-Key': 'YOUR_KEY' }
};
axios.request(options).then(function (response) {
console.log(response.data);
}).catch(function (error) {
console.error(error);
});
Data Schemas
Detailed breakdown of the JSON arrays returned by each `type` query parameter.
flights & military_flights
| Field | Type | Description |
|---|---|---|
| flight_id | string | ICAO24 Transponder HEX code. |
| callsign | string | Standard alphanumeric routing callsign (e.g. "UAL123"). |
| origin_country | string | Country of aircraft registration. |
| longitude | float | WGS84 format. |
| latitude | float | WGS84 format. |
| altitude | float | Height in meters above sea level. |
| velocity | float | Ground speed in meters per second (m/s). |
| true_track | float | Heading relative to true north in degrees (0-360). |
satellites
| Field | Type | Description |
|---|---|---|
| norad_cat_id | int | Unique satellite identifier assigned by USSPACECOM. |
| name | string | Registered orbital name (e.g. "STARLINK-1234"). |
| tle_line1 | string | Standard Two-Line Element Set (Row 1). |
| tle_line2 | string | Standard Two-Line Element Set (Row 2). |
| longitude | float | Sub-satellite point (WGS84). |
| latitude | float | Sub-satellite point (WGS84). |
| altitude | float | Orbital height in kilometers. |
cctv
| Field | Type | Description |
|---|---|---|
| url | string | Direct unauthenticated M-JPEG stream URL. |
| country | string | Geo-located hosting country code (e.g. "US", "RU"). |
| city | string | Geo-located hosting city. |
| latitude | float | Camera location approximation. |
| longitude | float | Camera location approximation. |
earthquakes
| Field | Type | Description |
|---|---|---|
| eq_id | string | USGS Event ID. |
| magnitude | float | Richter scale seismic magnitude. |
| place | string | Text description of the epicenter. |
| time | int | Unix epoch timestamp (milliseconds). |
| longitude | float | Epicenter. |
| latitude | float | Epicenter. |
| depth | float | Depth in kilometers. |
vessels
| Field | Type | Description |
|---|---|---|
| mmsi | int | Maritime Mobile Service Identity. |
| timestamp | string | ISO8601 Timestamp of last AIS broadcast. |
| latitude | float | Vessel position. |
| longitude | float | Vessel position. |
| course | float | Course over ground (degrees). |
| speed | float | Speed over ground (knots). |
| length | int | Overall length of ship in meters. |