{"openapi":"3.1.0","info":{"title":"GLP-1 Care Map directory API","version":"1.0.0","description":"Read-only public directory for provider discovery. No authentication is required. Directory coverage is incomplete. Confirm services, prices, availability, and state eligibility directly with the provider. Missing evidence means unknown, not that a service is unavailable. NPI records do not verify licensure. Clinic medication evidence does not establish brand, formulation, stock, or insurance coverage. Never send names, symptoms, medical history, insurance IDs, or conversation text. No booking, medical advice, or eligibility decisions.","termsOfService":"https://glp1caremap.com/connectors/muse/terms","contact":{"name":"GLP-1 Care Map","url":"https://glp1caremap.com/connectors/muse"}},"servers":[{"url":"https://glp1caremap.com"}],"security":[],"externalDocs":{"description":"Connector setup, data rules, and privacy","url":"https://glp1caremap.com/connectors/muse"},"tags":[{"name":"Directory","description":"Search public listings and read their supporting evidence."}],"paths":{"/api/v1/clinics":{"get":{"operationId":"searchClinics","tags":["Directory"],"summary":"Find clinics with evidence of GLP-1 services near a ZIP code","description":"Only the ZIP's state is searched. Sorted by straight-line distance from the ZIP centroid, then ID. Requires website evidence for GLP-1, semaglutide, or tirzepatide; medication narrows to that exact ingredient. In-person reach is capped at 60 miles, or 150 miles with website evidence of telehealth. A false boolean removes that filter; it does not assert a service is absent. For nationwide online providers, call listTelehealthProviders using the returned state. Never silently broaden a medication filter after an empty result.","parameters":[{"name":"zip","in":"query","required":true,"description":"US ZIP supplied by the user. Preserve leading zeros.","schema":{"type":"string","pattern":"^[0-9]{5}$","example":"78701"}},{"name":"medication","in":"query","required":false,"description":"Exact ingredient evidence required. Does not imply a brand or formulation.","schema":{"type":"string","enum":["semaglutide","tirzepatide"]}},{"name":"telehealth","in":"query","required":false,"description":"true requires website evidence of telehealth. Send true or false.","schema":{"type":"boolean","default":false}},{"name":"accepting_patients","in":"query","required":false,"description":"true requires a sourced claim, as of its checked date. Not live appointment availability.","schema":{"type":"boolean","default":false}},{"name":"radius_miles","in":"query","required":false,"description":"Search radius in miles, subject to the in-person and telehealth caps.","schema":{"type":"integer","minimum":1,"maximum":150,"default":60}},{"name":"limit","in":"query","required":false,"description":"Maximum results per page.","schema":{"type":"integer","minimum":1,"maximum":20,"default":10}},{"name":"offset","in":"query","required":false,"description":"Use next_offset from the preceding response. Results can change when source data changes.","schema":{"type":"integer","minimum":0,"maximum":1000,"default":0}}],"responses":{"200":{"description":"Clinics matching all filters, possibly empty.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClinicSearch"}}}},"400":{"description":"Invalid, duplicate, or unsupported parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"ZIP or clinic ID not found. A valid search with no matches returns 200 and an empty data array.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Only GET, HEAD, and OPTIONS are allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests. Wait before retrying.","headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until retry."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Directory temporarily unavailable.","headers":{"Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/clinics/{id}":{"get":{"operationId":"getClinic","tags":["Directory"],"summary":"Read a clinic listing and service evidence","description":"Use an ID returned by search. Missing or unsupported evidence is unknown, never a confirmed negative. Booking URLs are links only. This operation does not book an appointment.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,160}$"},"description":"Clinic ID returned by searchClinics."}],"responses":{"200":{"description":"Public clinic listing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClinicDetail"}}}},"400":{"description":"Invalid, duplicate, or unsupported parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"ZIP or clinic ID not found. A valid search with no matches returns 200 and an empty data array.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Only GET, HEAD, and OPTIONS are allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests. Wait before retrying.","headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until retry."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Directory temporarily unavailable.","headers":{"Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/telehealth":{"get":{"operationId":"listTelehealthProviders","tags":["Directory"],"summary":"List online options with sourced state coverage","description":"Applies medication exclusions for the requested state before filtering. Medications are exact product identifiers; do not substitute compounded products for brands. Prescribers come before manufacturer fulfilment, then alphabetical by name. Manufacturer fulfilment requires an outside prescription. Prices are provider starting prices, not quotes for the filtered medication. Prices older than 45 days, future dated, or without source evidence are not returned. Empty results are not proof that no provider serves the state.","parameters":[{"name":"state","in":"query","required":true,"description":"Uppercase two-letter state code or DC.","schema":{"type":"string","enum":["AL","AK","AZ","AR","CA","CO","CT","DE","DC","FL","GA","HI","ID","IL","IN","IA","KS","KY","LA","ME","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY"],"example":"TX"}},{"name":"medication","in":"query","required":false,"description":"Exact product identifier offered in this state.","schema":{"type":"string","enum":["compounded_semaglutide","compounded_tirzepatide","compounded_orforglipron","compounded_liraglutide","wegovy","wegovy_pill","zepbound","ozempic","ozempic_pill","mounjaro","foundayo"]}},{"name":"limit","in":"query","required":false,"description":"Maximum results per page.","schema":{"type":"integer","minimum":1,"maximum":20,"default":10}},{"name":"offset","in":"query","required":false,"description":"Use next_offset from the preceding response. Results can change when source data changes.","schema":{"type":"integer","minimum":0,"maximum":1000,"default":0}}],"responses":{"200":{"description":"Online options with state coverage evidence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TelehealthSearch"}}}},"400":{"description":"Invalid, duplicate, or unsupported parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"ZIP or clinic ID not found. A valid search with no matches returns 200 and an empty data array.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Only GET, HEAD, and OPTIONS are allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests. Wait before retrying.","headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until retry."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Directory temporarily unavailable.","headers":{"Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Error":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string","enum":["invalid_request","zip_not_found","clinic_not_found","rate_limited","service_unavailable","method_not_allowed"]},"message":{"type":"string"}}}}},"Evidence":{"type":"object","additionalProperties":false,"required":["source_url","quote","checked_at"],"properties":{"source_url":{"type":"string","format":"uri"},"quote":{"type":"string","minLength":1},"checked_at":{"type":"string","format":"date"}}},"Service":{"type":"object","additionalProperties":false,"required":["key","status","evidence"],"properties":{"key":{"type":"string","enum":["glp1","semaglutide","tirzepatide","weight_management","telehealth","accepting_patients","continues_existing_therapy"]},"status":{"type":"string","enum":["confirmed","unknown"]},"evidence":{"anyOf":[{"$ref":"#/components/schemas/Evidence"},{"type":"null"}]}}},"Provider":{"type":"object","additionalProperties":false,"required":["name","npi","credential","specialty","npi_record_verified"],"properties":{"name":{"type":"string"},"npi":{"type":["string","null"]},"credential":{"type":["string","null"]},"specialty":{"type":["string","null"]},"npi_record_verified":{"type":"boolean","description":"NPI identity match only. Does not verify licensure."}}},"Clinic":{"type":"object","additionalProperties":false,"required":["id","name","directory_url","website","booking_url","phone","address","distance_miles","services","providers"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"directory_url":{"type":"string","format":"uri"},"website":{"type":["string","null"],"format":"uri"},"booking_url":{"type":["string","null"],"format":"uri"},"phone":{"type":["string","null"]},"address":{"type":"object","additionalProperties":false,"required":["line1","line2","city","state","postal_code"],"properties":{"line1":{"type":["string","null"]},"line2":{"type":["string","null"]},"city":{"type":["string","null"]},"state":{"type":"string"},"postal_code":{"type":["string","null"]}}},"distance_miles":{"type":["number","null"],"minimum":0,"description":"Straight-line miles rounded to one decimal; null in clinic detail."},"services":{"type":"array","items":{"$ref":"#/components/schemas/Service"}},"providers":{"type":"array","items":{"$ref":"#/components/schemas/Provider"}}}},"Pagination":{"type":"object","additionalProperties":false,"required":["limit","offset","total","next_offset"],"properties":{"limit":{"type":"integer","minimum":1,"maximum":20},"offset":{"type":"integer","minimum":0,"maximum":1000},"total":{"type":"integer","minimum":0},"next_offset":{"type":["integer","null"],"minimum":0,"maximum":1000}}},"ClinicSearch":{"type":"object","additionalProperties":false,"required":["api_version","disclaimer","data_note","data","pagination","location","filters","sort","distance_basis"],"properties":{"api_version":{"type":"string","const":"1.0.0"},"disclaimer":{"type":"string"},"data_note":{"type":"string"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Clinic"}},"pagination":{"$ref":"#/components/schemas/Pagination"},"location":{"type":"object","additionalProperties":false,"required":["zip","city","state"],"properties":{"zip":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"}}},"filters":{"type":"object","additionalProperties":false,"required":["medication","telehealth","accepting_patients","radius_miles"],"properties":{"medication":{"type":["string","null"],"enum":["semaglutide","tirzepatide",null]},"telehealth":{"type":"boolean"},"accepting_patients":{"type":"boolean"},"radius_miles":{"type":"integer"}}},"sort":{"const":"distance_ascending"},"distance_basis":{"const":"straight_line_from_zip_centroid"}}},"ClinicDetail":{"type":"object","additionalProperties":false,"required":["api_version","disclaimer","data_note","data"],"properties":{"api_version":{"type":"string","const":"1.0.0"},"disclaimer":{"type":"string"},"data_note":{"type":"string"},"data":{"$ref":"#/components/schemas/Clinic"}}},"Price":{"type":"object","additionalProperties":false,"required":["from_cents","currency","period","note","applies_to","evidence"],"properties":{"from_cents":{"type":"integer","minimum":0},"currency":{"const":"USD"},"period":{"type":["string","null"]},"note":{"type":["string","null"]},"applies_to":{"const":"provider_starting_price"},"evidence":{"$ref":"#/components/schemas/Evidence"}}},"TelehealthProvider":{"type":"object","additionalProperties":false,"required":["id","name","website","directory_url","state","medications","model","requires_external_prescription","requires_labs","coverage_evidence","price","price_status"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"website":{"type":"string","format":"uri"},"directory_url":{"type":"string","format":"uri"},"state":{"type":"string"},"medications":{"type":"array","items":{"type":"string"}},"model":{"type":"string","enum":["subscription","per_visit","manufacturer_fulfilment"]},"requires_external_prescription":{"type":"boolean"},"requires_labs":{"type":["boolean","null"]},"coverage_evidence":{"$ref":"#/components/schemas/Evidence"},"price":{"anyOf":[{"$ref":"#/components/schemas/Price"},{"type":"null"}]},"price_status":{"type":"string","enum":["current","unavailable","stale"]}}},"TelehealthSearch":{"type":"object","additionalProperties":false,"required":["api_version","disclaimer","data_note","data","pagination","state","medication"],"properties":{"api_version":{"type":"string","const":"1.0.0"},"disclaimer":{"type":"string"},"data_note":{"type":"string"},"data":{"type":"array","items":{"$ref":"#/components/schemas/TelehealthProvider"}},"pagination":{"$ref":"#/components/schemas/Pagination"},"state":{"type":"string"},"medication":{"type":["string","null"]}}}}}}