curl --request GET \
--url https://api.haau3.com/v1/scheduling/slots \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.haau3.com/v1/scheduling/slots"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.haau3.com/v1/scheduling/slots', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.haau3.com/v1/scheduling/slots",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.haau3.com/v1/scheduling/slots"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.haau3.com/v1/scheduling/slots")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.haau3.com/v1/scheduling/slots")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"slots": [
{
"id": "<string>",
"publisher": "<string>",
"scheduleId": "<string>",
"status": "free",
"start": "2023-11-07T05:31:56Z",
"end": "2023-11-07T05:31:56Z",
"serviceTypeCode": "<string>",
"serviceTypeText": "<string>",
"appointmentType": "<string>",
"acceptingPatients": "nopt",
"isVirtual": true,
"bookingDeepLink": "<string>",
"bookingPhone": "<string>",
"location": {
"id": "<string>",
"identifier": [
{
"value": "<string>",
"system": "<string>"
}
],
"name": "<string>",
"phone": [
"<string>"
],
"website": [
"<string>"
],
"addressLine": [
"<string>"
],
"city": "<string>",
"state": "<string>",
"postalCode": "<string>"
},
"provider": {
"id": "<string>",
"identifier": [
{
"value": "<string>",
"system": "<string>"
}
],
"type": "practitioner",
"name": "<string>",
"specialty": "<string>"
}
}
],
"total": 4503599627370495
}{
"error": "Invalid query parameters",
"issues": [
{}
]
}{
"error": "API key required",
"message": "<string>"
}{
"error": "Scheduling unavailable",
"message": "<string>"
}Search appointment slots
Returns provider availability slots matching the filters, with pagination. Requires a valid API key.
curl --request GET \
--url https://api.haau3.com/v1/scheduling/slots \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.haau3.com/v1/scheduling/slots"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.haau3.com/v1/scheduling/slots', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.haau3.com/v1/scheduling/slots",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.haau3.com/v1/scheduling/slots"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.haau3.com/v1/scheduling/slots")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.haau3.com/v1/scheduling/slots")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"slots": [
{
"id": "<string>",
"publisher": "<string>",
"scheduleId": "<string>",
"status": "free",
"start": "2023-11-07T05:31:56Z",
"end": "2023-11-07T05:31:56Z",
"serviceTypeCode": "<string>",
"serviceTypeText": "<string>",
"appointmentType": "<string>",
"acceptingPatients": "nopt",
"isVirtual": true,
"bookingDeepLink": "<string>",
"bookingPhone": "<string>",
"location": {
"id": "<string>",
"identifier": [
{
"value": "<string>",
"system": "<string>"
}
],
"name": "<string>",
"phone": [
"<string>"
],
"website": [
"<string>"
],
"addressLine": [
"<string>"
],
"city": "<string>",
"state": "<string>",
"postalCode": "<string>"
},
"provider": {
"id": "<string>",
"identifier": [
{
"value": "<string>",
"system": "<string>"
}
],
"type": "practitioner",
"name": "<string>",
"specialty": "<string>"
}
}
],
"total": 4503599627370495
}{
"error": "Invalid query parameters",
"issues": [
{}
]
}{
"error": "API key required",
"message": "<string>"
}{
"error": "Scheduling unavailable",
"message": "<string>"
}Authorizations
Your platform API key (haau3_sk_…), sent as Authorization: Bearer <key>.
Query Parameters
Slot availability state to return. Defaults to free.
free, busy, busy-unavailable, busy-tentative Filter to a single publisher (source) by slug — e.g. zocdoc, defacto. See GET /v1/scheduling/publishers for the available slugs.
1Filter by service type code (as published by the source).
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 ISO 8601 instant (with offset).
Only slots starting at or before this ISO 8601 instant (with offset).
Opaque actor key from GET /v1/scheduling/actors. When set, returns exactly that booking entity's slots — the drill-down for a card. Treat the value as opaque; do not parse it.
1Page size (1–100). Defaults to 25.
1 <= x <= 100Number of slots to skip for pagination. Defaults to 0.
0 <= x <= 9007199254740991