API
法人向け 判定API
ドロマップの飛行可否判定エンジンを、APIキーを使って自社のシステムやアプリから呼び出せます。緯度・経度を送るだけで、その地点にかかる規制をJSONで取得できます。料金・プランなどのご利用条件は、ご利用規模・用途に応じて個別にご案内しています。まずはお問い合わせフォームからご相談ください。
できること
- 緯度・経度を指定した1地点の判定(GET)
- 最大100地点をまとめて判定する一括判定(POST。1地点=利用回数1回)
- 人口集中地区(DID)・空港等の周辺空域・小型無人機等飛行禁止法のレッド/イエローゾーンの該当有無をまとめて取得
- 工業専用地域の DID 除外特例(2026年7月施行)を反映した判定
- 海上の地点かどうかの判定(海上で陸上の規制に当たらない地点は「海域」として返します)
- 空港周辺空域の実効の制限高を、海抜(標高)と地上高の両方の数値で取得
- 当月の利用回数と上限の確認
ベースURL
https://www.dromap.jp/api/v1
認証
すべてのリクエストに、発行されたAPIキーを次のいずれかの方法で付与してください。
- リクエストヘッダー
X-API-Key: <APIキー> - または
Authorization: Bearer <APIキー>
APIキーはサーバー間通信でのみ使用し、ブラウザやモバイルアプリのコードに直接埋め込まないでください。クライアント側に埋め込むと第三者に読み取られ、不正利用や利用上限の消費につながるおそれがあります。
エンドポイント
GET /judge — 1地点の判定
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| lat | number | ○ | 緯度 |
| lng | number | ○ | 経度 |
curl "https://www.dromap.jp/api/v1/judge?lat=35.6812&lng=139.7671" \
-H "X-API-Key: YOUR_API_KEY"POST /judge — 最大100地点の一括判定
JSONボディで points 配列(最大100件)を送信します。1地点=利用回数1回として数えます。
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
| points | array | ○ | 判定したい地点の配列(最大100件) |
| points[].id | string または number | - | 任意の識別子。レスポンスにそのまま含まれます。省略した場合はレスポンスで null になります |
| points[].lat | number | ○ | 緯度 |
| points[].lng | number | ○ | 経度 |
curl -X POST "https://www.dromap.jp/api/v1/judge" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"points": [
{ "id": "A-1", "lat": 35.6812, "lng": 139.7671 },
{ "id": "A-2", "lat": 34.6937, "lng": 135.5023 }
]
}'レスポンスは count(判定した地点数)とresults(判定結果の配列)を持つ形式です。resultsの各要素は、リクエストで渡した id に加えて、GET /judgeと同じ判定結果の項目(level・did・airport など)を持ちます。
{
"count": 2,
"results": [
{ "id": "A-1", "lat": 35.6812, "lng": 139.7671, /* 以下 GET と同じ項目 */ ... },
{ "id": "A-2", "lat": 34.6937, "lng": 135.5023, ... }
]
}GET /usage — 利用状況の確認
パラメーターは不要です。当月の判定回数(利用済み件数)と月間の上限をJSONで返します。GET /usageの呼び出し自体は月間の判定回数には数えません。
curl "https://www.dromap.jp/api/v1/usage" \
-H "X-API-Key: YOUR_API_KEY"{
"name": "株式会社サンプル",
"plan": "",
"month": "2026-09",
"used": 1234,
"limit": 10000,
"remaining": 8766,
"perMinute": 60,
"maxBatch": 100,
"expiresAt": null
}レスポンス項目(判定結果)
GET /judge ・POST /judge 共通の判定結果の形式です。
| 項目 | 説明 |
|---|---|
| level / levelLabel | 総合判定。prohibited(飛行禁止)/ permission_required(許可・確認が必要)/ caution(注意)/ sea(海域)/ none(該当なし)と、その日本語表示名(levelLabel)。sea は陸上の規制データに当たらない海上の地点で、「規制なし」を意味しません(港則法・海上交通安全法等の規制や、船舶・漁業への配慮が必要な場合があります)。 |
| did | 人口集中地区(DID)の該当有無(hit)と地区名(name)。工業専用地域と重なり、DIDに係る飛行許可が不要になる場合は exempt が true になり、総合判定(level)には DID を含めません。 |
| industrialZone | 工業専用地域の該当有無(hit)と市区町村名(city)。2026年7月1日施行の国土交通省告示第435号により「人又は家屋の密集している地域」から除外される区域です。国土数値情報(都市計画決定情報、令和6年度)に基づき判定します。データが整備されていない一部の市区町村では hit が false となり、DID の除外特例は適用しません(安全側の判定)。データを取得できない場合は null です。 |
| airport | 空港等の周辺空域の該当有無(hit)、実効の制限高を海抜(heightLimitAmsl)・地上高(heightLimitAgl)・地表面標高(groundElevation)の数値で、該当する区域の一覧(zones)を返します。heightLimitAglが0以下の場合は、地表からすでに飛行に許可が必要であることを示します。 |
| airport.zones[] | 該当した区域ごとの明細。name / airport(空港名)/ surface(制限表面名)/ limitAmsl / limitAgl / note。制限表面ではない区域(空港の敷地など)を含むため、その場合は airport・surface・limitAmsl・limitAgl が null になることがあります。空港の敷地に該当する場合は surface が "敷地" になり、高さにかかわらず許可が必要です。 |
| redZone / yellowZone | 小型無人機等飛行禁止法のレッドゾーン(対象施設の敷地)・イエローゾーン(周囲おおむね1,000m、令和8年改正)の該当有無(hit)と対象施設名の一覧(names)。複数施設のエリアが重なる場合は該当する全施設名を含みます。 |
| marine.isSea | 海上の地点かどうか(国土地理院の標高データがない地点を海上とみなします)。判定できない場合は null です。人口集中地区(DID)内の地点は陸上として扱います。 |
| marine.portArea / route / trainingArea | 港則法の港域・航路・演習/訓練区域の情報(海しる/海上保安庁のデータ)。現在提供準備中のため null を返します。 |
| judgedAt | 判定日時(ISO 8601、日本時間)。 |
サンプルレスポンス
東京駅付近(lat=35.6812, lng=139.7671)を GET /judge で判定した例です。(数値は今後の実データ更新で変わる場合があります)
{
"lat": 35.6812,
"lng": 139.7671,
"level": "permission_required",
"levelLabel": "許可・確認が必要",
"did": { "hit": true, "name": "千代田区", "exempt": false },
"industrialZone": { "hit": false, "city": null },
"airport": {
"hit": true,
"heightLimitAmsl": 256.9,
"heightLimitAgl": 253.3,
"groundElevation": 3.6,
"zones": [
{
"name": "東京国際空港円錐表面",
"airport": "東京国際空港",
"surface": "円錐表面",
"limitAmsl": 256.9,
"limitAgl": 253.3,
"note": null
}
]
},
"redZone": { "hit": false, "names": [] },
"yellowZone": { "hit": true, "names": ["皇居"] },
"marine": {
"isSea": false,
"portArea": null,
"route": null,
"trainingArea": null
},
"judgedAt": "2026-09-28T15:29:05+09:00"
}エラー
エラー時は {"error":{"code":"...","message":"..."}} の形式でJSONを返します。
| code | HTTPステータス | 説明 |
|---|---|---|
| missing_api_key | 401 | APIキーが指定されていません |
| invalid_api_key | 401 | APIキーが無効です |
| key_disabled | 403 | APIキーが無効化されています |
| key_expired | 403 | APIキーの有効期限が切れています |
| https_required | 403 | HTTPS 以外で呼び出されました(https://www.dromap.jp/api/v1/ をお使いください) |
| invalid_parameter | 400 | パラメーターが不正です |
| too_many_points | 400 | 一括判定の地点数が上限(100件)を超えています |
| payload_too_large | 413 | リクエスト本文が64KBを超えています |
| method_not_allowed | 405 | 対応していないHTTPメソッドです |
| not_found | 404 | エンドポイントが存在しない、または www.dromap.jp 以外の URL で呼び出されました |
| rate_limited | 429 | 1分あたりのリクエスト数の上限を超えました(Retry-Afterヘッダー付き) |
| quota_exceeded | 429 | 当月の判定回数の上限を超えました(Retry-Afterヘッダー付き) |
| internal_error | 500 | サーバー側の内部エラーです。利用回数には数えません |
利用上限
1分あたりのリクエスト数と、月間の判定回数にはそれぞれ上限があります(契約内容に応じて設定します)。レスポンスヘッダーのX-RateLimit-RemainingとX-Quota-Remainingで、それぞれの残数を確認できます。
ご利用にあたっての注意
判定結果は、国勢調査人口集中地区(総務省統計局)、国土数値情報(都市計画決定情報・用途地域)(国土交通省)、国土地理院、DIPS、小型無人機等飛行禁止法の対象施設情報など、公開データを加工して作成した参考情報です。法的な許可・承認の要否を保証するものではありません。自治体の条例、緊急用務空域、土地・施設の管理者のルール、地表・水面から150m以上の高度、港湾区域(港湾法)、海上の規制(港則法・海上交通安全法等。提供準備中)は判定対象外です。工業専用地域の DID 除外特例は、国土数値情報(都市計画決定情報)のデータがある市区町村について反映しています。実際の飛行前には、DIPS等で必ず最終確認を行ってください。
料金・プランなどのご利用条件は、ご利用規模・用途に応じて個別にご案内しています。まずはお問い合わせフォームからご相談ください。