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/luma-health-lumabotflows-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: 3.2.0
info:
version: 2.0.0
title: Rest-Service Lumabot Flows API
x-logo:
url: https://lumahealth-assets.s3.us-west-2.amazonaws.com/new_luma_logo_black.png
backgroundColor: '#FFFFFF'
altText: Luma Health
description: OpenAPI [Basic Structure](https://swagger.io/docs/specification/basic-structure/)
servers:
- url: https://api.lumahealth.io/api/v2
security:
- Bearer: []
tags:
- name: lumabotFlows
description: LumaBot Flows answered by patients
paths:
/lumabotFlows:
get:
summary: Show a list of lumabotFlows
operationId: listLumabotFlows
tags:
- lumabotFlows
parameters:
- name: patient
in: query
description: the ID of the patient who filled out the answers for this flow.
schema:
type: string
pattern: '[0-9a-f]'
minLength: 24
maxLength: 24
- name: status
in: query
description: 'The completion status of the lumabot flow under the patient''s perspective, knowingly:
- `started`: when the patient started answering at least one question, but hasn''t finished the flow yet;
- `completed`: the patient has finished answering all the questions and cannot edit the flow anymore.
'
schema:
type: string
enum:
- started
- completed
- name: completedAt
in: query
description: the date/time when the patient finished all the responses of this flow.
schema:
type: string
flowat: date-time
- name: appointment
in: query
description: the ID of an appointment related to this flow.
schema:
type: string
pattern: '[0-9a-f]'
minLength: 24
maxLength: 24
- name: fileUpload
in: query
description: the ID of a fileUpload related to this flow.
schema:
type: string
pattern: '[0-9a-f]'
minLength: 24
maxLength: 24
- name: url
in: query
description: 'deprecated: custom lumabot flow url, basically to identify any patient in survey monkey,
an external flows service that''s not being used anymore by Luma.
'
schema:
type: string
- name: currentItemId
in: query
description: 'The code of the current question the patient was last shown, before answering it.
Such a code must be the content of any `questions[x].id`, or `success`.
Usually this will contain each id, in sequence, but patients can go back and forth.
Also, flows can have jump logic, and some questions might not be displayed to the patient.
When the flow is completed, this is updated to `success`.
'
schema:
type: string
- name: lumabotFlowTemplate
in: query
description: the ID of the template of questions that was displayed for the patient.
schema:
type: string
pattern: '[0-9a-f]'
minLength: 24
maxLength: 24
- name: lumabotFlowTemplateName
in: query
description: the name of the template of questions used as a basis for these flow answers. See `lumabotFlowTemplates`.
schema:
type: string
- name: language
in: query
description: The language in which the flow was answered by the patient.
schema:
type: string
enum:
- en
- es
- pt
- name: accessedFrom
in: query
description: IP address of the patient who filled out the flow.
schema:
type: string
- name: previousLumabotFlow
in: query
description: 'PreviousLumabotFlow and nextLumabotFlow will be used to make it possible for flows
to be able to jump to another flow with another template so we can reduce the number of
unecessary questions in a single flow, which should help with organization and performance.
One flow must call the jump template, at which time we create a new lumabotFlow and set
the previous flow ID on its `previousLumabotFlow` property.
'
- name: nextLumabotFlow
in: query
description: 'PreviousLumabotFlow and nextLumabotFlow will be used to make it possible for flows
to be able to jump to another flow with another template so we can reduce the number of
unecessary questions in a single flow, which should help with organization and performance.
One flow must call the jump template, at which time we create a new lumabotFlow and set
the new flow ID on the first flow''s `nextLumabotFlow` property.
'
schema:
type: string
- $ref: '#/components/parameters/userParam'
- $ref: '#/components/parameters/deletedParam'
- $ref: '#/components/parameters/createdByParam'
- $ref: '#/components/parameters/updatedByParam'
- $ref: '#/components/parameters/createdAtParam'
- $ref: '#/components/parameters/updatedAtParam'
- $ref: '#/components/parameters/pageParam'
- $ref: '#/components/parameters/limitParam'
- $ref: '#/components/parameters/populateParam'
- $ref: '#/components/parameters/selectParam'
responses:
'200':
description: Returns a list of lumabotFlows
content:
application/json:
schema:
type: object
required:
- response
- page
- size
properties:
response:
type: array
minItems: 0
items:
$ref: '#/components/schemas/LumabotFlowResponse'
page:
type: integer
flowat: int32
minimum: 1
size:
type: integer
flowat: int32
minimum: 0
additionalProperties: false
'401':
description: Not authenticated
'403':
description: Access token does not have the required scope
default:
description: unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
post:
summary: Create a lumabot flow
operationId: lumabotFlowCreate
tags:
- lumabotFlows
parameters:
- name: flowType
in: query
description: If you don't provide the lumabotFlowTemplate for the new flow, the system will pick a template based on the type specified here.
schema:
type: string
enum:
- welcome
- authenticate-patient
- speak-with-staff
- session-timeout
- knock-knock
- cul-de-sac
- feedback
- error
- no-availabilities
- regular
requestBody:
description: Create a lumabot flow
required: true
content:
application:json:
schema:
$ref: '#/components/schemas/LumabotFlowRequest'
responses:
'201':
description: Successful creation
content:
application/json:
schema:
$ref: '#/components/schemas/LumabotFlowResponse'
'401':
description: Not authenticated
'403':
description: Access token does not have the required scope
/lumabotFlows/sessions:
get:
summary: Get a list of LumaBot unique sessions
operationId: lumabotFlowGetSessions
tags:
- lumabotFlows
parameters:
- name: patient
in: query
description: the ID of the patient who filled out the answers for this flow.
schema:
type: string
pattern: '[0-9a-f]'
minLength: 24
maxLength: 24
- name: status
in: query
description: 'The completion status of the lumabot flow under the patient''s perspective, knowingly:
- `started`: when the patient started answering at least one question, but hasn''t finished the flow yet;
- `completed`: the patient has finished answering all the questions and cannot edit the flow anymore.
'
schema:
type: string
enum:
- started
- completed
- name: completedAt
in: query
description: the date/time when the patient finished all the responses of this flow.
schema:
type: string
flowat: date-time
- name: lumabotFlowTemplate
in: query
description: the ID of the template of questions that was displayed for the patient.
schema:
type: string
pattern: '[0-9a-f]'
minLength: 24
maxLength: 24
- name: lumabotFlowTemplateName
in: query
description: the name of the template of questions used as a basis for these flow answers. See `lumabotFlowTemplates`.
schema:
type: string
- name: language
in: query
description: The language in which the flow was answered by the patient.
schema:
type: string
enum:
- en
- es
- pt
- name: accessedFrom
in: query
description: IP address of the patient who filled out the flow.
schema:
type: string
- $ref: '#/components/parameters/userParam'
- $ref: '#/components/parameters/deletedParam'
- $ref: '#/components/parameters/createdByParam'
- $ref: '#/components/parameters/updatedByParam'
- $ref: '#/components/parameters/createdAtParam'
- $ref: '#/components/parameters/updatedAtParam'
- $ref: '#/components/parameters/pageParam'
- $ref: '#/components/parameters/limitParam'
- $ref: '#/components/parameters/populateParam'
- $ref: '#/components/parameters/selectParam'
responses:
'200':
description: Returns a list of lumabotFlows that started a session
content:
application/json:
schema:
type: object
required:
- response
- page
- size
properties:
response:
type: array
minItems: 0
items:
$ref: '#/components/schemas/LumabotFlowResponse'
page:
type: integer
flowat: int32
minimum: 1
size:
type: integer
flowat: int32
minimum: 0
additionalProperties: false
'401':
description: Not authenticated
'403':
description: Access token does not have the required scope
/lumabotFlows/{lumabotFlowId}:
get:
summary: Get lumabotFlow by id
operationId: lumabotFlowGet
tags:
- lumabotFlows
parameters:
- name: lumabotFlowId
in: path
required: true
description: LumabotFlows' unique identifier in Luma's database.
schema:
type: string
pattern: '[0-9a-f]'
minLength: 24
maxLength: 24
responses:
'200':
description: LumabotFlow
content:
application/json:
schema:
$ref: '#/components/schemas/LumabotFlowResponse'
'401':
description: Not authenticated
'403':
description: Access token does not have the required scope
put:
summary: Update a lumabotFlow
operationId: lumabotFlowUpdate
tags:
- lumabotFlows
parameters:
- name: lumabotFlowId
in: path
required: true
description: LumabotFlows' unique identifier in Luma's database.
schema:
type: string
pattern: '[0-9a-f]'
minLength: 24
maxLength: 24
requestBody:
description: A lumabotFlow (full or partial) to be updated
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/LumabotFlowRequest'
responses:
'200':
description: LumabotFlow
content:
application/json:
schema:
$ref: '#/components/schemas/LumabotFlowResponse'
'401':
description: Not authenticated
'403':
description: Access token does not have the required scope
delete:
summary: Delete a lumabotFlow
operationId: lumabotFlowDelete
tags:
- lumabotFlows
parameters:
- name: lumabotFlowId
in: path
required: true
description: LumabotFlows' unique identifier in Luma's database.
schema:
type: string
pattern: '[0-9a-f]'
minLength: 24
maxLength: 24
responses:
'200':
description: Deleted lumabotFlow
content:
application/json:
schema:
$ref: '#/components/schemas/LumabotFlowResponse'
'401':
description: Not authenticated
'403':
description: Access token does not have the required scope
/lumabotFlows/{lumabotFlowId}/currentQuestion:
get:
summary: Get current question(s) of a lumabotFlow
operationId: lumabotFlowGetCurrentQuestion
tags:
- lumabotFlows
parameters:
- name: lumabotFlowId
in: path
required: true
description: LumabotFlows' unique identifier in Luma's database.
schema:
type: string
pattern: '[0-9a-f]'
minLength: 24
maxLength: 24
responses:
'200':
description: LumabotFlow's one or more current questions
content:
application/json:
schema:
$ref: '#/components/schemas/LumabotFlowQuestionResponse'
'401':
description: Not authenticated
'403':
description: Access token does not have the required scope
/lumabotFlows/{lumabotFlowId}/pdf:
get:
summary: Get responses of a lumabotFlow in PDF format.
operationId: lumabotFlowGetPdf
tags:
- lumabotFlows
parameters:
- name: lumabotFlowId
in: path
required: true
description: LumabotFlows' unique identifier in Luma's database.
schema:
type: string
pattern: '[0-9a-f]'
minLength: 24
maxLength: 24
responses:
'200':
description: Returns a PDF with the LumaBot flow responses.
content:
application/pdf:
schema:
type: string
format: binary
additionalProperties: false
'401':
description: Not authenticated
'403':
description: Access token does not have the required scope
/lumabotFlows/{lumabotFlowId}/responses:
get:
summary: Get responses of a lumabotFlow and its subsequent flows.
operationId: lumabotFlowGetResponses
tags:
- lumabotFlows
parameters:
- name: lumabotFlowId
in: path
required: true
description: LumabotFlows' unique identifier in Luma's database.
schema:
type: string
pattern: '[0-9a-f]'
minLength: 24
maxLength: 24
responses:
'200':
description: Returns the list of responses of the lumabotFlow and its subsequent flows.
content:
application/json:
schema:
type: object
required:
- response
- page
- size
properties:
response:
type: array
minItems: 0
items:
$ref: '#/components/schemas/LumabotFlowResponsesResponse'
page:
type: integer
flowat: int32
minimum: 1
size:
type: integer
flowat: int32
minimum: 0
additionalProperties: false
'401':
description: Not authenticated
'403':
description: Access token does not have the required scope
/lumabotFlows/{lumabotFlowId}/snapshot:
get:
summary: Get responses of a lumabotFlow and its subsequent flows in a question/answer format.
operationId: lumabotFlowGetSnapshot
tags:
- lumabotFlows
parameters:
- name: lumabotFlowId
in: path
required: true
description: LumabotFlows' unique identifier in Luma's database.
schema:
type: string
pattern: '[0-9a-f]'
minLength: 24
maxLength: 24
responses:
'200':
description: Returns the list of responses of the lumabotFlow and its subsequent flows in a question/answer format.
content:
application/json:
schema:
$ref: '#/components/schemas/LumabotFlowSnapshotResponse'
'401':
description: Not authenticated
'403':
description: Access token does not have the required scope
/lumabotFlows/{lumabotFlowId}/answer:
post:
summary: Answer the current question of a lumabot flow
operationId: lumabotFlowAnswer
tags:
- lumabotFlows
parameters:
- name: lumabotFlowId
in: path
required: true
description: LumabotFlows' unique identifier in Luma's database.
schema:
type: string
pattern: '[0-9a-f]'
minLength: 24
maxLength: 24
requestBody:
description: A lumabotFlow answer (full or partial) to be created
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/LumabotFlowAnswerRequest'
responses:
'200':
description: LumabotFlow new current questions
content:
application/json:
schema:
$ref: '#/components/schemas/LumabotFlowQuestionResponse'
'401':
description: Not authenticated
'403':
description: Access token does not have the required scope
/lumabotFlows/{lumabotFlowId}/answer/{itemId}:
delete:
summary: Delete a lumabotFlow answer
operationId: lumabotFlowAnswerDelete
tags:
- lumabotFlows
parameters:
- name: lumabotFlowId
in: path
required: true
description: LumabotFlows' unique identifier in Luma's database.
schema:
type: string
pattern: '[0-9a-f]'
minLength: 24
maxLength: 24
- name: itemId
in: path
required: true
description: The unique identifier of the question whose answer you want to delete.
schema:
type: string
responses:
'200':
description: LumabotFlow new current questions
content:
application/json:
schema:
$ref: '#/components/schemas/LumabotFlowQuestionResponse'
'401':
description: Not authenticated
'403':
description: Access token does not have the required scope
components:
parameters:
pageParam:
in: query
name: page
required: false
type: integer
format: int32
default: 1
minimum: 1
schema:
type: integer
format: int32
default: 1
minimum: 1
createdAtParam:
in: query
name: createdAt
type: string
format: date-time
schema:
type: string
format: date-time
required: false
description: The date/time when this object was created.
updatedAtParam:
in: query
name: updatedAt
type: string
format: date-time
schema:
type: string
format: date-time
required: false
description: The date/time when this object was updated.
updatedByParam:
in: query
name: updatedBy
required: false
type: string
pattern: '[0-9a-f]'
minLength: 24
maxLength: 24
schema:
type: string
pattern: '[0-9a-f]'
minLength: 24
maxLength: 24
description: The ID of the user who updated this object.
createdByParam:
in: query
name: createdBy
type: string
pattern: '[0-9a-f]'
minLength: 24
maxLength: 24
schema:
type: string
pattern: '[0-9a-f]'
minLength: 24
maxLength: 24
required: false
description: The ID of the user who created this object.
populateParam:
name: _populate
in: query
description: Response properties which will be replaced by the referenced objects, separated by commas.
required: false
type: string
schema:
type: string
selectParam:
name: _select
in: query
description: Response properties that should be returned, separated by commas.
required: false
type: string
schema:
type: string
deletedParam:
in: query
name: deleted
required: false
type: number
enum:
- 0
- 1
schema:
type: number
enum:
- 0
- 1
description: Flag for logical deletion where 1 means deleted.
limitParam:
name: limit
in: query
description: How many items to fetch per page
required: false
type: integer
format: int32
default: 500
minimum: 1
maximum: 1000
schema:
type: integer
format: int32
default: 500
minimum: 1
maximum: 1000
userParam:
in: query
name: user
required: false
type: string
pattern: '[0-9a-f]'
minLength: 24
maxLength: 24
schema:
type: string
pattern: '[0-9a-f]'
minLength: 24
maxLength: 24
description: The ID of the root account user.
schemas:
userParam:
in: query
name: user
required: false
type: string
pattern: '[0-9a-f]'
minLength: 24
maxLength: 24
schema:
type: string
pattern: '[0-9a-f]'
minLength: 24
maxLength: 24
description: The ID of the root account user.
Error:
type: object
required:
- code
- message
properties:
code:
type: integer
format: int32
message:
type: string
LumabotFlowAnswerRequest:
type: object
properties:
id:
description: itemId of the answer if selecting a multiple-choice option
type: string
text:
description: Simple text answer or a summary of the answer (in case of complex answers) to show on reports and hub
type: string
details:
description: Complex object containing details of a complex answer, like appointment details or address, for example
type: object
LumabotFlowRequest:
type: object
properties:
patient:
description: the ID of the patient who filled out the answers for this form.
type: string
pattern: '[0-9a-f]'
minLength: 24
maxLength: 24
status:
description: 'The completion status of the lumabot flow under the patient''s perspective, knowingly:
- `started`: when the patient started answering at least one question, but hasn''t finished the form yet;
- `completed`: the patient has finished answering all the questions and cannot edit the form anymore.
'
type: string
default: started
enum:
- started
- completed
flowType:
description: type of the lumabot flow template
type: string
enum:
- welcome
- authenticate-patient
- speak-with-staff
- session-timeout
- knock-knock
- cul-de-sac
- feedback
- error
- no-availabilities
- regular
completedAt:
description: the date/time when the patient finished all the responses of this form.
type: string
format: date-time
processingStatus:
description: 'The internal staff''s management status for a completed flow, serving the purpose of organizing which answers were analysed by a staff member or not.
- `open`: the flow was completed by a patient but not seen by any staff member yet;
- `in-progress`: a staff user is analysing the answers;
- `closed`: the flow has been completely analysed by a member of the staff team.
'
type: string
default: open
enum:
- open
- in-progress
- closed
processingStatusUpdatedBy:
description: the ID of a staff `user` who analysed the responses of this completed flow and changed its `processingStatus`.
type: string
pattern: '[0-9a-f]'
minLength: 24
maxLength: 24
processingStatusUpdatedAt:
description: the date/time when a staff `user` analysed the responses of this completed flow and changed its `processingStatus`.
type: string
format: date-time
appointment:
description: the ID of an appointment related to this form.
type: string
pattern: '[0-9a-f]'
minLength: 24
maxLength: 24
url:
description: 'deprecated: custom lumabot flow url, basically to identify any patient in survey monkey,
an external forms service that''s not being used anymore by Luma.
'
type: string
currentItemId:
description: 'The code of the current question the patient was last shown, before answering it.
Such a code must be the content of any `responses.page[0].questions[x].id`, or `success`.
Usually this will contain each id, in sequence, but patients can go back and forth.
Also, forms can have jump logic, and some questions might not be displayed to the patient.
When the form is completed, this is updated to `success`.
'
type: string
lumabotFlowTemplate:
description: the ID of the template of questions that was displayed for the patient.
type: string
pattern: '[0-9a-f]'
required: true
minLength: 24
maxLength: 24
lumabotFlowTemplateName:
description: the name of the template of questions used as a basis for these form answers. See `lumabotFlowTemplates`.
type: string
language:
description: The language in which the form was answered by the patient.
type: string
enum:
- en
- es
- pt
accessedFrom:
description: IP address of the patient who filled out the form.
type: string
previousLumabotFlow:
description: 'PreviousLumabotFlow and nextLumabotFlow will be used to make it possible for forms
to be able to jump to another form with another template so we can reduce the number of
unecessary questions in a single form, which should help with organization and performance.
One form must call the jump template, at which time we create a new lumabotFlow and set
the previous form ID on its `previousLumabotFlow` property.
'
type: string
pattern: '[0-9a-f]'
minLength: 24
maxLength: 24
nextLumabotFlow:
description: 'PreviousLumabotFlow and nextLumabotFlow will be used to make it possible for forms
to be able to jump to another form with another template so we can reduce the number of
unecessary questions in a single form, which should help with organization and performance.
One form must call the jump template, at which time we create a new lumabotFlow and set
the new form ID on the first form''s `nextLumabotFlow` property.
'
type: string
pattern: '[0-9a-f]'
minLength: 24
maxLength: 24
questions:
description: Contains information about the questions and answers given by the patient.
type: array
items:
type: object
properties:
answer:
type: object
properties:
id:
type: string
text:
type: string
createdAt:
type: date-time
details:
type: object
askedAt:
type: date-time
id:
type: string
type:
type: string
squiggly:
type: string
title:
type: string
redirectType:
type: string
enum:
- none
- goTo
- goToFlow
- goToPrevious
- isFinal
- externalUrl
- scheduler
redirectValue:
type: string
validations:
type: object
properties:
required:
type: boolean
properties:
type: object
properties:
template:
type: string
availabilities:
description: availabilities
type: array
items:
type: string
pattern: '[0-9a-f]'
minLength: 24
maxLength: 24
facilities:
description: facilities
type: array
items:
type: string
pattern: '[0-9a-f]'
minLength: 24
maxLength: 24
idParam:
in: query
name: _id
type: string
pattern: '[0-9a-f]'
minLength: 24
maxLength: 24
required: false
schema:
type: string
pattern: '[0-9a-f]'
minLength: 24
maxLength: 24
description: Luma's internal ID of an object.
LumabotFlowSnapshotResponse:
type: object
description: This resource is a read only, point in time snapshot of a completed or in progress Lumabot conversation, presented as a simple transcript of messages exchanged between the patient and the chatbot along with when the conversation started and ended. Unlike the editable flow template or the live flow object, this snapshot is a fixed record meant for display or auditing rather than further modification. It is used to let staff or systems review exactly what was said during a specific patient interaction such as an intake or screening session.
properties:
id:
type: string
pattern: '[0-9a-f]'
minLength: 24
maxLength: 24
title:
type: string
startDate:
type: string
format: date-time
endDate:
type: string
format: date-time
messages:
type: array
items:
type: object
properties:
text:
type: string
createdAt:
type: string
format: date-time
source:
type: string
enum:
- patient
- lumabot
LumabotFlowQuestionResponse:
type: object
description: This resource represents a single question within a Lumabot conversational flow, including its type such as text, date, multiple choice, phone number, or scheduler, along with its title, validation rules, answer options, and redirect logic that determine
# --- truncated at 32 KB (47 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/luma-health/refs/heads/main/openapi/luma-health-lumabotflows-api-openapi.yml