Developer Platform & API Reference
SetSoon is built API-first. Every workflow possible in the administrative dashboard—calculating real-time availability, executing atomic slot holds, dispatching weighted round-robin bookings, and triggering multi-channel notifications—can be fully automated via our secure REST endpoints and webhooks.
Authenticate all requests by including your API Secret Key in the standard HTTP Authorization header using the Bearer scheme:
Authorization: Bearer sk_test_your_api_key_here
SetSoon supports idempotent mutations. Include an Idempotency-Key UUID header on state-changing requests (`POST /api/v1/bookings`) to safely retry network failures without creating duplicate appointments.
Calculates real-time available time windows factoring in service duration, provider schedules, multi-resource constraints, travel buffers, and active temporary holds.
curl -X POST https://setsoon.com/api/v1/availability/query \
-H "Authorization: Bearer sk_test_demo_key" \
-H "Content-Type: application/json" \
-d '{
"service_id": "svc_strategy_60",
"start_date": "2026-09-25",
"end_date": "2026-09-26",
"timezone": "America/New_York"
}'
Inspects a candidate time slot and returns a complete explainability breakdown covering staff schedule checks, room availability, equipment allocation, and buffer rules.
curl -X POST https://setsoon.com/api/v1/availability/inspect \
-H "Authorization: Bearer sk_test_demo_key" \
-H "Content-Type: application/json" \
-d '{
"service_id": "svc_strategy_60",
"start_time": "2026-09-25 10:00:00"
}'
Run hypothetical scenarios (e.g., adding staff or reducing buffer times from 30 min to 15 min) and calculate projected monthly meeting capacity increase.
curl -X POST https://setsoon.com/api/v1/availability/simulate \
-H "Authorization: Bearer sk_test_demo_key" \
-H "Content-Type: application/json" \
-d '{
"proposed_buffer_minutes": 15,
"add_staff_count": 2
}'
Atomically locks a slot for up to 10 minutes while a prospective client fills out custom forms or completes credit card authorization, eliminating booking collisions.
curl -X POST https://setsoon.com/api/v1/holds \
-H "Authorization: Bearer sk_test_demo_key" \
-H "Content-Type: application/json" \
-d '{
"service_id": 1,
"start_time": "2026-09-25 14:00:00",
"end_time": "2026-09-25 15:00:00",
"duration_minutes": 10
}'
Confirms an appointment transactionally, assigns staff/room resources, triggers webhooks, and dispatches automated calendar invitations.
curl -X POST https://setsoon.com/api/v1/bookings \
-H "Authorization: Bearer sk_test_demo_key" \
-H "Idempotency-Key: e82491a2-3f19-4821-b489-0192841" \
-H "Content-Type: application/json" \
-d '{
"service_id": 1,
"start_time": "2026-09-25 14:00:00",
"customer": {
"name": "Morgan Blake",
"email": "morgan@enterprise.com",
"phone": "+14155550198"
}
}'
SetSoon sends real-time HTTP POST events (`booking.created`, `booking.rescheduled`, `booking.cancelled`). Verify incoming event signatures to guarantee authenticity:
const crypto = require('crypto');
function verifyWebhook(req, signingSecret) {
const signature = req.headers['x-setsoon-signature'];
const timestamp = req.headers['x-setsoon-timestamp'];
const payload = req.rawBody;
const expected = crypto
.createHmac('sha256', signingSecret)
.update(`${timestamp}.${payload}`)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expected)
);
}
Add high-conversion, native booking flows to any webpage with one lightweight tag. No iframe boundaries or cookie restrictions:
<!-- 1. Include SetSoon Universal SDK -->
<script src="https://setsoon.com/embed.js" async></script>
<!-- 2. Inline Booking Container -->
<div data-setsoon-embed="demo" data-theme="auto"></div>
<!-- 3. Or trigger as a seamless modal popup -->
<button onclick="SetSoon.openModal({ slug: 'demo' })">
Book Strategy Call
</button>