Consumer Financial Protection Bureau (CFPB) Submissions API

HMDA data submission management

Operations 6

POST /institutions/{lei}/filings/{period}/submissions Create new submission
GET /institutions/{lei}/filings/{period}/submissions/latest Get latest submission
POST /institutions/{lei}/filings/{period}/submissions/{submissionId} Upload HMDA data file
GET /institutions/{lei}/filings/{period}/submissions/{submissionId}/sign Get submission signature receipt
POST /institutions/{lei}/filings/{period}/submissions/{submissionId}/sign Sign submission
GET /institutions/{lei}/filings/{period}/submissions/{submissionId}/summary Get submission summary

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/cfpb-submissions-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

cfpb-submissions-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 1.0.0
  title: HMDA Platform Filing Submissions API
  description: Enables financial institutions to submit Home Mortgage Disclosure Act (HMDA) data programmatically to the FFIEC HMDA Platform. Provides endpoints for filing submissions, uploading loan application register (LAR) files, checking submission status, and retrieving edit reports for regulatory compliance.
  contact:
    name: FFIEC HMDA Help
    url: https://ffiec.cfpb.gov/
  license:
    name: Creative Commons CC0
    url: https://creativecommons.org/publicdomain/zero/1.0/
servers:
- url: https://ffiec.cfpb.gov
  description: Production server
security:
- bearerAuth: []
tags:
- name: Submissions
  description: HMDA data submission management
paths:
  /institutions/{lei}/filings/{period}/submissions:
    post:
      tags:
      - Submissions
      summary: Create new submission
      description: Creates a new submission for the filing identified by LEI and period
      parameters:
      - $ref: '#/components/parameters/lei'
      - $ref: '#/components/parameters/period'
      responses:
        '201':
          description: Submission created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Submission'
        '400':
          description: Bad request
  /institutions/{lei}/filings/{period}/submissions/latest:
    get:
      tags:
      - Submissions
      summary: Get latest submission
      description: Returns the most recent submission for the given institution and filing period
      parameters:
      - $ref: '#/components/parameters/lei'
      - $ref: '#/components/parameters/period'
      responses:
        '200':
          description: Latest submission details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Submission'
        '404':
          description: No submissions found
  /institutions/{lei}/filings/{period}/submissions/{submissionId}:
    post:
      tags:
      - Submissions
      summary: Upload HMDA data file
      description: Uploads a HMDA LAR (Loan Application Register) file for the given submission
      parameters:
      - $ref: '#/components/parameters/lei'
      - $ref: '#/components/parameters/period'
      - $ref: '#/components/parameters/submissionId'
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
                  description: HMDA LAR file (pipe-delimited format)
      responses:
        '200':
          description: File uploaded successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Submission'
        '400':
          description: Invalid file format
        '404':
          description: Submission not found
  /institutions/{lei}/filings/{period}/submissions/{submissionId}/sign:
    get:
      tags:
      - Submissions
      summary: Get submission signature receipt
      description: Returns the signature receipt for a submission
      parameters:
      - $ref: '#/components/parameters/lei'
      - $ref: '#/components/parameters/period'
      - $ref: '#/components/parameters/submissionId'
      responses:
        '200':
          description: Submission receipt
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SignatureReceipt'
        '404':
          description: Submission not found
    post:
      tags:
      - Submissions
      summary: Sign submission
      description: Signs and finalizes a submission after all edits have been verified
      parameters:
      - $ref: '#/components/parameters/lei'
      - $ref: '#/components/parameters/period'
      - $ref: '#/components/parameters/submissionId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                signed:
                  type: boolean
                  description: Whether the submission is being signed
      responses:
        '200':
          description: Submission signed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SignatureReceipt'
        '400':
          description: Submission cannot be signed (edits not verified)
        '404':
          description: Submission not found
  /institutions/{lei}/filings/{period}/submissions/{submissionId}/summary:
    get:
      tags:
      - Submissions
      summary: Get submission summary
      description: Returns submission details plus transmittal sheet information
      parameters:
      - $ref: '#/components/parameters/lei'
      - $ref: '#/components/parameters/period'
      - $ref: '#/components/parameters/submissionId'
      responses:
        '200':
          description: Submission summary with transmittal sheet
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubmissionSummary'
        '404':
          description: Submission not found
components:
  schemas:
    Submission:
      type: object
      properties:
        id:
          type: string
          description: Submission identifier
        status:
          $ref: '#/components/schemas/SubmissionStatus'
        start:
          type: integer
          format: int64
          description: Unix timestamp when submission started
        end:
          type: integer
          format: int64
          description: Unix timestamp when submission ended
    SignatureReceipt:
      type: object
      properties:
        timestamp:
          type: integer
          format: int64
          description: Unix timestamp of signing
        receipt:
          type: string
          description: Receipt code
        status:
          $ref: '#/components/schemas/SubmissionStatus'
    SubmissionStatus:
      type: object
      properties:
        code:
          type: integer
          description: Status code
        message:
          type: string
          description: Status message
    SubmissionSummary:
      type: object
      properties:
        submission:
          $ref: '#/components/schemas/Submission'
        transmittalSheet:
          $ref: '#/components/schemas/TransmittalSheet'
    TransmittalSheet:
      type: object
      properties:
        institutionName:
          type: string
          description: Name of the institution
        year:
          type: integer
          description: Activity year
        quarter:
          type: integer
          description: Quarter (if quarterly filing)
        lei:
          type: string
          description: Legal Entity Identifier
        taxId:
          type: string
          description: Tax ID
        totalLines:
          type: integer
          description: Total number of LAR lines
        contact:
          type: object
          properties:
            name:
              type: string
            phone:
              type: string
            email:
              type: string
            address:
              type: object
  parameters:
    submissionId:
      name: submissionId
      in: path
      required: true
      description: Submission identifier
      schema:
        type: string
        example: B90YWS6AFX2LGWOXJ1LD-2020-1
    period:
      name: period
      in: path
      required: true
      description: Filing period (year, e.g. 2020)
      schema:
        type: string
        example: '2020'
    lei:
      name: lei
      in: path
      required: true
      description: Legal Entity Identifier of the financial institution
      schema:
        type: string
        example: B90YWS6AFX2LGWOXJ1LD
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT