Mediflo
REST APIScheduling

Release a hold

Idempotent: releasing an already-expired hold succeeds, because the caller's goal is satisfied either way. Pass the same `X-Mediflo-Scheduling-Session` value you held the slot with — a hold is released only by its own owner, and without the header this request is a different owner, so the hold stays until it expires. Required scope: `scheduling.book`.

DELETE/scheduling/holds/{holdId}

Authorization

ApiKeyAuth
AuthorizationBearer <token>

An external API key, sent as Authorization: Bearer mflo_…. Scopes are checked per route; see each operation’s description.

In: header

Path Parameters

holdId*string

Query Parameters

specialistId*string
Formatuuid

Header Parameters

X-Mediflo-Scheduling-Session?string

Your own id for ONE booking flow (letters, digits and ._:-, 1–128 chars). REQUIRED to use a hold: send the SAME value on POST /scheduling/holds, on the POST /scheduling/appointments that consumes the hold, and on DELETE /scheduling/holds/{holdId}. Without this header every request is its own owner and cannot touch another request’s hold — booking a holdId then answers SLOT_TAKEN and the hold can only expire. Booking straight from a slotToken needs no hold and no header.

Match^[A-Za-z0-9._:-]{1,128}$

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X DELETE "https://example.com/scheduling/holds/string?specialistId=497f6eca-6276-4993-bfeb-53cbbbba6f08"
{  "data": {    "released": true,    "holdId": "string"  }}