> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cleanview.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Gas Plants

> Retrieve behind-the-meter gas plants built to power data centers, with status and capacity rolled up from their units

<Note>
  The BTM gas plant endpoints require the `gas-plants` scope on your API key. A key without it gets `403 INSUFFICIENT_SCOPE`. [Contact us](https://cleanview.co/demo) to add it.
</Note>

## Overview

Data centers that can't wait for the grid are building their own gas plants. This endpoint returns one record per behind-the-meter gas plant built to power a data center. A plant is behind the meter when its power goes straight to the data center instead of through a utility meter.

Each record has the plant's developer, status, capacity, the data center campus it powers, its location, its air permit, and the documents Cleanview archived for it.

This is a "download link" style endpoint that returns all records in a single response. There is no pagination.

### Plants and Units

A plant is one generation site. Its equipment is broken into units on [Gas Plant Units](/api-reference/endpoint/gas-plant-units), linked by `plant_id`. A unit is one equipment model at one stage of the build, with its own count, capacity, status and year. A plant with two engine models, each installed in two stages, has four units.

The plant's status and capacity on this endpoint are rolled up from its units. The campus it powers is on [Data Center Campuses](/api-reference/endpoint/data-center-campuses), linked by `campus_id`.

### Status Values

Each unit has its own status. A plant shows the status of its most advanced unit that isn't canceled, so a plant with an operating first stage and a second stage under construction is `Operating`. A plant is `Canceled` only when every unit is.

| Status | Description |
| - | - |
| `Announced` | Announced or applied for. No air permit or siting approval has been issued |
| `Permitted` | An air permit or state siting approval has been issued, but construction hasn't started |
| `Under Construction` | Work on the generation equipment is underway: foundations, equipment on pads, stacks. Clearing and grading don't count |
| `Operating` | Generating power for its data center, including temporary bridge power |
| `Canceled` | The project won't be built |

### Capacity

`nameplate_capacity_mw` is the number of machines times the manufacturer's rating for each machine, summed over the units that aren't canceled. Manufacturers rate gas turbines at 59°F at sea level and engines at 77°F. So one machine has one rating wherever it's installed, and nameplate adds up across plants and manufacturers. A plant's real output on a hot day or at altitude is lower.

`operating_capacity_mw`, `under_construction_capacity_mw`, `permitted_capacity_mw` and `announced_capacity_mw` split the nameplate capacity by unit status, so they add up to it. When `capacity_is_partial` is `true`, some units have no known capacity yet, and the capacity fields are a minimum.

`firm_output_mw` is the power the plant is contracted, permitted or stated to deliver to its data center. It's usually 55% to 85% of nameplate, because of heat, altitude, the plant's own load and spare machines. It's only given when a document states it, and never estimated. `firm_output_basis` names the kind of document:

| Basis | Description |
| - | - |
| `contracted` | A contract figure stated in a filing |
| `permit_limit` | A permit or siting condition on the power the plant can deliver |
| `net_capacity` | A grid-connected plant's net capacity, from the EIA or a commission order |
| `developer_stated` | The developer's own statement of the power the plant delivers |

### Air Permits and Sources

`air_permit_url` is Cleanview's copy of the plant's issued air permit, or its latest amendment, once the plant is `Permitted`, `Under Construction` or `Operating`. `sources` lists every document Cleanview archived for the plant, newest first, including permit applications and drafts. Each `url` is Cleanview's archived copy, so it keeps working if the original is taken down. `original_url` is where the document was first published.

## Example Requests

<AccordionGroup>
  <Accordion title="Get All Gas Plants">
    ```bash theme={null}
    curl -H "x-api-key: your_api_key_here" \
      "https://api.cleanview.co/api/v1/gas-plants"
    ```

    Returns all gas plant records in a single response.
  </Accordion>
</AccordionGroup>

## Response Schema

<ResponseExample>
  ```json Example Response theme={null}
  {
    "success": true,
    "metadata": {
      "total_count": 110,
      "generated_at": "2026-10-15T16:00:00.000Z"
    },
    "customer": {
      "id": "test_user_001",
      "name": "Test Developer"
    },
    "data": [
      {
        "id": 88,
        "plant_name": "Apollo Power Generation Facility",
        "developer": "Williams",
        "status": "Under Construction",
        "nameplate_capacity_mw": 493.1,
        "operating_capacity_mw": null,
        "under_construction_capacity_mw": 493.1,
        "permitted_capacity_mw": null,
        "announced_capacity_mw": null,
        "capacity_is_partial": false,
        "generating_units": 27,
        "firm_output_mw": 350,
        "firm_output_basis": "permit_limit",
        "first_operating_year": 2027,
        "announcement_date": "2025-11-05",
        "equipment_types": "Gas turbine, Reciprocating engine",
        "oems": "Caterpillar, Siemens Energy, Solar Turbines",
        "campus_id": 243,
        "campus_name": "Meta Bowling Green",
        "county": "Wood",
        "state": "OH",
        "latitude": 41.463279,
        "longitude": -83.626865,
        "air_permit_url": "https://storage.googleapis.com/data-center-source-files/gas-plants/88__meta-bowling-green-power-plant/2026-06-02_air-permit_ohio-epa-final-pti-p0139272-will-power-oh-apollo.pdf",
        "sources": [
          {
            "title": "Final Air Pollution Permit-to-Install P0139272, Will-Power OH LLC - Apollo",
            "document_type": "air-permit",
            "document_date": "2026-06-02",
            "url": "https://storage.googleapis.com/data-center-source-files/gas-plants/88__meta-bowling-green-power-plant/2026-06-02_air-permit_ohio-epa-final-pti-p0139272-will-power-oh-apollo.pdf",
            "original_url": "https://edocpub.epa.ohio.gov/publicportal/ViewDocument.aspx?docid=4139063"
          }
        ]
      }
    ]
  }
  ```
</ResponseExample>

## Response Fields

### Metadata Section

| Field | Type | Description |
| - | - | - |
| `success` | boolean | Indicates if the request was successful |
| `total_count` | number | Total number of plant records returned |
| `generated_at` | string | ISO 8601 timestamp when response was generated |

### Gas Plant Fields

| Field | Type | Description |
| - | - | - |
| `id` | number | Unique identifier for the plant. Units carry it as `plant_id` |
| `plant_name` | string | The plant's name in its permit, siting case or announcement; otherwise the data center's name followed by "power plant" |
| `developer` | string | Company that builds and owns the plant. Often not the data center developer: Williams builds Meta's plants in Ohio |
| `status` | string | Status of the plant's most advanced unit that isn't canceled (see Status Values) |
| `nameplate_capacity_mw` | number | Number of machines × the manufacturer's rating, summed over the units that aren't canceled (MW) |
| `operating_capacity_mw` | number | Nameplate capacity of the operating units (MW) |
| `under_construction_capacity_mw` | number | Nameplate capacity of the units under construction (MW) |
| `permitted_capacity_mw` | number | Nameplate capacity of the permitted units (MW) |
| `announced_capacity_mw` | number | Nameplate capacity of the announced units (MW) |
| `capacity_is_partial` | boolean | `true` when some units have no known capacity yet, so the capacity fields are a minimum |
| `generating_units` | number | Number of turbines, engines and fuel cell servers that aren't canceled. A minimum when a unit's count isn't public |
| `firm_output_mw` | number | Power the plant is contracted, permitted or stated to deliver to its data center (MW). Only given when a document states it |
| `firm_output_basis` | string | The kind of document behind `firm_output_mw`: `contracted`, `permit_limit`, `net_capacity` or `developer_stated` |
| `first_operating_year` | number | Year the plant's first unit began generating, or Cleanview's estimate of when it will |
| `announcement_date` | string | Date of the first public record of the plant (YYYY-MM-DD) |
| `equipment_types` | string | Kinds of equipment at the plant, comma-separated: Gas turbine, Steam turbine, Reciprocating engine, Fuel cell |
| `oems` | string | Equipment manufacturers at the plant, comma-separated |
| `campus_id` | number | The data center campus the plant powers, as `id` in Data Center Campuses |
| `campus_name` | string | Name of the data center campus the plant powers |
| `county` | string | County where the plant's generation equipment is |
| `state` | string | Two-letter state code |
| `latitude` | number | Latitude of the plant's generation equipment, not the data center campus |
| `longitude` | number | Longitude of the plant's generation equipment, not the data center campus |
| `air_permit_url` | string | Cleanview's archived copy of the plant's issued air permit, or its latest amendment. `null` until the plant is permitted |
| `sources` | array | Every document Cleanview archived for the plant, newest first: `title`, `document_type`, `document_date`, `url` (Cleanview's copy) and `original_url` |

<Note>
  **Null Values**: `null` means Cleanview doesn't know the value yet, not zero. A capacity field is `null` when no unit in it has a capacity, including when the plant has no units with that status. `campus_id` is `null` when the campus the plant powers isn't in Data Center Campuses; `campus_name` is still given. `equipment_types` and `oems` are `null` until the equipment is public.
</Note>

## Data Updates

Plant figures are computed from the unit records in [Gas Plant Units](/api-reference/endpoint/gas-plant-units) on every request, so the two endpoints always agree.


## OpenAPI

````yaml GET /gas-plants
openapi: 3.0.0
info:
  title: Cleanview Public API
  version: 0.1.0
  description: >-
    RESTful API for tracking data centers and power projects, including
    Cleanview's data center database, EIA records, and ISO interconnection queue
    data
  contact:
    name: Cleanview Energy
    url: https://cleanview.co/demo
servers:
  - url: https://api.cleanview.co/api/v1
    description: Production server
security:
  - ApiKeyAuth: []
paths:
  /gas-plants:
    get:
      tags:
        - BTM Gas Plants
      summary: Get all behind-the-meter gas plants
      description: >-
        Returns every behind-the-meter gas plant built to power a data center as
        a single JSON response. A plant's status and capacity are rolled up from
        its units; canceled units are left out of every capacity figure. Units
        are on /gas-plant-units, linked by plant_id; the campus served is on
        /data-center-campuses, linked by campus_id. This is a download link
        style endpoint with no pagination. Requires the gas-plants scope.
      parameters: []
      responses:
        '200':
          description: Successful response with all gas plants
          content:
            application/json:
              schema:
                type: object
                required:
                  - success
                  - metadata
                  - customer
                  - data
                properties:
                  success:
                    type: boolean
                    description: Always true for successful responses
                    example: true
                  metadata:
                    type: object
                    properties:
                      total_count:
                        type: integer
                        description: Total number of records
                        example: 110
                      generated_at:
                        type: string
                        format: date-time
                        description: Timestamp when the response was generated
                        example: '2026-10-15T16:00:00.000Z'
                  customer:
                    type: object
                    description: Customer information for the API key
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/GasPlant'
                    description: Array of all gas plants
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: The API key doesn't include the gas-plants scope
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - ApiKeyAuth: []
components:
  schemas:
    GasPlant:
      type: object
      description: >-
        Behind-the-meter gas plant built to power a data center, with status and
        capacity rolled up from its units (canceled units left out of capacity)
      properties:
        id:
          type: integer
          description: Unique identifier for the plant. Units carry it as `plant_id`
        plant_name:
          type: string
          description: >-
            The plant's name in its permit, siting case or announcement;
            otherwise the data center's name followed by "power plant"
        developer:
          type: string
          nullable: true
          description: >-
            Company that builds and owns the plant. Often not the data center
            developer: Williams builds Meta's plants in Ohio
        status:
          type: string
          enum:
            - Announced
            - Permitted
            - Under Construction
            - Operating
            - Canceled
          description: >-
            Status of the plant's most advanced unit that isn't canceled (see
            Status Values)
        nameplate_capacity_mw:
          type: number
          nullable: true
          description: >-
            Number of machines × the manufacturer's rating, summed over the
            units that aren't canceled (MW)
        operating_capacity_mw:
          type: number
          nullable: true
          description: Nameplate capacity of the operating units (MW)
        under_construction_capacity_mw:
          type: number
          nullable: true
          description: Nameplate capacity of the units under construction (MW)
        permitted_capacity_mw:
          type: number
          nullable: true
          description: Nameplate capacity of the permitted units (MW)
        announced_capacity_mw:
          type: number
          nullable: true
          description: Nameplate capacity of the announced units (MW)
        capacity_is_partial:
          type: boolean
          description: >-
            `true` when some units have no known capacity yet, so the capacity
            fields are a minimum
        generating_units:
          type: integer
          nullable: true
          description: >-
            Number of turbines, engines and fuel cell servers that aren't
            canceled. A minimum when a unit's count isn't public
        firm_output_mw:
          type: number
          nullable: true
          description: >-
            Power the plant is contracted, permitted or stated to deliver to its
            data center (MW). Only given when a document states it
        firm_output_basis:
          type: string
          nullable: true
          enum:
            - contracted
            - permit_limit
            - net_capacity
            - developer_stated
            - null
          description: >-
            The kind of document behind `firm_output_mw`: `contracted`,
            `permit_limit`, `net_capacity` or `developer_stated`
        first_operating_year:
          type: integer
          nullable: true
          description: >-
            Year the plant's first unit began generating, or Cleanview's
            estimate of when it will
        announcement_date:
          type: string
          nullable: true
          format: date
          description: Date of the first public record of the plant (YYYY-MM-DD)
        equipment_types:
          type: string
          nullable: true
          description: >-
            Kinds of equipment at the plant, comma-separated: Gas turbine, Steam
            turbine, Reciprocating engine, Fuel cell
        oems:
          type: string
          nullable: true
          description: Equipment manufacturers at the plant, comma-separated
        campus_id:
          type: integer
          nullable: true
          description: >-
            The data center campus the plant powers, as `id` in Data Center
            Campuses
        campus_name:
          type: string
          nullable: true
          description: Name of the data center campus the plant powers
        county:
          type: string
          nullable: true
          description: County where the plant's generation equipment is
        state:
          type: string
          nullable: true
          pattern: ^[A-Z]{2}$
          description: Two-letter state code
        latitude:
          type: number
          nullable: true
          description: >-
            Latitude of the plant's generation equipment, not the data center
            campus
        longitude:
          type: number
          nullable: true
          description: >-
            Longitude of the plant's generation equipment, not the data center
            campus
        air_permit_url:
          type: string
          nullable: true
          format: uri
          description: >-
            Cleanview's archived copy of the plant's issued air permit, or its
            latest amendment. `null` until the plant is permitted
        sources:
          type: array
          description: >-
            Every document Cleanview archived for the plant, newest first:
            `title`, `document_type`, `document_date`, `url` (Cleanview's copy)
            and `original_url`
          items:
            type: object
            properties:
              title:
                type: string
                nullable: true
                description: Title of the document
              document_type:
                type: string
                enum:
                  - air-permit
                  - building-permit
                  - developer-website
                  - economic-development
                  - investor-presentation
                  - news
                  - other
                  - parcel
                  - planning-minutes
                  - press-release
                  - rezoning
                  - sec-filing
                  - site-plan
                  - utility-filing
                description: Kind of document
              document_date:
                type: string
                nullable: true
                format: date
                description: Date of the document (YYYY-MM-DD)
              url:
                type: string
                format: uri
                description: Cleanview's archived copy
              original_url:
                type: string
                nullable: true
                format: uri
                description: Where the document was first published
      example:
        id: 88
        plant_name: Apollo Power Generation Facility
        developer: Williams
        status: Under Construction
        nameplate_capacity_mw: 493.1
        operating_capacity_mw: null
        under_construction_capacity_mw: 493.1
        permitted_capacity_mw: null
        announced_capacity_mw: null
        capacity_is_partial: false
        generating_units: 27
        firm_output_mw: 350
        firm_output_basis: permit_limit
        first_operating_year: 2027
        announcement_date: '2025-11-05'
        equipment_types: Gas turbine, Reciprocating engine
        oems: Caterpillar, Siemens Energy, Solar Turbines
        campus_id: 243
        campus_name: Meta Bowling Green
        county: Wood
        state: OH
        latitude: 41.463279
        longitude: -83.626865
        air_permit_url: >-
          https://storage.googleapis.com/data-center-source-files/gas-plants/88__meta-bowling-green-power-plant/2026-06-02_air-permit_ohio-epa-final-pti-p0139272-will-power-oh-apollo.pdf
        sources:
          - title: >-
              Final Air Pollution Permit-to-Install P0139272, Will-Power OH LLC
              - Apollo
            document_type: air-permit
            document_date: '2026-06-02'
            url: >-
              https://storage.googleapis.com/data-center-source-files/gas-plants/88__meta-bowling-green-power-plant/2026-06-02_air-permit_ohio-epa-final-pti-p0139272-will-power-oh-apollo.pdf
            original_url: >-
              https://edocpub.epa.ohio.gov/publicportal/ViewDocument.aspx?docid=4139063
    Error:
      type: object
      description: Standardized error response structure
      required:
        - error
        - message
      properties:
        error:
          type: string
          description: Error code identifier for programmatic handling
          enum:
            - INVALID_API_KEY
            - API_KEY_NOT_FOUND
            - INVALID_LIMIT
            - INVALID_OFFSET
            - INVALID_STATUS
            - INVALID_CAPACITY
            - INVALID_TECHNOLOGY
            - INVALID_STATES
            - INVALID_DATE
            - INVALID_DATE_RANGE
            - INVALID_BOOLEAN
            - DATABASE_ERROR
            - INTERNAL_ERROR
          example: INVALID_LIMIT
        message:
          type: string
          description: Human-readable error description
          example: Limit must be at least 50 records per request
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: API key authentication using x-api-key header

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.