Obstacles

Over 625,000 FAA-charted obstacles including towers, cranes, and other structures.

GET/api/v1/obstacles/searchPrivate Pilot+

Search Nearby

Returns paginated results of ObstacleDto

Parameters

NameInTypeDescription
latquerynumberLatitude in decimal degrees (-90 to 90)
lonquerynumberLongitude in decimal degrees (-180 to 180)
radiusNmquerynumberSearch radius in nautical miles (default 5)
minHeightAglqueryinteger?Optional minimum height AGL in feet to filter results
cursorquerystring?Cursor from a previous response to fetch the next page.
limitqueryintegerMaximum number of items to return (default 100, max 500).

Responses

200Returns the obstacles foundPaginatedResponseOfObstacleDto
dataObstacleDto[]The page of results.
oasNumberstringObstacle Assessment Surface number (unique identifier).
stateIdstringnullableTwo-letter state identifier.
cityNamestringnullableCity nearest to the obstacle.
latitudenumbernullableLatitude in decimal degrees.
longitudenumbernullableLongitude in decimal degrees.
obstacleTypestringnullableType of obstacle (e.g., TOWER, BLDG, STACK).
quantityintegernullableNumber of obstacles at this location.
heightAglintegernullableHeight above ground level in feet.
heightAmslintegernullableHeight above mean sea level in feet.
lightingObstacleLightingUnknown | Red | DualMediumWhiteStrobeRed | HighIntensityWhiteStrobeRed | MediumIntensityWhiteStrobe | HighIntensityWhiteStrobe | Flood | DualMediumCatenary | SynchronizedRedLighting | Lighted | None
horizontalAccuracyHorizontalAccuracyUnknown | Within20Feet | Within50Feet | Within100Feet | Within250Feet | Within500Feet | Within1000Feet | WithinHalfNauticalMile | Within1NauticalMile
verticalAccuracyVerticalAccuracyUnknown | Within3Feet | Within10Feet | Within20Feet | Within50Feet | Within125Feet | Within250Feet | Within500Feet | Within1000Feet
markingObstacleMarkingUnknown | OrangeOrOrangeWhitePaint | WhitePaintOnly | Marked | FlagMarker | SphericalMarker | None
verificationStatusVerificationStatusUnknown | Verified | Unverified
paginationPaginationMetadataMetadata for cursor-based pagination.
nextCursorstringnullableCursor value to pass for the next page of results (null if no more pages).
hasMorebooleanWhether more results are available beyond this page.
limitintegerMaximum number of items per page.
400If coordinates or radius are invalidApiErrorResponse
codestringMachine-readable error code (e.g., "AIRCRAFT_NOT_FOUND").
messagestringHuman-readable error message suitable for display.
detailsstringnullableAdditional error details (only included in development environment).
validationErrorsRecord<string, string[]>nullableField-level validation errors (only for validation failures).
timestampstringUTC timestamp when the error occurred.
traceIdstringnullableCorrelation ID for tracing the request.
pathstringnullableRequest path that generated the error.

Code Examples

curl \
  -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://preflightapi-apim-service.azure-api.net/api/v1/obstacles/search?lat=40.6413&lon=-73.7781&radiusNm=10&minHeightAgl=25&limit=25"
GET/api/v1/obstacles/state/{stateCode}Private Pilot+

Get By State

Returns paginated results of ObstacleDto

Parameters

NameInTypeDescription
stateCode*pathstringTwo-letter state code (e.g., TX, CA)
minHeightAglqueryinteger?Optional minimum height AGL in feet to filter results
cursorquerystring?Cursor from a previous response to fetch the next page.
limitqueryintegerMaximum number of items to return (default 100, max 500).

Responses

