curl --request POST \
--url https://api.dialtu.com/api/v2/public/calendar/waitlist/entries \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"client_id": 123,
"phone": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"email": "<string>",
"waitlist_id": 123,
"service_ids": [
123
],
"service_names": [
"<string>"
],
"priority": 1,
"preferred_professional_id": 123,
"earliest_date": "<string>",
"latest_date": "<string>",
"time_preference": "<string>",
"notes": "<string>"
}
'import requests
url = "https://api.dialtu.com/api/v2/public/calendar/waitlist/entries"
payload = {
"client_id": 123,
"phone": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"email": "<string>",
"waitlist_id": 123,
"service_ids": [123],
"service_names": ["<string>"],
"priority": 1,
"preferred_professional_id": 123,
"earliest_date": "<string>",
"latest_date": "<string>",
"time_preference": "<string>",
"notes": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
client_id: 123,
phone: '<string>',
first_name: '<string>',
last_name: '<string>',
email: '<string>',
waitlist_id: 123,
service_ids: [123],
service_names: ['<string>'],
priority: 1,
preferred_professional_id: 123,
earliest_date: '<string>',
latest_date: '<string>',
time_preference: '<string>',
notes: '<string>'
})
};
fetch('https://api.dialtu.com/api/v2/public/calendar/waitlist/entries', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": {
"client_id": 123,
"client_created": true,
"entries": [
{
"id": 123,
"waitlist_id": 123,
"client": {
"id": 123,
"first_name": "<string>",
"last_name": "<string>",
"phone": "<string>",
"email": "<string>"
},
"service": {
"id": 123,
"name": "<string>"
},
"status": "<string>",
"priority": 123,
"source": "<string>",
"created_at": "<string>",
"position": 123,
"queue_attempts": 0,
"flagged_for_review": false,
"snooze_until": "<string>",
"queued_at": "<string>",
"seat_expires_at": "<string>",
"preferred_professional_id": 123,
"preferred_professional_name": "<string>",
"earliest_date": "<string>",
"latest_date": "<string>",
"preferred_time_windows": [
"<string>"
],
"notes": "",
"days_waiting": 0,
"resolved_at": "<string>",
"resolution_reason": "<string>",
"created": true
}
]
},
"status": "success"
}Add a client to the waiting list
Put a client on the waiting list for each named service.
Idempotent: an open entry for the same (client, service) is updated with
the preferences sent and returned with created: false; a new one is
created: true. Always 200 on success. The client is identified by
client_id OR phone (E.164) — phone-less contacts must be sent by
client_id.
curl --request POST \
--url https://api.dialtu.com/api/v2/public/calendar/waitlist/entries \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"client_id": 123,
"phone": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"email": "<string>",
"waitlist_id": 123,
"service_ids": [
123
],
"service_names": [
"<string>"
],
"priority": 1,
"preferred_professional_id": 123,
"earliest_date": "<string>",
"latest_date": "<string>",
"time_preference": "<string>",
"notes": "<string>"
}
'import requests
url = "https://api.dialtu.com/api/v2/public/calendar/waitlist/entries"
payload = {
"client_id": 123,
"phone": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"email": "<string>",
"waitlist_id": 123,
"service_ids": [123],
"service_names": ["<string>"],
"priority": 1,
"preferred_professional_id": 123,
"earliest_date": "<string>",
"latest_date": "<string>",
"time_preference": "<string>",
"notes": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
client_id: 123,
phone: '<string>',
first_name: '<string>',
last_name: '<string>',
email: '<string>',
waitlist_id: 123,
service_ids: [123],
service_names: ['<string>'],
priority: 1,
preferred_professional_id: 123,
earliest_date: '<string>',
latest_date: '<string>',
time_preference: '<string>',
notes: '<string>'
})
};
fetch('https://api.dialtu.com/api/v2/public/calendar/waitlist/entries', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": {
"client_id": 123,
"client_created": true,
"entries": [
{
"id": 123,
"waitlist_id": 123,
"client": {
"id": 123,
"first_name": "<string>",
"last_name": "<string>",
"phone": "<string>",
"email": "<string>"
},
"service": {
"id": 123,
"name": "<string>"
},
"status": "<string>",
"priority": 123,
"source": "<string>",
"created_at": "<string>",
"position": 123,
"queue_attempts": 0,
"flagged_for_review": false,
"snooze_until": "<string>",
"queued_at": "<string>",
"seat_expires_at": "<string>",
"preferred_professional_id": 123,
"preferred_professional_name": "<string>",
"earliest_date": "<string>",
"latest_date": "<string>",
"preferred_time_windows": [
"<string>"
],
"notes": "",
"days_waiting": 0,
"resolved_at": "<string>",
"resolution_reason": "<string>",
"created": true
}
]
},
"status": "success"
}Autorizaciones
API key created in the dashboard under Settings → API Keys. Send it as Authorization: Bearer pk_....
Cuerpo
Body of POST /calendar/waitlist/entries.
Identify the client with EITHER client_id (a contact already in this
workspace) OR phone (E.164; the contact is matched by phone or created
with the given names/email). Name the services by service_ids or
service_names. waitlist_id is optional: left out, each service is
routed to the active list that contains it.
An existing contact's id
E.164 phone, e.g. +573001112233 (alternative to client_id)
Given name, used only when the contact is created.
100Family name, used only when the contact is created.
100Email, used only when the contact is created.
255Target list; omitted → resolved per service
Services by id
Services by exact name (case-insensitive)
0 urgent, 1 high, 2 normal (default), 3 low
0 <= x <= 3calendar_profile_id the client would rather wait for
YYYY-MM-DD
YYYY-MM-DD
any | morning | afternoon | evening
Free text shown to the team on the entry.
2000