Request
Live stream URL to monitor. Supports YouTube (youtube.com/watch?v=,
youtu.be/) and Twitch (twitch.tv/channel) formats.
Natural language condition to watch for. Be specific for better accuracy.Good: “Is it snowing? Look for falling snowflakes or white accumulation on surfaces.”Bad: “Snow?”
URL to receive webhook notifications when the condition is triggered.
How often to check the stream (5-300 seconds).
model
string
default:"gemini-2.5-flash"
VLM model to use. Options: gemini-2.5-flash, gemini-2.0-flash,
gpt-4o-mini, gpt-4o
Enable motion + YOLO pre-filtering to reduce API costs.
Skip livestream validation if already validated by /validate-url. Use this
to avoid redundant validation calls when pre-validating URLs in the frontend.
Response
Unique identifier for the job. Use this to check status or cancel.
Job status: pending, running, stopped, completed, failed
Always live-monitor for this endpoint.
ISO 8601 timestamp when the job was created.
The YouTube URL being monitored.
Job configuration and statistics.
curl -X POST https://vibestream-production-64f3.up.railway.app/live-monitor \
-H "Content-Type: application/json" \
-d '{
"youtube_url": "https://youtube.com/watch?v=abc123",
"condition": "Is there a traffic accident?",
"webhook_url": "https://example.com/webhook",
"interval_seconds": 15,
"model": "gemini-2.0-flash"
}'
{
"job_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "running",
"job_type": "live-monitor",
"created_at": "2024-01-26T10:30:00Z",
"youtube_url": "https://youtube.com/watch?v=abc123",
"details": {
"condition": "Is there a traffic accident?",
"interval_seconds": 15,
"model": "gemini-2.0-flash"
}
}
Webhook Payload
When the condition is triggered, VibeStream sends a POST request to your webhook URL:
{
"type": "live_monitor_triggered",
"timestamp": "2024-01-26T10:35:00Z",
"source_url": "https://youtube.com/watch?v=abc123",
"data": {
"condition": "Is there a traffic accident?",
"triggered": true,
"explanation": "A multi-car collision is visible on the highway. Emergency vehicles are responding.",
"frame_b64": "base64-encoded-jpeg..."
}
}
The frame_b64 field contains the actual frame that triggered the condition,
useful for verification or logging.
Job Statistics
After running, check the job to see performance metrics:
curl https://vibestream-production-64f3.up.railway.app/jobs/YOUR_JOB_ID
{
"job_id": "a1b2c3d4...",
"status": "running",
"details": {
"checks_performed": 45,
"triggers_fired": 3,
"frames_skipped": 112
}
}
- checks_performed: Frames that hit the VLM
- triggers_fired: Times the condition was true
- frames_skipped: Frames filtered by pre-filter (cost savings!)