Skip to main content

Code Examples

Node.js — Create a Booking

const response = await fetch('https://api-spaceos.zenspace.io/api/v1/bookings', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${jwt}`
},
body: JSON.stringify({
meeting_space_id: 'ms-abc123',
start_time: '2025-01-15T10:00:00Z',
end_time: '2025-01-15T11:00:00Z',
organizer_name: 'John Doe',
organizer_email: 'john@example.com'
})
});

const { data } = await response.json();
console.log('Booking created:', data.id);

Python — List Available Spaces

import requests

response = requests.get(
'https://api-spaceos.zenspace.io/api/v1/meeting-spaces',
headers={'Authorization': f'Bearer {jwt}'},
params={'organization_id': 'org-123'}
)

spaces = response.json()['data']
for space in spaces:
print(f"{space['name']} — Capacity: {space['capacity']}")

cURL — Check Availability

curl "https://api-spaceos.zenspace.io/api/v1/meeting-spaces/ms-abc123/availability?date=2025-01-15" \
-H "Authorization: Bearer YOUR_JWT"

Webhook Handler (Node.js/Express)

const crypto = require('crypto');

app.post('/webhooks/spaceos', (req, res) => {
// Verify signature
const signature = req.headers['x-webhook-signature'];
const expected = crypto
.createHmac('sha256', WEBHOOK_SECRET)
.update(JSON.stringify(req.body))
.digest('hex');

if (signature !== expected) {
return res.status(401).send('Invalid signature');
}

// Process event
const { event, data } = req.body;
switch (event) {
case 'booking.created':
console.log('New booking:', data.booking_id);
break;
case 'booking.cancelled':
console.log('Booking cancelled:', data.booking_id);
break;
}

res.status(200).send('OK');
});

Next Steps