---
title: "Create offer"
method: POST
path: "/offers"
tags: ["offers"]
---

# Create offer

`POST /offers`

## Request

- Base URL: `https://api.lumahealth.io/api/v2`
- URL: `https://api.lumahealth.io/api/v2/offers`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/lumahealth/apis/rest-service/docs/offers/post.ts> (a function with typed inputs; its response is checked against the schema)

## Request body

- OfferRequestCreate
  - `provider` string: The ID of provider
  - `date` unknown
  - `duration` integer: ID of Setting
  - `facility` string: The ID of facility
  - `approvedBy` string: The ID of approvedBy
  - `declinedBy` string: The ID of declinedBy
  - `currentWaitlist` integer: current Waitlist of the offer
  - `expireAt` unknown
  - `patientFoundAt` string: The ID of patientFoundAt
  - `patientFound` string: The ID of patientFound
  - `estimatedCompletionAt` unknown
  - `shadowAppointment` string: The ID of shadowAppointment
  - `availability` string: The ID of availability
  - `protocol` 'serial' | 'parallel': Protocol of the offer
  - `offer` string: The ID of offer
  - `usedForAppointment` string: The ID of usedForAppointment
  - `rescheduledFromAppointment` string: The ID of rescheduledFromAppointment
  - `patientForm` string: The ID of patientForm
  - `patientFormTemplate` string: The ID of patientFormTemplate
  - `referral` string: The ID of referral
  - `integratorCreationResults` object: Integrator Creation Results
  - `waitlists` unknown[], required: The ID of waitlists
    - unknown
  - `appointmentType` unknown[], required: The ID of appointmentType
    - unknown
  - `source` 'cancellation' | 'manual' | 'find-open-spots' | 'self-scheduling' | 'reschedule' | 'staff-scheduling' | 'reschedule-from-intent', required: Source of the offer
  - `status` 'in-progress' | 'patient-found' | 'patient-not-found' | 'cancelled', required: Status of the offer

## Response `201`

Successful creation

- OfferResponse: An Offer represents an available appointment slot that Luma Health is trying to fill by reaching out to patients on a waitlist or through self-scheduling and rescheduling flows. It tracks who the offer is for, its source such as a cancellation, manual creation, or a reschedule request, and its lifecycle status as it moves from in progress to either a patient being found or the offer expiring or being cancelled. It also links to the resulting appointment, the provider and facility involved, and the waitlist entries considered for that slot.
  - `_id` string: Luma's internal ID of an object.
  - `user` string: The ID of the root account user.
  - `deleted` 0 | 1: Flag for logical deletion where 1 means deleted.
  - `createdBy` string: The ID of the user who created this object.
  - `updatedBy` string: The ID of the user who updated this object.
  - `createdAt` string, date-time: The date/time when this object was created.
  - `updatedAt` string, date-time: The date/time when this object was updated.
  - `provider` string: The ID of provider
  - `date` string, date-time: Date of the offer
  - `duration` integer: ID of Setting
  - `facility` string: The ID of facility
  - `approvedBy` string: The ID of approvedBy
  - `declinedBy` string: The ID of declinedBy
  - `currentWaitlist` integer: current Waitlist of the offer
  - `expireAt` string, date-time: When the offer will expire
  - `patientFoundAt` string: The ID of patientFoundAt
  - `patientFound` string: The ID of patientFound
  - `estimatedCompletionAt` string, date-time: When the offer will be estimated complete
  - `shadowAppointment` string: The ID of shadowAppointment
  - `availability` string: The ID of availability
  - `protocol` 'serial' | 'parallel': Protocol of the offer
  - `offer` string: The ID of offer
  - `usedForAppointment` string: The ID of usedForAppointment
  - `rescheduledFromAppointment` string: The ID of rescheduledFromAppointment
  - `patientForm` string: The ID of patientForm
  - `patientFormTemplate` string: The ID of patientFormTemplate
  - `referral` string: The ID of referral
  - `integratorCreationResults` object: Integrator Creation Results
  - `waitlists` unknown[]: The ID of waitlists
    - unknown
  - `appointmentType` unknown[]: The ID of appointmentType
    - unknown
  - `source` 'cancellation' | 'manual' | 'find-open-spots' | 'self-scheduling' | 'reschedule' | 'staff-scheduling' | 'reschedule-from-intent': Source of the offer
  - `status` 'in-progress' | 'patient-found' | 'patient-not-found' | 'cancelled': Status of the offer

## Other responses

- `401`: Not authenticated
- `403`: Access token does not have the required scope
- `default`: Unexpected error

---

[API](https://skmtc.dev/lumahealth/apis/rest-service.md) - [All operations](https://skmtc.dev/lumahealth/apis/rest-service/llms.txt) - [OpenAPI document](https://skmtc.dev/lumahealth/apis/rest-service/revisions/f19aeba84a26?raw)
