Event Scheduling
Automate Your Streaming Workflows
Schedule streams, trigger webhooks, and automate tasks with precision timing. Support for cron expressions, one-time events, and interval-based scheduling. Enterprise-grade reliability with 99.97% execution accuracy.
Prerequisites
What you'll need before getting started
Install the WAVE SDK for your language of choice
npm install @wave/sdkpip install wave-sdkgo get github.com/wave-sdk/wave-goA public HTTPS endpoint to receive event notifications
https://api.yourapp.com/webhooksSchedule Types
Choose the right scheduling pattern for your use case
Recurring Schedule Configuration
Configuration Example
{
"type": "recurring",
"cron": "0 9 * * MON-FRI",
"timezone": "America/New_York",
"startDate": "2024-01-01",
"endDate": "2024-12-31"
}Common Use Cases
- Daily morning shows
- Weekly tournaments
- Monthly town halls
- Business hours automation
Cron Expression Reference
Standard 5-field cron syntax: minute hour day month weekday
| Expression | Meaning | Use Case |
|---|---|---|
0 9 * * * | Every day at 9:00 AM | Daily morning show |
0 9 * * MON-FRI | Weekdays at 9:00 AM | Business hours content |
0 19 * * FRI | Every Friday at 7:00 PM | Weekly gaming night |
0 0 1 * * | 1st of each month at midnight | Monthly recap |
*/15 * * * * | Every 15 minutes | Frequent updates |
0 */6 * * * | Every 6 hours | Periodic checks |
0 12 * * SUN | Every Sunday at noon | Weekend special |
30 8 15 * * | 15th of each month at 8:30 AM | Mid-month review |
MON-FRI for weekdays, SAT,SUN for weekends, and */15 for every 15 units. All times are interpreted in the specified timezone.Available Actions
What you can trigger with scheduled events
stream_startAutomatically start a stream with preconfigured settings
stream_stopGracefully stop a running stream
webhookSend HTTP request to your endpoint
recording_startBegin recording active stream
notificationAlert subscribers or team members
analytics_snapshotCapture current metrics and statistics
Implementation Guide
Complete code examples in your preferred language
import { WaveClient } from '@wave/sdk';
const wave = new WaveClient({
apiKey: process.env.WAVE_API_KEY
});
// Create a recurring daily schedule at 9 AM Eastern
const schedule = await wave.events.createSchedule({
name: 'Daily Morning Show',
description: 'Automatically start morning broadcast',
type: 'stream_start',
schedule: {
type: 'recurring',
cron: '0 9 * * MON-FRI', // 9 AM Mon-Fri
timezone: 'America/New_York',
startDate: '2024-01-15',
endDate: '2024-12-31'
},
action: {
streamId: 'stream_abc123xyz',
action: 'start',
settings: {
quality: '1080p60',
bitrate: 8000,
recordingEnabled: true,
lowLatencyMode: true
}
},
webhook: {
url: 'https://api.yourapp.com/webhooks/stream-events',
headers: {
'Authorization': 'Bearer your-webhook-secret',
'Content-Type': 'application/json'
},
payload: {
eventType: 'scheduled_stream_started',
showName: 'Morning Show',
notifySubscribers: true
}
},
retryPolicy: {
maxRetries: 3,
backoffMultiplier: 2,
initialDelayMs: 1000
},
tags: ['morning-show', 'automated', 'recurring'],
metadata: {
createdBy: 'automation-system',
department: 'content'
}
});
console.log('Schedule created:', schedule.id);
console.log('Next execution:', schedule.nextExecution);
// Output:
// Schedule created: sched_9x8y7z6w5v4u
// Next execution: 2024-01-15T14:00:00.000ZBest Practices
Follow these guidelines for reliable, production-ready scheduling
Use IANA timezone identifiers (e.g., America/New_York) to ensure consistent execution across DST transitions.
schedule: {
timezone: 'America/New_York' // Not 'EST' or 'UTC-5'
}Use the trigger endpoint with dryRun:true to validate schedules without executing actions.
await wave.events.triggerNow(scheduleId, { dryRun: true });Design your webhook handlers to be idempotent—safe to retry without duplicate side effects.
// Use execution ID as idempotency key
const processed = await db.get(event.executionId);
if (processed) return; // Already handledSet appropriate retry limits and backoff multipliers for mission-critical schedules.
retryPolicy: {
maxRetries: 5,
backoffMultiplier: 2,
initialDelayMs: 1000
}Tag schedules for easy filtering, bulk operations, and cost attribution.
tags: ['production', 'morning-show', 'team-content']Track success rates, execution duration, and failure patterns to identify issues early.
const stats = await wave.events.getScheduleStats(scheduleId);
console.log('Success rate:', stats.successRate);Troubleshooting
Common issues and how to resolve them
Success Stories
How leading companies automate with WAVE scheduling
"WAVE's event scheduling transformed our live sports coverage. We now automate 47 daily broadcasts across 12 time zones with 99.99% reliability. Our production team's workload dropped 60%, and we haven't missed a single scheduled broadcast in 18 months."
"Our class schedule is the backbone of our business. WAVE handles 200+ scheduled live classes daily, automatically starting streams, notifying instructors, and triggering our iOS/Android push notifications. The webhook integration is flawless."
"Compliance requires our investor calls to start precisely on time with automatic recording. WAVE's scheduling API gives us audit trails for every execution, SOC 2 compliant logging, and the reliability our legal team demands. Zero missed calls in 2 years."
What's Next?
Explore more WAVE capabilities and integration patterns
Webhooks
Learn about event-driven webhooks and real-time notifications
View Webhook DocsStream Control API
Programmatically control WAVE streams via API
View API DocsRecordings
Schedule automated recording and storage management
View Recordings