curl "https://api.haau3.com/v1/scheduling/slots?city=Cambridge&state=MA&limit=1" \
-H "Authorization: Bearer $HAAU3_API_KEY"import { Haau3 } from "@haau3/sdk";
const haau3 = new Haau3(); // reads HAAU3_API_KEY
// Open appointment slots, here in Cambridge.
const { slots } = await haau3.searchSlots({ city: "Cambridge", state: "MA", limit: 1 });
console.log(slots[0] ?? "No open slots matched.");
import json
from haau3 import Haau3
client = Haau3() # reads HAAU3_API_KEY
# Open appointment slots, here in Cambridge.
slots = client.search_slots(city="Cambridge", state="MA", limit=1)["slots"]
print(json.dumps(slots[0], indent=2) if slots else "No open slots matched.")
package main
import (
"context"
"encoding/json"
"fmt"
"log"
"github.com/haau3/haau3-go"
)
func main() {
ctx := context.Background()
client, err := haau3.NewClient() // reads HAAU3_API_KEY
if err != nil {
log.Fatal(err)
}
// Open appointment slots, here in Cambridge.
found, err := client.SearchSlots(ctx, haau3.SearchSlotsParams{City: new("Cambridge"), State: new("MA"), Limit: new(1)})
if err != nil {
log.Fatal(err)
}
if len(found.Slots) == 0 {
fmt.Println("No open slots matched.")
return
}
slot, err := json.MarshalIndent(found.Slots[0], "", " ")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(slot))
}
{
"total": 141,
"slots": [
{
"id": "slot-haau3-rad-20261103-0800",
"publisher": "haau3",
"scheduleId": "sched-haau3-radiology",
"status": "free",
"start": "2026-11-03T13:00:00.000Z",
"end": "2026-11-03T14:00:00.000Z",
"serviceTypeCode": "209",
"serviceTypeText": "Diagnostic Radiology/Xray/CT/Fluoroscopy",
"serviceTypes": [
{
"system": "http://terminology.hl7.org/CodeSystem/service-type",
"code": "209",
"display": "Diagnostic Radiology/Xray/CT/Fluoroscopy"
}
],
"acceptingPatients": "existptonly",
"isVirtual": false,
"bookingDeepLink": "https://docs.haau3.com/scheduling/slot-publisher?slot=slot-haau3-rad-20261103-0800",
"bookingPhone": "+1-617-555-0100",
"location": {
"id": "loc-haau3-imaging",
"identifier": [
{
"system": "https://haau3.com/synthetic/location",
"value": "loc-haau3-imaging"
}
],
"name": "haau3 Cambridge Imaging Center",
"phone": [
"+1-617-555-0188"
],
"website": [
"https://haau3.com/locations/imaging"
],
"addressLine": [
"55 Kendall Square"
],
"city": "Cambridge",
"state": "MA",
"postalCode": "02142",
"physicalType": {
"system": "http://hl7.org/fhir/uv/smart-scheduling-links/CodeSystem/temporary",
"code": "ph"
},
"description": "Ground floor, with a step-free entrance.",
"position": {
"latitude": 42.362611,
"longitude": -71.0876102
}
},
"provider": {
"id": "prac-haau3-radiology",
"identifier": [
{
"system": "https://haau3.com/synthetic/practitioner",
"value": "prac-haau3-radiology"
},
{
"system": "http://hl7.org/fhir/sid/us-npi",
"value": "1992700003"
}
],
"type": "practitioner-role",
"name": "Dr. Wei Chen",
"specialty": "Diagnostic Radiology Physician",
"specialties": [
{
"system": "http://nucc.org/provider-taxonomy",
"code": "2085R0202X",
"display": "Diagnostic Radiology Physician"
}
]
},
"source": {
"publisher": "haau3",
"resourceId": "slot-haau3-rad-20261103-0800",
"transactionTime": "2026-11-02T00:00:00.000Z",
"syncedAt": "2026-11-02T18:02:23.885Z"
}
}
]
}{
"type": "https://docs.haau3.com/errors#invalid-request",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "urn:uuid:0b6f2d4e-8c1a-4e3b-9f5d-2a7c6e1b4d90",
"code": "test-key-outside-sandbox",
"issues": [
{
"path": [
"<string>"
],
"message": "<string>"
}
]
}{
"type": "https://docs.haau3.com/errors#invalid-request",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "urn:uuid:0b6f2d4e-8c1a-4e3b-9f5d-2a7c6e1b4d90",
"code": "test-key-outside-sandbox",
"issues": [
{
"path": [
"<string>"
],
"message": "<string>"
}
]
}{
"type": "https://docs.haau3.com/errors#forbidden",
"title": "Forbidden",
"status": 403,
"detail": "This is a test key, which works only in the Sandbox (https://api.haau3.com/v1/sandbox/fhir/r4). Send this request with a live key; create one in the dashboard. See https://docs.haau3.com/authentication#test-and-live-keys",
"instance": "urn:uuid:0b6f2d4e-8c1a-4e3b-9f5d-2a7c6e1b4d90",
"code": "test-key-outside-sandbox"
}{
"type": "https://docs.haau3.com/errors#invalid-request",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "urn:uuid:0b6f2d4e-8c1a-4e3b-9f5d-2a7c6e1b4d90",
"code": "test-key-outside-sandbox",
"issues": [
{
"path": [
"<string>"
],
"message": "<string>"
}
]
}{
"type": "https://docs.haau3.com/errors#invalid-request",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "urn:uuid:0b6f2d4e-8c1a-4e3b-9f5d-2a7c6e1b4d90",
"code": "test-key-outside-sandbox",
"issues": [
{
"path": [
"<string>"
],
"message": "<string>"
}
]
}{
"type": "https://docs.haau3.com/errors#invalid-request",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "urn:uuid:0b6f2d4e-8c1a-4e3b-9f5d-2a7c6e1b4d90",
"code": "test-key-outside-sandbox",
"issues": [
{
"path": [
"<string>"
],
"message": "<string>"
}
]
}{
"type": "https://docs.haau3.com/errors#invalid-request",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "urn:uuid:0b6f2d4e-8c1a-4e3b-9f5d-2a7c6e1b4d90",
"code": "test-key-outside-sandbox",
"issues": [
{
"path": [
"<string>"
],
"message": "<string>"
}
]
}Search appointment slots
Returns provider availability slots matching the filters, with pagination. Requires a valid API key.
curl "https://api.haau3.com/v1/scheduling/slots?city=Cambridge&state=MA&limit=1" \
-H "Authorization: Bearer $HAAU3_API_KEY"import { Haau3 } from "@haau3/sdk";
const haau3 = new Haau3(); // reads HAAU3_API_KEY
// Open appointment slots, here in Cambridge.
const { slots } = await haau3.searchSlots({ city: "Cambridge", state: "MA", limit: 1 });
console.log(slots[0] ?? "No open slots matched.");
import json
from haau3 import Haau3
client = Haau3() # reads HAAU3_API_KEY
# Open appointment slots, here in Cambridge.
slots = client.search_slots(city="Cambridge", state="MA", limit=1)["slots"]
print(json.dumps(slots[0], indent=2) if slots else "No open slots matched.")
package main
import (
"context"
"encoding/json"
"fmt"
"log"
"github.com/haau3/haau3-go"
)
func main() {
ctx := context.Background()
client, err := haau3.NewClient() // reads HAAU3_API_KEY
if err != nil {
log.Fatal(err)
}
// Open appointment slots, here in Cambridge.
found, err := client.SearchSlots(ctx, haau3.SearchSlotsParams{City: new("Cambridge"), State: new("MA"), Limit: new(1)})
if err != nil {
log.Fatal(err)
}
if len(found.Slots) == 0 {
fmt.Println("No open slots matched.")
return
}
slot, err := json.MarshalIndent(found.Slots[0], "", " ")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(slot))
}
{
"total": 141,
"slots": [
{
"id": "slot-haau3-rad-20261103-0800",
"publisher": "haau3",
"scheduleId": "sched-haau3-radiology",
"status": "free",
"start": "2026-11-03T13:00:00.000Z",
"end": "2026-11-03T14:00:00.000Z",
"serviceTypeCode": "209",
"serviceTypeText": "Diagnostic Radiology/Xray/CT/Fluoroscopy",
"serviceTypes": [
{
"system": "http://terminology.hl7.org/CodeSystem/service-type",
"code": "209",
"display": "Diagnostic Radiology/Xray/CT/Fluoroscopy"
}
],
"acceptingPatients": "existptonly",
"isVirtual": false,
"bookingDeepLink": "https://docs.haau3.com/scheduling/slot-publisher?slot=slot-haau3-rad-20261103-0800",
"bookingPhone": "+1-617-555-0100",
"location": {
"id": "loc-haau3-imaging",
"identifier": [
{
"system": "https://haau3.com/synthetic/location",
"value": "loc-haau3-imaging"
}
],
"name": "haau3 Cambridge Imaging Center",
"phone": [
"+1-617-555-0188"
],
"website": [
"https://haau3.com/locations/imaging"
],
"addressLine": [
"55 Kendall Square"
],
"city": "Cambridge",
"state": "MA",
"postalCode": "02142",
"physicalType": {
"system": "http://hl7.org/fhir/uv/smart-scheduling-links/CodeSystem/temporary",
"code": "ph"
},
"description": "Ground floor, with a step-free entrance.",
"position": {
"latitude": 42.362611,
"longitude": -71.0876102
}
},
"provider": {
"id": "prac-haau3-radiology",
"identifier": [
{
"system": "https://haau3.com/synthetic/practitioner",
"value": "prac-haau3-radiology"
},
{
"system": "http://hl7.org/fhir/sid/us-npi",
"value": "1992700003"
}
],
"type": "practitioner-role",
"name": "Dr. Wei Chen",
"specialty": "Diagnostic Radiology Physician",
"specialties": [
{
"system": "http://nucc.org/provider-taxonomy",
"code": "2085R0202X",
"display": "Diagnostic Radiology Physician"
}
]
},
"source": {
"publisher": "haau3",
"resourceId": "slot-haau3-rad-20261103-0800",
"transactionTime": "2026-11-02T00:00:00.000Z",
"syncedAt": "2026-11-02T18:02:23.885Z"
}
}
]
}{
"type": "https://docs.haau3.com/errors#invalid-request",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "urn:uuid:0b6f2d4e-8c1a-4e3b-9f5d-2a7c6e1b4d90",
"code": "test-key-outside-sandbox",
"issues": [
{
"path": [
"<string>"
],
"message": "<string>"
}
]
}{
"type": "https://docs.haau3.com/errors#invalid-request",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "urn:uuid:0b6f2d4e-8c1a-4e3b-9f5d-2a7c6e1b4d90",
"code": "test-key-outside-sandbox",
"issues": [
{
"path": [
"<string>"
],
"message": "<string>"
}
]
}{
"type": "https://docs.haau3.com/errors#forbidden",
"title": "Forbidden",
"status": 403,
"detail": "This is a test key, which works only in the Sandbox (https://api.haau3.com/v1/sandbox/fhir/r4). Send this request with a live key; create one in the dashboard. See https://docs.haau3.com/authentication#test-and-live-keys",
"instance": "urn:uuid:0b6f2d4e-8c1a-4e3b-9f5d-2a7c6e1b4d90",
"code": "test-key-outside-sandbox"
}{
"type": "https://docs.haau3.com/errors#invalid-request",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "urn:uuid:0b6f2d4e-8c1a-4e3b-9f5d-2a7c6e1b4d90",
"code": "test-key-outside-sandbox",
"issues": [
{
"path": [
"<string>"
],
"message": "<string>"
}
]
}{
"type": "https://docs.haau3.com/errors#invalid-request",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "urn:uuid:0b6f2d4e-8c1a-4e3b-9f5d-2a7c6e1b4d90",
"code": "test-key-outside-sandbox",
"issues": [
{
"path": [
"<string>"
],
"message": "<string>"
}
]
}{
"type": "https://docs.haau3.com/errors#invalid-request",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "urn:uuid:0b6f2d4e-8c1a-4e3b-9f5d-2a7c6e1b4d90",
"code": "test-key-outside-sandbox",
"issues": [
{
"path": [
"<string>"
],
"message": "<string>"
}
]
}{
"type": "https://docs.haau3.com/errors#invalid-request",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "urn:uuid:0b6f2d4e-8c1a-4e3b-9f5d-2a7c6e1b4d90",
"code": "test-key-outside-sandbox",
"issues": [
{
"path": [
"<string>"
],
"message": "<string>"
}
]
}Authorizations
A live platform API key (haau3_sk_live_…), sent as Authorization: Bearer <key>. It works for every service outside the Sandbox. Create one on the API keys page at https://platform.haau3.com.
Headers
An id of your own for this request, as a UUID. It comes back in the X-Correlation-Id header and is kept with haau3's record of the request. Any value that is not a UUID is ignored. See https://docs.haau3.com/errors#request-ids.
Query Parameters
Slot availability state to return. Defaults to free.
free, busy, busy-unavailable, busy-tentative Filter to a single publisher (source) by slug, such as zocdoc or defacto. See GET /v1/scheduling/publishers for the available slugs.
1Filter by service type code (as published by the source). A slot matches when any of its serviceTypes carries the code. A comma-separated list (up to 100) matches a slot carrying any of them.
1Filter by the provider's National Provider Identifier: a clinician's, or an organization's when a healthcare service is the provider. Ten digits; a comma-separated list (up to 100) matches a slot whose provider carries any of them. Matched as the publisher sent it, in either NPI identifier system, across every publisher.
1Filter by specialty: a slot matches when its provider's specialties or its schedule's specialties carry the code. Send code to match it in any code system, or system|code to match it in that system only. Codes are each publisher's own and are not translated between code systems, so one code finds the publishers that use it; GET /v1/scheduling/specialties lists them. A specialty sent as text only cannot be matched. A comma-separated list (up to 100) matches any of them.
1Filter by appointment type.
1Filter to slots accepting patients of this kind (HL7 accepting-patients CodeSystem: newpt | existptonly | existptfam). Slots marked nopt (not accepting patients) are never served, so nopt is not a valid filter value. Lenient: a slot that does not declare an accepting-patients code matches any value (absence never hides a slot); a slot that declares one must equal the requested value.
newpt, existptonly, existptfam Filter to virtual (true) or in-person (false) slots.
Filter by the location's city.
1Filter by the location's state.
1Only slots starting at or after this instant: ISO 8601 with seconds and an offset, such as 2026-07-06T13:00:00-04:00 or 2026-07-06T17:00:00Z. A value without seconds is refused. When absent, slots start from now unless includePast=true.
Only slots starting at or before this instant: ISO 8601 with seconds and an offset, such as 2026-07-06T13:00:00-04:00 or 2026-07-06T17:00:00Z. A value without seconds is refused.
Include slots that started before now. Defaults to false: with no startAfter, results start from now. An explicit startAfter applies as given either way.
Opaque key of one provider location from GET /v1/scheduling/provider-locations. When set, returns exactly that provider location's slots. Treat the value as opaque; do not parse it.
1Page size, from 1 to 100. Defaults to 25.
1 <= x <= 100Number of slots to skip for pagination. Defaults to 0.
0 <= x <= 9007199254740991