Ginnie Mae Discovery API

The Discovery API from Ginnie Mae — 2 operation(s) for discovery.

Operations 2

GET /api/v1/ JSON:API entrypoint #
GET /system/menu/{menu}/linkset Get a site menu as an RFC 9264 linkset #

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/ginnie-mae-discovery-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

ginnie-mae-discovery-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Ginnie Mae Content Discovery API
  version: 1.0.0
  summary: The public, unauthenticated JSON:API 1.0 content surface behind ginniemae.gov.
  description: Ginnie Mae serves its public website (www.ginniemae.gov) as an Angular single-page application against a Drupal 10 back end, and that back end exposes a **public, unauthenticated JSON:API 1.0 surface at `https://www.ginniemae.gov/api/v1/`** plus a set of Views REST exports and RFC 9264 linkset documents.
  contact:
    name: Ginnie Mae
    url: https://www.ginniemae.gov/contact-us
  license:
    name: U.S. Government Work (17 U.S.C. § 105)
    url: https://www.ginniemae.gov/site-policies/site-policies/disclaimer
servers:
- url: https://www.ginniemae.gov
  description: Production
tags:
- name: Discovery
paths:
  /api/v1/:
    get:
      operationId: getJsonApiEntrypoint
      summary: JSON:API entrypoint
      description: Returns the JSON:API 1.0 entrypoint document. Its links member enumerates every resource type the site exposes, keyed "--".
      tags:
      - Discovery
      responses:
        '200':
          description: JSON:API entrypoint document.
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/JsonApiEntrypoint'
  /system/menu/{menu}/linkset:
    get:
      operationId: getMenuLinkset
      summary: Get a site menu as an RFC 9264 linkset
      description: Returns the named navigation menu as an RFC 9264 `application/linkset+json` document. Verified live 2026-09-12 for `main` and `footer`; the SPA also reads `disclosure-plus-download-data` and `disclosure-plus-resources`.
      tags:
      - Discovery
      parameters:
      - name: menu
        in: path
        required: true
        description: Menu machine name.
        schema:
          type: string
          examples:
          - main
          - footer
          - disclosure-plus-download-data
          - disclosure-plus-resources
      responses:
        '200':
          description: A linkset document.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Linkset'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    Linkset:
      type: object
      description: RFC 9264 linkset document.
      properties:
        linkset:
          type: array
          items:
            type: object
            properties:
              anchor:
                type: string
              item:
                type: array
                items:
                  type: object
                  properties:
                    href:
                      type: string
                    title:
                      type: string
                    hierarchy:
                      type: array
                      items:
                        type: string
                    machine-name:
                      type: array
                      items:
                        type: string
                    is-hidden:
                      type: array
                      items:
                        type: string
                    isProtected:
                      type: boolean
    JsonApiError:
      type: object
      properties:
        title:
          type: string
          examples:
          - Bad Request
        status:
          type: string
          examples:
          - '400'
        detail:
          type: string
          examples:
          - Invalid nested filtering. The field `nope`, given in the path `nope`, does not exist.
        links:
          type: object
          properties:
            via:
              type: object
              properties:
                href:
                  type: string
                  format: uri
            info:
              type: object
              properties:
                href:
                  type: string
                  format: uri
    JsonApiVersion:
      type: object
      properties:
        version:
          type: string
          examples:
          - '1.0'
        meta:
          type: object
          additionalProperties: true
    JsonApiEntrypoint:
      type: object
      description: JSON:API 1.0 entrypoint document.
      properties:
        jsonapi:
          $ref: '#/components/schemas/JsonApiVersion'
        data:
          type: array
          items:
            type: object
        links:
          type: object
          description: One member per exposed resource type, keyed "<entity_type>--<bundle>".
          additionalProperties:
            type: object
            properties:
              href:
                type: string
                format: uri
    JsonApiErrorDocument:
      type: object
      required:
      - errors
      properties:
        jsonapi:
          $ref: '#/components/schemas/JsonApiVersion'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/JsonApiError'
  responses:
    NotFound:
      description: 'No such resource. NOTE: an unknown resource TYPE under /api/v1 is answered by Drupal with an HTML 404 page rather than a JSON:API error document (observed 2026-09-12).'
      content:
        application/vnd.api+json:
          schema:
            $ref: '#/components/schemas/JsonApiErrorDocument'
        text/html:
          schema:
            type: string
externalDocs:
  description: JSON:API 1.0 specification (the contract this surface conforms to)
  url: https://jsonapi.org/format/1.0/
x-generated-from:
  method: generated
  by: API Evangelist enrichment pipeline (local-v3)
  generated: '2026-09-12'
  sources:
  - https://www.ginniemae.gov/api/v1/ (JSON:API 1.0 entrypoint document, HTTP 200, 120 resource types)
  - https://www.ginniemae.gov/assets/config/config.prod.json (the SPA runtime configuration that names the API base)
  - https://bulk.ginniemae.gov/assets/config/config.prod.json
  - live anonymous GET probes of every path described, 2026-09-12
  not_published_by_provider: true
  verification: Every path carries a 2026-09-12 anonymous HTTP 200. Query parameters are either JSON:API 1.0 members verified against the live surface (page[limit], page[offset], sort, filter, fields) or exposed-filter names the endpoint declares about itself in its own response `filters` member.
  caveat: 'robots.txt on www.ginniemae.gov carries "Disallow: /api/" for crawlers. The surface is not authenticated and not rate-limited in any advertised way, but it is also not an advertised developer product.'