FERC Filing API

Credentialed machine-to-machine submission of XBRL filings.

Operations 4

POST /token Exchange FERC eRegistration credentials for a bearer token #
POST /SubmissionHistory/ExternalFiling Submit a zipped XBRL filing #
GET /claims Get the authenticated filer's claims #
GET /SubmissionHistory List the authenticated filer's submission history #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/ferc-filing-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

ferc-filing-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: FERC eForms (eCollection) Filing API
  version: '2026-07-27'
  description: Machine-readable description of the FERC eForms XBRL API hosted at https://ecollection.ferc.gov/api.
  contact:
    name: FERC Online Support
    url: https://www.ferc.gov/ferc-online/overview
  license:
    name: U.S. Government Work (public domain, 17 U.S.C. 105)
    url: https://data.ferc.gov/disclaimer/
  x-provenance:
    generated: '2026-07-27'
    method: derived
    sources:
    - https://ecollection.ferc.gov/main.6c69ecbce3fd46f494eb.js
    - collections/ferc-xbrl-submission-api.postman_collection.json
    - https://www.ferc.gov/sites/default/files/2020-12/FERC_SubmissionAPI_PROD-Step-by-step-guide_v3.1.pdf
    - live HTTP probes 2026-07-27
    note: Not published by FERC. Derived by API Evangelist from FERC's own production client bundle plus live anonymous probes. Report inaccuracies rather than treating this as an authoritative contract.
servers:
- url: https://ecollection.ferc.gov/api
  description: Production
tags:
- name: Filing
  description: Credentialed machine-to-machine submission of XBRL filings.
paths:
  /token:
    post:
      tags:
      - Filing
      operationId: getFilerToken
      summary: Exchange FERC eRegistration credentials for a bearer token
      description: OAuth 2.0 Resource Owner Password Credentials grant (RFC 6749 section 4.3). Credentials are the filer's FERC eRegistration / Company Registration username (email) and password; the filer must be authorized to submit for the company. Documented in FERC's Postman collection and step-by-step guide.
      security: []
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
              - username
              - password
              - grant_type
              - role
              properties:
                username:
                  type: string
                  description: Email address of the filer, eligible to submit for the company.
                password:
                  type: string
                  format: password
                grant_type:
                  type: string
                  const: password
                role:
                  type: string
                  const: filer
      responses:
        '200':
          description: Bearer token issued.
        '400':
          description: 'Grant or credential failure. Observed bodies: `{"error":"unsupported_grant_type"}` on a GET/empty body, and `{"error":"Failed validating user in company registration"}` for an unregistered filer.'
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
      x-evidence:
        probed: '2026-07-27'
        method: GET (no body)
        status: 400
        body: '{"error":"unsupported_grant_type"}'
        source: collections/ferc-xbrl-submission-api.postman_collection.json
  /SubmissionHistory/ExternalFiling:
    post:
      tags:
      - Filing
      operationId: postExternalFiling
      summary: Submit a zipped XBRL filing
      description: Machine-to-machine submission of a FERC eForms XBRL filing. Requires the bearer token from POST /token. Parameter semantics and the numeric form mapping are taken verbatim from FERC's published step-by-step guide.
      security:
      - filerBearer: []
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
              - zipFiling
              - cid
              - reportYear
              - reportPeriod
              - email
              - form
              properties:
                zipFiling:
                  type: string
                  format: binary
                  description: Zip archive containing the XBRL instance and any additional files required by the XBRL specification. Only the .zip extension is accepted.
                cid:
                  type: string
                  description: Company CID from FERC Company Registration, e.g. C006939.
                  examples:
                  - C006939
                reportYear:
                  type: string
                  description: Four-digit report year the filing is made for.
                reportPeriod:
                  type: string
                  description: Q1, Q2 or Q3 for quarterly forms; Q4 for annual forms.
                  enum:
                  - Q1
                  - Q2
                  - Q3
                  - Q4
                email:
                  type: string
                  format: email
                  description: Email address of the filer, eligible to submit for the company.
                form:
                  type: string
                  description: Numeric form identifier. Published mapping — Form 1:1, Form 1F:2, Form 3Q Electric:3, Form 2:4, Form 2A:5, Form 3Q Natural Gas:6, Form 6:7, Form 6Q:8, Form 60:9, Form 714:10.
                  enum:
                  - '1'
                  - '2'
                  - '3'
                  - '4'
                  - '5'
                  - '6'
                  - '7'
                  - '8'
                  - '9'
                  - '10'
                test:
                  type: string
                  description: Indicate whether this is a test submission.
                  enum:
                  - 'true'
                  - 'false'
                additionalNotes:
                  type: string
                  description: Notes accompanying the submission.
      responses:
        '200':
          description: Submission accepted for processing.
        '401':
          description: Missing or invalid bearer token.
      x-evidence:
        probed: false
        note: Write endpoint against production regulatory filing; deliberately NOT exercised. Described from FERC's published Postman collection and step-by-step guide only.
        source: https://www.ferc.gov/vendor-files-library
  /claims:
    get:
      tags:
      - Filing
      operationId: getFilerClaims
      summary: Get the authenticated filer's claims
      description: Credentialed. Returns 401 `{"message":"Authorization has been denied for this request."}` anonymously; the response body for an authenticated caller was not observed and is deliberately not described.
      security:
      - filerBearer: []
      responses:
        '200':
          description: Filer claims. Shape not observed.
        '401':
          description: Authorization denied.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      x-evidence:
        probed: '2026-07-27'
        status: 401
  /SubmissionHistory:
    get:
      tags:
      - Filing
      operationId: listFilerSubmissionHistory
      summary: List the authenticated filer's submission history
      description: Credentialed. Returns 401 anonymously; the authenticated response shape was not observed and is deliberately not described.
      security:
      - filerBearer: []
      responses:
        '200':
          description: Filer submission history. Shape not observed.
        '401':
          description: Authorization denied.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      x-evidence:
        probed: '2026-07-27'
        status: 401
components:
  schemas:
    Error:
      type: object
      properties:
        message:
          type: string
        error:
          type: string
  securitySchemes:
    filerBearer:
      type: http
      scheme: bearer
      description: Bearer token issued by POST /token via the OAuth 2.0 password grant with role=filer.