Getting Appointments
Retrieve a single appointment by ID or search your appointment history with filters using the GET /v1/appointments endpoints.
Before You Begin
Your API key requires the appointments:read scope.
Get a Single Appointment
- Endpoint:
GET https://api.huskyvoice.ai/v1/appointments/{appointment_id} - Required scope:
appointments:read
- cURL
- Python
- JavaScript
- n8n
curl -s https://api.huskyvoice.ai/v1/appointments/appt_a1b2c3d4e5 \
-H "Authorization: Bearer YOUR_API_KEY"
import requests
appointment_id = "appt_a1b2c3d4e5"
url = f"https://api.huskyvoice.ai/v1/appointments/{appointment_id}"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
response = requests.get(url, headers=headers)
print(response.json())
const appointmentId = "appt_a1b2c3d4e5";
const response = await fetch(
`https://api.huskyvoice.ai/v1/appointments/${appointmentId}`,
{ headers: { "Authorization": "Bearer YOUR_API_KEY" } }
);
const data = await response.json();
console.log(data);
Credential setup
Create an HTTP Header Auth credential in n8n: set Name to Authorization and Value to Bearer YOUR_API_KEY. Select it in the HTTP Request node's Authentication field.
{
"name": "HuskyVoice – Get Appointment",
"nodes": [
{
"parameters": {
"method": "GET",
"url": "https://api.huskyvoice.ai/v1/appointments/appt_a1b2c3d4e5",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth"
},
"id": "1",
"name": "Get Appointment",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [250, 300]
}
],
"connections": {},
"settings": {},
"meta": { "instanceId": "huskyvoice-docs" }
}
Response — 200 OK
{
"success": true,
"data": {
"appointment_id": "appt_a1b2c3d4e5",
"appointment_type": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"branch_id": "branch_uuid_here",
"date": "2026-06-15",
"session": "Morning",
"batch": "MA",
"token": null,
"patient_name": "Aadhi",
"parent_phone": "+919840XXXXXX",
"assigned_doctor": null,
"status": "confirmed",
"external_reference_id": null,
"created_at": "2026-05-26T10:00:00.000Z",
"updated_at": "2026-05-26T10:00:00.000Z"
}
}
Returns 404 NOT_FOUND if no appointment with that ID exists in your organization.
Search Appointments
- Endpoint:
GET https://api.huskyvoice.ai/v1/appointments - Required scope:
appointments:read
All query parameters are optional. Results are sorted by appointment date ascending.
| Parameter | Type | Description |
|---|---|---|
date | string | Filter by date — YYYY-MM-DD (matches the full day in UTC) |
status | string | Filter by status: confirmed, rescheduled, cancelled, completed |
appointment_type | string | Filter by service UUID |
branch_id | string | Filter by branch UUID |
session | string | Filter by session: Morning, Afternoon, or Evening |
batch | string | Filter by batch label (e.g. "MA") |
page | integer | Page number — defaults to 1 |
limit | integer | Results per page — defaults to 50, max 200 |
- cURL
- Python
- JavaScript
- n8n
curl -s "https://api.huskyvoice.ai/v1/appointments?date=2026-06-15&session=Morning&page=1&limit=50" \
-H "Authorization: Bearer YOUR_API_KEY"
import requests
url = "https://api.huskyvoice.ai/v1/appointments"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
params = {
"date": "2026-06-15",
"session": "Morning",
"page": 1,
"limit": 50
}
response = requests.get(url, headers=headers, params=params)
print(response.json())
const params = new URLSearchParams({
date: "2026-06-15",
session: "Morning",
page: "1",
limit: "50"
});
const response = await fetch(
`https://api.huskyvoice.ai/v1/appointments?${params}`,
{ headers: { "Authorization": "Bearer YOUR_API_KEY" } }
);
const data = await response.json();
console.log(data);
Credential setup
Create an HTTP Header Auth credential in n8n: set Name to Authorization and Value to Bearer YOUR_API_KEY. Select it in the HTTP Request node's Authentication field.
{
"name": "HuskyVoice – Search Appointments",
"nodes": [
{
"parameters": {
"method": "GET",
"url": "https://api.huskyvoice.ai/v1/appointments",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendQuery": true,
"queryParameters": {
"parameters": [
{ "name": "date", "value": "2026-06-15" },
{ "name": "session", "value": "Morning" },
{ "name": "page", "value": "1" },
{ "name": "limit", "value": "50" }
]
}
},
"id": "1",
"name": "Search Appointments",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [250, 300]
}
],
"connections": {},
"settings": {},
"meta": { "instanceId": "huskyvoice-docs" }
}
Response — 200 OK
{
"success": true,
"data": [
{
"appointment_id": "appt_a1b2c3d4e5",
"appointment_type": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"branch_id": "branch_uuid_here",
"date": "2026-06-15",
"session": "Morning",
"batch": "MA",
"token": null,
"patient_name": "Aadhi",
"parent_phone": "+919840XXXXXX",
"assigned_doctor": null,
"status": "confirmed",
"external_reference_id": null,
"created_at": "2026-05-26T10:00:00.000Z",
"updated_at": "2026-05-26T10:00:00.000Z"
}
],
"pagination": {
"total": 1,
"page": 1,
"limit": 50,
"total_pages": 1
}
}
Error Codes
| Status | Code | Cause |
|---|---|---|
404 | NOT_FOUND | Appointment not found (single-fetch only) |
403 | INSUFFICIENT_SCOPE | API key does not have appointments:read scope |