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.
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
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.
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.