openapi: 3.0.3
info:
title: NASA FIRMS API
description: >
NASA Fire Information for Resource Management System (FIRMS) REST API
providing near-real-time satellite fire detections globally from MODIS
(Terra/Aqua), VIIRS (S-NPP, NOAA-20, NOAA-21), and LANDSAT instruments.
Data is available within 3 hours of satellite observation worldwide, with
Ultra Real-Time detections available within 60 seconds for the US and
Canada. Supports area-based bounding box queries, KML fire footprints by
region, data availability checks, and missing data identification. A free
MAP_KEY obtained via registration is required for most endpoints.
version: '4.0'
contact:
name: NASA FIRMS Support
url: https://firms.modaps.eosdis.nasa.gov/contact/
termsOfService: https://www.earthdata.nasa.gov/engage/open-data-services-and-software/data-and-information-policy
license:
name: NASA Open Data
url: https://www.earthdata.nasa.gov/engage/open-data-services-and-software/data-and-information-policy
servers:
- url: https://firms.modaps.eosdis.nasa.gov
description: NASA FIRMS production server
tags:
- name: Area Fire Detections
description: Active fire hotspot detections within a bounding box area
- name: KML Fire Footprints
description: KMZ files containing color-coded fire footprint polygons by region
- name: Data Availability
description: Check which dates have Standard Processing or Near Real-Time data
- name: Missing Data
description: Identify dates with absent satellite fire detection data
paths:
/api/area/csv/{map_key}/{source}/{area_coordinates}/{day_range}:
get:
operationId: getAreaFireDetections
summary: Get area fire detections (most recent)
description: >
Returns active fire detection hotspots within the specified bounding box
for the most recent DAY_RANGE days (today back to today minus DAY_RANGE-1).
Results are returned in CSV format.
tags:
- Area Fire Detections
parameters:
- $ref: '#/components/parameters/MapKey'
- $ref: '#/components/parameters/Source'
- $ref: '#/components/parameters/AreaCoordinates'
- $ref: '#/components/parameters/DayRange'
responses:
'200':
description: CSV fire detection data
content:
text/csv:
schema:
$ref: '#/components/schemas/FireDetectionCSV'
example: |
latitude,longitude,brightness,scan,track,acq_date,acq_time,satellite,confidence,version,bright_t31,frp,daynight
-12.345,-67.890,325.6,1.0,1.0,2026-06-12,1345,Terra,h,6.1NRT,290.3,15.2,D
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/RateLimitExceeded'
/api/area/csv/{map_key}/{source}/{area_coordinates}/{day_range}/{date}:
get:
operationId: getAreaFireDetectionsByDate
summary: Get area fire detections starting from a specific date
description: >
Returns active fire detection hotspots within the specified bounding box
starting from the given DATE and spanning DAY_RANGE days forward
(DATE to DATE + DAY_RANGE - 1). Results are returned in CSV format.
tags:
- Area Fire Detections
parameters:
- $ref: '#/components/parameters/MapKey'
- $ref: '#/components/parameters/Source'
- $ref: '#/components/parameters/AreaCoordinates'
- $ref: '#/components/parameters/DayRange'
- name: date
in: path
required: true
description: Start date for the query in YYYY-MM-DD format.
schema:
type: string
format: date
example: '2026-06-01'
responses:
'200':
description: CSV fire detection data for the specified date range
content:
text/csv:
schema:
$ref: '#/components/schemas/FireDetectionCSV'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/RateLimitExceeded'
/api/kml_fire_footprints/{region}/{date_span}/{sensor}/{filename}:
get:
operationId: getKmlFireFootprints
summary: Get KML fire footprints by region
description: >
Returns a KMZ file containing color-coded fire footprint polygons for
a predefined global region and time span. Footprints are color-coded
by detection age: 0-6h, 6-12h, 12-24h, and 24h+.
tags:
- KML Fire Footprints
parameters:
- $ref: '#/components/parameters/Region'
- $ref: '#/components/parameters/DateSpan'
- $ref: '#/components/parameters/KmlSensor'
- name: filename
in: path
required: true
description: >
KMZ filename in the pattern
FirespotArea_{region}_{sensor}_{date_span}.kmz
schema:
type: string
example: FirespotArea_canada_c6.1_24h.kmz
responses:
'200':
description: KMZ file with fire footprint polygons
content:
application/vnd.google-earth.kmz:
schema:
type: string
format: binary
'400':
$ref: '#/components/responses/BadRequest'
'404':
$ref: '#/components/responses/NotFound'
/api/kml_fire_footprints/:
get:
operationId: getKmlFireFootprintsQuery
summary: Get KML fire footprints via query parameters
description: >
Returns a KMZ file containing color-coded fire footprint polygons for
a predefined global region and time span. This variant uses query
parameters instead of path segments.
tags:
- KML Fire Footprints
parameters:
- name: region
in: query
required: true
description: Predefined geographic region.
schema:
$ref: '#/components/schemas/RegionEnum'
- name: date_span
in: query
required: true
description: Time span of fire detections to include.
schema:
$ref: '#/components/schemas/DateSpanEnum'
- name: sensor
in: query
required: true
description: Satellite sensor source.
schema:
$ref: '#/components/schemas/KmlSensorEnum'
responses:
'200':
description: KMZ file with fire footprint polygons
content:
application/vnd.google-earth.kmz:
schema:
type: string
format: binary
'400':
$ref: '#/components/responses/BadRequest'
/api/data_availability/csv/{map_key}/{sensor}:
get:
operationId: getDataAvailability
summary: Get data availability by sensor
description: >
Returns CSV data indicating which dates have Standard Processing (SP)
and Near Real-Time (NRT) data available for a specified sensor.
Use ALL to retrieve availability for every sensor in a single call.
tags:
- Data Availability
parameters:
- $ref: '#/components/parameters/MapKey'
- name: sensor
in: path
required: true
description: >
Sensor identifier. Use ALL to retrieve availability for all sensors.
schema:
$ref: '#/components/schemas/SensorWithAllEnum'
responses:
'200':
description: CSV data availability by date and processing type
content:
text/csv:
schema:
$ref: '#/components/schemas/DataAvailabilityCSV'
example: |
sensor,date,sp,nrt
MODIS_NRT,2026-06-12,false,true
MODIS_SP,2026-06-10,true,false
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/RateLimitExceeded'
/api/missing_data/{map_key}:
get:
operationId: getMissingData
summary: Get dates with missing satellite data
description: >
Identifies dates for which satellite fire detection data is absent from
the FIRMS database, organized by satellite and data type. Near
Real-Time entries only appear for dates beyond the final standard
processing date for each satellite.
tags:
- Missing Data
parameters:
- $ref: '#/components/parameters/MapKey'
responses:
'200':
description: CSV list of missing data dates by sensor
content:
text/csv:
schema:
$ref: '#/components/schemas/MissingDataCSV'
example: |
satellite,data_type,date
Terra,NRT,2026-05-15
Aqua,SP,2026-04-22
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
components:
parameters:
MapKey:
name: map_key
in: path
required: true
description: >
Free MAP_KEY obtained via registration at
https://firms.modaps.eosdis.nasa.gov/api/map_key/. Rate limited to
5000 transactions per 10-minute interval. Larger requests (e.g., 7-day
queries) may count as multiple transactions.
schema:
type: string
example: 'd2b4a9e1f3c75820b6da1e4f9c0b3721'
Source:
name: source
in: path
required: true
description: Satellite sensor data source.
schema:
$ref: '#/components/schemas/SourceEnum'
AreaCoordinates:
name: area_coordinates
in: path
required: true
description: >
Bounding box in west,south,east,north format (decimal degrees), or the
string "world" for global coverage [-180,-90,180,90].
schema:
type: string
example: '-85,-57,-32,14'
DayRange:
name: day_range
in: path
required: true
description: Number of days to include in the query (1 to 5).
schema:
type: integer
minimum: 1
maximum: 5
example: 2
Region:
name: region
in: path
required: true
description: Predefined geographic region.
schema:
$ref: '#/components/schemas/RegionEnum'
DateSpan:
name: date_span
in: path
required: true
description: Time span of fire detections to include.
schema:
$ref: '#/components/schemas/DateSpanEnum'
KmlSensor:
name: sensor
in: path
required: true
description: Satellite sensor source for KML footprints.
schema:
$ref: '#/components/schemas/KmlSensorEnum'
schemas:
SourceEnum:
type: string
description: Satellite sensor data source identifier.
enum:
- LANDSAT_NRT
- MODIS_NRT
- MODIS_SP
- VIIRS_NOAA20_NRT
- VIIRS_NOAA20_SP
- VIIRS_NOAA21_NRT
- VIIRS_SNPP_NRT
- VIIRS_SNPP_SP
example: VIIRS_SNPP_NRT
SensorWithAllEnum:
type: string
description: Satellite sensor identifier, or ALL for all sensors.
enum:
- ALL
- LANDSAT_NRT
- MODIS_NRT
- MODIS_SP
- VIIRS_NOAA20_NRT
- VIIRS_NOAA20_SP
- VIIRS_NOAA21_NRT
- VIIRS_SNPP_NRT
- VIIRS_SNPP_SP
example: ALL
RegionEnum:
type: string
description: Predefined geographic region for KML fire footprints.
enum:
- canada
- alaska
- usa_contiguous_and_hawaii
- central_america
- south_america
- europe
- northern_and_central_africa
- southern_africa
- russia_asia
- south_asia
- southeast_asia
- australia_newzealand
example: south_america
DateSpanEnum:
type: string
description: Time span for KML fire footprint queries.
enum:
- 24h
- 48h
- 72h
- 7d
example: 24h
KmlSensorEnum:
type: string
description: Satellite sensor source for KML footprint data.
enum:
- c6.1
- landsat
- suomi-npp-viirs-c2
- noaa-20-viirs-c2
- noaa-21-viirs-c2
example: c6.1
FireDetectionCSV:
type: string
description: >
CSV-formatted active fire detection data. Columns vary by sensor but
typically include latitude, longitude, brightness temperature, scan
size, track size, acquisition date/time, satellite name, confidence
level, version, brightness T31, fire radiative power (FRP), and
day/night flag.
example: |
latitude,longitude,brightness,scan,track,acq_date,acq_time,satellite,confidence,version,bright_t31,frp,daynight
-12.345,-67.890,325.6,1.0,1.0,2026-06-12,1345,Terra,h,6.1NRT,290.3,15.2,D
DataAvailabilityCSV:
type: string
description: >
CSV-formatted data availability report indicating whether SP (Standard
Processing) and NRT (Near Real-Time) data exist for each date per
sensor.
example: |
sensor,date,sp,nrt
MODIS_NRT,2026-06-12,false,true
MissingDataCSV:
type: string
description: >
CSV-formatted list of dates with missing satellite fire detection data,
organized by satellite and data type. NRT entries only appear for dates
beyond the last standard processing date.
example: |
satellite,data_type,date
Terra,NRT,2026-05-15
responses:
BadRequest:
description: Bad request — invalid or missing parameters.
content:
text/plain:
schema:
type: string
Unauthorized:
description: Unauthorized — MAP_KEY is missing, invalid, or quota exceeded.
content:
text/plain:
schema:
type: string
NotFound:
description: Not found — the requested resource does not exist.
content:
text/plain:
schema:
type: string
RateLimitExceeded:
description: >
Rate limit exceeded — more than 5000 transactions in a 10-minute
interval. Retry after the interval resets.
content:
text/plain:
schema:
type: string