FIRMS Missing Data API

Identifies dates for which satellite fire detection data is absent from the database, organized by satellite and data type. Each response line represents one day of missing data for a particular sensor. Near Real-Time entries only appear for dates beyond the final standard processing date for each satellite.

OpenAPI Specification

nasa-firms-openapi.yml Raw ↑
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