200Returns the obstaclesPaginatedResponseOfObstacleDto
dataObstacleDto[]The page of results.
oasNumberstringObstacle Assessment Surface number (unique identifier).
stateIdstringnullableTwo-letter state identifier.
cityNamestringnullableCity nearest to the obstacle.
latitudenumbernullableLatitude in decimal degrees.
longitudenumbernullableLongitude in decimal degrees.
obstacleTypestringnullableType of obstacle (e.g., TOWER, BLDG, STACK).
quantityintegernullableNumber of obstacles at this location.
heightAglintegernullableHeight above ground level in feet.
heightAmslintegernullableHeight above mean sea level in feet.
lightingObstacleLightingUnknown | Red | DualMediumWhiteStrobeRed | HighIntensityWhiteStrobeRed | MediumIntensityWhiteStrobe | HighIntensityWhiteStrobe | Flood | DualMediumCatenary | SynchronizedRedLighting | Lighted | None
horizontalAccuracyHorizontalAccuracyUnknown | Within20Feet | Within50Feet | Within100Feet | Within250Feet | Within500Feet | Within1000Feet | WithinHalfNauticalMile | Within1NauticalMile
verticalAccuracyVerticalAccuracyUnknown | Within3Feet | Within10Feet | Within20Feet | Within50Feet | Within125Feet | Within250Feet | Within500Feet | Within1000Feet
markingObstacleMarkingUnknown | OrangeOrOrangeWhitePaint | WhitePaintOnly | Marked | FlagMarker | SphericalMarker | None
verificationStatusVerificationStatusUnknown | Verified | Unverified
paginationPaginationMetadataMetadata for cursor-based pagination.
nextCursorstringnullableCursor value to pass for the next page of results (null if no more pages).
hasMorebooleanWhether more results are available beyond this page.
limitintegerMaximum number of items per page.
400If the state code is emptyApiErrorResponse
codestringMachine-readable error code (e.g., "AIRCRAFT_NOT_FOUND").
messagestringHuman-readable error message suitable for display.
detailsstringnullableAdditional error details (only included in development environment).
validationErrorsRecord<string, string[]>nullableField-level validation errors (only for validation failures).
timestampstringUTC timestamp when the error occurred.
traceIdstringnullableCorrelation ID for tracing the request.
pathstringnullableRequest path that generated the error.

Code Examples

curl \
  -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://preflightapi-apim-service.azure-api.net/api/v1/obstacles/state/NY?minHeightAgl=25&limit=25"
GET/api/v1/obstacles/{oasNumber}Private Pilot+

Get By Oas Number

Parameters

NameInTypeDescription
oasNumber*pathstringObstacle Assessment Surface number

Responses

200Returns the obstacleObstacleDto
oasNumberstringObstacle Assessment Surface number (unique identifier).
stateIdstringnullableTwo-letter state identifier.
cityNamestringnullableCity nearest to the obstacle.
latitudenumbernullableLatitude in decimal degrees.
longitudenumbernullableLongitude in decimal degrees.
obstacleTypestringnullableType of obstacle (e.g., TOWER, BLDG, STACK).
quantityintegernullableNumber of obstacles at this location.
heightAglintegernullableHeight above ground level in feet.
heightAmslintegernullableHeight above mean sea level in feet.
lightingObstacleLightingUnknown | Red | DualMediumWhiteStrobeRed | HighIntensityWhiteStrobeRed | MediumIntensityWhiteStrobe | HighIntensityWhiteStrobe | Flood | DualMediumCatenary | SynchronizedRedLighting | Lighted | None
horizontalAccuracyHorizontalAccuracyUnknown | Within20Feet | Within50Feet | Within100Feet | Within250Feet | Within500Feet | Within1000Feet | WithinHalfNauticalMile | Within1NauticalMile
verticalAccuracyVerticalAccuracyUnknown | Within3Feet | Within10Feet | Within20Feet | Within50Feet | Within125Feet | Within250Feet | Within500Feet | Within1000Feet
markingObstacleMarkingUnknown | OrangeOrOrangeWhitePaint | WhitePaintOnly | Marked | FlagMarker | SphericalMarker | None
verificationStatusVerificationStatusUnknown | Verified | Unverified
404If the obstacle is not foundApiErrorResponse
codestringMachine-readable error code (e.g., "AIRCRAFT_NOT_FOUND").
messagestringHuman-readable error message suitable for display.
detailsstringnullableAdditional error details (only included in development environment).
validationErrorsRecord<string, string[]>nullableField-level validation errors (only for validation failures).
timestampstringUTC timestamp when the error occurred.
traceIdstringnullableCorrelation ID for tracing the request.
pathstringnullableRequest path that generated the error.

Code Examples

curl \
  -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://preflightapi-apim-service.azure-api.net/api/v1/obstacles/12-345678"
POST/api/v1/obstacles/by-oas-numbersPrivate Pilot+

Get By Oas Numbers

Responses

