Lily AI · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the LilyApp Middleware API

7 actions 7 updates servers extends ../openapi/_original/lily-ai-lilyapp-api-openapi.json
Derived by API Evangelist Built from the contracts Lily AI publishes. Lily AI did not publish this file.
View Overlay File View on GitHub Overlay Specification

What the actions change

tagssummarytypedefaultserverscontactx-api-evangelist-notesecurity

Targets 6

$
$.info
$.paths['/health'].get
$.paths['/metrics'].get
$.components.schemas.PaginationDto.properties.pageNumber
$.components.schemas.PaginationDto.properties.pageSize

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the LilyApp Middleware API
  version: 1.0.0
extends: ../openapi/_original/lily-ai-lilyapp-api-openapi.json
x-provenance:
  generated: '2026-08-12'
  method: generated
  source: >-
    Enhancements API Evangelist applies on top of the verbatim contract harvested
    from https://lilyapp-api-prd.pub.lilyai.net/api-json (2026-08-12). The original
    is never mutated. Every action below records something observed on the wire or
    read off the contract — nothing here invents behaviour.
actions:
- target: $
  description: >-
    Declare the production and staging hosts. The published contract ships an empty
    servers[] (the NestJS default), so a consumer cannot tell from the document
    alone where to call it. Both hosts were resolved from the app.lily.ai production
    JavaScript bundle and confirmed live.
  update:
    servers:
    - url: https://lilyapp-api-prd.pub.lilyai.net
      description: Production — self-identifies as LilyApp-Api-Prod-AWS, build 2026.02b
    - url: https://lilyapp-api-stg.pub.lilyai.net
      description: >-
        Staging — resolves, but presents an EXPIRED TLS certificate as of
        2026-08-12, so the TLS handshake aborts.
- target: $.info
  description: >-
    Add contact and a description that says what the service actually is. The
    published info block carries an empty contact object and the one-line
    description "Lily App Middleware".
  update:
    contact:
      name: Lily AI, Inc.
      url: https://www.lily.ai/contact
    x-api-evangelist-note: >-
      This is the middleware that backs Lily AI's customer application at
      app.lily.ai. It is publicly reachable and publicly documented via a Swagger UI
      at /api, but Lily AI operates no developer program — there is no portal, no
      published reference, no SDK, and no sign-up path to a credential. Treat it as
      an exposed internal contract, not a product API.
- target: $
  description: >-
    Apply the declared JWT bearer scheme globally. The contract defines
    components.securitySchemes.JWT but never references it from any operation or
    from a root security block, so the document asserts that all 100 operations are
    anonymous. Live probing disproves that — /config/brands and /subsidiary/list
    both return 401 "null Token" without a token.
  update:
    security:
    - JWT: []
- target: $.paths['/health'].get
  description: Tag and summarise the health check.
  update:
    tags: [Health]
    summary: Dependency health check
    description: >-
      Returns a per-dependency status map (pi_api, lilyAppDB, productCopy). Returns
      503 when any dependency is down; observed 503 with productCopy down on
      2026-08-12.
- target: $.paths['/metrics'].get
  description: >-
    Flag the Prometheus scrape endpoint, which is served on the same public host as
    the rest of the API.
  update:
    tags: [Observability]
    summary: Prometheus metrics scrape endpoint
- target: $.components.schemas.PaginationDto.properties.pageNumber
  description: >-
    Correct the type. The contract types pageNumber as `object` with the string
    default "1"; it is a page index.
  update:
    type: integer
    default: 1
- target: $.components.schemas.PaginationDto.properties.pageSize
  description: >-
    Correct the type. The contract types pageSize as `object` with the string
    default "100"; it is a page size.
  update:
    type: integer
    default: 100
x-not-applied:
  note: >-
    The following were deliberately NOT overlaid because doing so would assert
    behaviour the provider does not publish and we did not observe.
  items:
  - Per-operation summaries and descriptions — 100 of 100 operations ship none, and
    inventing them would misrepresent the contract's real quality.
  - Tags — only the 7 Enrichment Platform Proxy operations carry a tag; the other 93
    are untagged, and grouping them would be our guess at the provider's intent.
  - 4xx response declarations — only 3 of 100 operations declare any non-2xx
    response. The observed 401 / 404 / 503 envelopes are captured in
    errors/lily-ai-problem-types.yml instead of being back-written into the spec.
  - An Idempotency-Key header — the API has no idempotency mechanism at all.

Work with this as data

Every overlay 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 openapi overlays

4 MCP tools reach this
  • find_overlaysBrowse and filter every overlay in the catalog.
  • 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 overlay
curl "https://apis.io/api/v1/overlays/lily-ai-lilyapp-api-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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.