Skip to main content
⏱️5 Minute Quickstart

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.

No credit card required
14-day free trial
2.5M+
Active Schedules
Running globally
99.97%
Execution Accuracy
On-time delivery
500+
Timezone Support
IANA timezones
<50ms
Avg Latency
Trigger to execution

Prerequisites

What you'll need before getting started

WAVE SDK

Install the WAVE SDK for your language of choice

npm install @wave/sdkpip install wave-sdkgo get github.com/wave-sdk/wave-go
API Key

Your WAVE API key with events scope enabled

sk_live_xxx...xxxCreate API Key →
Webhook Endpoint

A public HTTPS endpoint to receive event notifications

https://api.yourapp.com/webhooks

Schedule 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

ExpressionMeaningUse Case
0 9 * * *Every day at 9:00 AMDaily morning show
0 9 * * MON-FRIWeekdays at 9:00 AMBusiness hours content
0 19 * * FRIEvery Friday at 7:00 PMWeekly gaming night
0 0 1 * *1st of each month at midnightMonthly recap
*/15 * * * *Every 15 minutesFrequent updates
0 */6 * * *Every 6 hoursPeriodic checks
0 12 * * SUNEvery Sunday at noonWeekend special
30 8 15 * *15th of each month at 8:30 AMMid-month review

Available Actions

What you can trigger with scheduled events

Start Stream
stream_start

Automatically start a stream with preconfigured settings

streamId
quality
bitrate
recordingEnabled
Stop Stream
stream_stop

Gracefully stop a running stream

streamId
saveRecording
notifyViewers
Trigger Webhook
webhook

Send HTTP request to your endpoint

url
method
headers
payload
Start Recording
recording_start

Begin recording active stream

streamId
format
quality
storage
Send Notification
notification

Alert subscribers or team members

channels
message
recipients
Analytics Snapshot
analytics_snapshot

Capture current metrics and statistics

streamId
metrics
destination

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.000Z

Best Practices

Follow these guidelines for reliable, production-ready scheduling

Always Specify Timezone
critical

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'
}
Test Before Production
critical

Use the trigger endpoint with dryRun:true to validate schedules without executing actions.

await wave.events.triggerNow(scheduleId, { dryRun: true });
Implement Idempotency
high

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 handled
Configure Retry Policies
high

Set appropriate retry limits and backoff multipliers for mission-critical schedules.

retryPolicy: {
  maxRetries: 5,
  backoffMultiplier: 2,
  initialDelayMs: 1000
}
Use Tags for Organization
medium

Tag schedules for easy filtering, bulk operations, and cost attribution.

tags: ['production', 'morning-show', 'team-content']
Monitor Execution Metrics
medium

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

🏀
ESPN Brasil
Sports Broadcasting
"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."
RS
Ricardo Santos
Director of Broadcast Operations
47
Daily Broadcasts
12
Time Zones
99.99%
Reliability
🚴
Peloton
Fitness Streaming
"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."
JP
Jennifer Park
VP of Platform Engineering
200+
Daily Classes
99.97%
Execution Accuracy
2M/day
Push Notifications
📊
Goldman Sachs
Financial Services
"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."
DC
David Chen
Head of Digital Communications
340+
Investor Calls/Month
100%
Compliance Rate
Full
Audit Coverage

What's Next?

Explore more WAVE capabilities and integration patterns

Webhooks

Learn about event-driven webhooks and real-time notifications

View Webhook Docs

Stream Control API

Programmatically control WAVE streams via API

View API Docs

Recordings

Schedule automated recording and storage management

View Recordings
WAVE - Enterprise Live Streaming Platform