200Returns the matching obstacles
oasNumberstringObstacle Assessment Surface number (unique identifier).
stateIdstringnullableTwo-letter state identifier.
cityNamestringnullableCity nearest to the obstacle.
latitudenumbernullableLatitude in decimal degrees.
longitudenumbernullableLongitude in decimal degrees.
obstacleTypestringnullableType of obstacle (e.g., TOWER, BLDG, STACK).
quantityintegernullableNumber of obstacles at this location.
heightAglintegernullableHeight above ground level in feet.
heightAmslintegernullableHeight above mean sea level in feet.
lightingObstacleLightingUnknown | Red | DualMediumWhiteStrobeRed | HighIntensityWhiteStrobeRed | MediumIntensityWhiteStrobe | HighIntensityWhiteStrobe | Flood | DualMediumCatenary | SynchronizedRedLighting | Lighted | None
horizontalAccuracyHorizontalAccuracyUnknown | Within20Feet | Within50Feet | Within100Feet | Within250Feet | Within500Feet | Within1000Feet | WithinHalfNauticalMile | Within1NauticalMile
verticalAccuracyVerticalAccuracyUnknown | Within3Feet | Within10Feet | Within20Feet | Within50Feet | Within125Feet | Within250Feet | Within500Feet | Within1000Feet
markingObstacleMarkingUnknown | OrangeOrOrangeWhitePaint | WhitePaintOnly | Marked | FlagMarker | SphericalMarker | None
verificationStatusVerificationStatusUnknown | Verified | Unverified
400If the list is empty or exceeds 1000 itemsApiErrorResponse
codestringMachine-readable error code (e.g., "AIRCRAFT_NOT_FOUND").
messagestringHuman-readable error message suitable for display.
detailsstringnullableAdditional error details (only included in development environment).
validationErrorsRecord<string, string[]>nullableField-level validation errors (only for validation failures).
timestampstringUTC timestamp when the error occurred.
traceIdstringnullableCorrelation ID for tracing the request.
pathstringnullableRequest path that generated the error.

Code Examples

curl \
  -X POST \
  -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
  "12-345678",
  "12-345679"
]' \
  "https://preflightapi-apim-service.azure-api.net/api/v1/obstacles/by-oas-numbers"
GET/api/v1/obstacles/bboxPrivate Pilot+

Get By Bounding Box

Returns paginated results of ObstacleDto

Parameters

NameInTypeDescription
minLatquerynumberMinimum latitude (-90 to 90)
maxLatquerynumberMaximum latitude (-90 to 90)
minLonquerynumberMinimum longitude (-180 to 180)
maxLonquerynumberMaximum longitude (-180 to 180)
minHeightAglqueryinteger?Optional minimum height AGL in feet to filter results
cursorquerystring?Cursor from a previous response to fetch the next page.
limitqueryintegerMaximum number of items to return (default 100, max 500).

Responses

200Returns the obstacles foundPaginatedResponseOfObstacleDto
dataObstacleDto[]The page of results.
oasNumberstringObstacle Assessment Surface number (unique identifier).
stateIdstringnullableTwo-letter state identifier.
cityNamestringnullableCity nearest to the obstacle.
latitudenumbernullableLatitude in decimal degrees.
longitudenumbernullableLongitude in decimal degrees.
obstacleTypestringnullableType of obstacle (e.g., TOWER, BLDG, STACK).
quantityintegernullableNumber of obstacles at this location.
heightAglintegernullableHeight above ground level in feet.
heightAmslintegernullableHeight above mean sea level in feet.
lightingObstacleLightingUnknown | Red | DualMediumWhiteStrobeRed | HighIntensityWhiteStrobeRed | MediumIntensityWhiteStrobe | HighIntensityWhiteStrobe | Flood | DualMediumCatenary | SynchronizedRedLighting | Lighted | None
horizontalAccuracyHorizontalAccuracyUnknown | Within20Feet | Within50Feet | Within100Feet | Within250Feet | Within500Feet | Within1000Feet | WithinHalfNauticalMile | Within1NauticalMile
verticalAccuracyVerticalAccuracyUnknown | Within3Feet | Within10Feet | Within20Feet | Within50Feet | Within125Feet | Within250Feet | Within500Feet | Within1000Feet
markingObstacleMarkingUnknown | OrangeOrOrangeWhitePaint | WhitePaintOnly | Marked | FlagMarker | SphericalMarker | None
verificationStatusVerificationStatusUnknown | Verified | Unverified
paginationPaginationMetadataMetadata for cursor-based pagination.
nextCursorstringnullableCursor value to pass for the next page of results (null if no more pages).
hasMorebooleanWhether more results are available beyond this page.
limitintegerMaximum number of items per page.
400If coordinates are invalid or minLat >= maxLatApiErrorResponse
codestringMachine-readable error code (e.g., "AIRCRAFT_NOT_FOUND").
messagestringHuman-readable error message suitable for display.
detailsstringnullableAdditional error details (only included in development environment).
validationErrorsRecord<string, string[]>nullableField-level validation errors (only for validation failures).
timestampstringUTC timestamp when the error occurred.
traceIdstringnullableCorrelation ID for tracing the request.
pathstringnullableRequest path that generated the error.

Code Examples

curl \
  -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://preflightapi-apim-service.azure-api.net/api/v1/obstacles/bbox?minLat=40.0&maxLat=41.0&minLon=-74.5&maxLon=-73.0&minHeightAgl=25&limit=25"