Install
openclaw skills install trio-stream-visionAnalyze any YouTube livestream or RTSP camera feed using natural language — ask what's happening, detect specific events, or get periodic summaries. Powered...
openclaw skills install trio-stream-visionPaste a YouTube Live URL, RTSP camera feed, or HLS stream — ask questions about what's happening in plain English. Detect events, monitor conditions, and get periodic summaries, all without writing ML pipelines. Powered by Trio's Reality-as-an-API.
export TRIO_API_KEY=your_key_herehttps://trio.machinefi.com/apiAsk a yes/no question about what's currently visible on a stream. Costs 1 credit ($0.01).
curl -s -X POST "https://trio.machinefi.com/api/check-once" \
-H "Authorization: Bearer $TRIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"stream_url": "STREAM_URL_HERE",
"condition": "NATURAL_LANGUAGE_CONDITION_HERE"
}' | python3 -m json.tool
Optional parameters:
"include_frame": true — returns the analyzed frame as base64 image"input_mode": "clip" — analyze a short video clip instead of a single frame (better for motion detection)"clip_duration_seconds": 5 — clip length (1-10 seconds, only with clip/hybrid mode)Response fields:
triggered (boolean) — whether the condition matchedexplanation (string) — VLM's reasoning about what it seeslatency_ms — processing time in millisecondsInput mode guidance:
"frames" (default) for static objects: "Is there a car in the driveway?", "Is the door open?""clip" for motion/actions: "Is someone walking?", "Did a package get delivered?""hybrid" for maximum accuracy (costs more)Monitor a stream continuously and get alerted when a condition becomes true. Costs 2 credits/min ($0.02/min).
curl -s -X POST "https://trio.machinefi.com/api/live-monitor" \
-H "Authorization: Bearer $TRIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"stream_url": "STREAM_URL_HERE",
"condition": "NATURAL_LANGUAGE_CONDITION_HERE",
"interval_seconds": 10,
"monitor_duration_seconds": 600,
"max_triggers": 1
}' | python3 -m json.tool
Optional parameters:
"webhook_url": "https://your-server.com/webhook" — receive HTTP POST notifications on trigger"interval_seconds": 10 — check frequency (5-300 seconds)"monitor_duration_seconds": 600 — how long to monitor (min 5 seconds)"trigger_cooldown_seconds": 60 — minimum seconds between triggers"max_triggers": null — set to null for unlimited triggers"input_mode": "clip" — default for live-monitor, good for motionResponse: Returns a job_id. Use it to check status or cancel.
Delivery modes (automatic based on request):
webhook_url is set → events POST to your webhookAccept: text/event-stream header is set (no webhook) → SSE streamGET /jobs/{job_id}Get narrative summaries of what's happening on a stream at regular intervals. Costs 2 credits/min ($0.02/min).
curl -s -X POST "https://trio.machinefi.com/api/live-digest" \
-H "Authorization: Bearer $TRIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"stream_url": "STREAM_URL_HERE",
"window_minutes": 10,
"capture_interval_seconds": 60
}' | python3 -m json.tool
Optional parameters:
"window_minutes": 10 — summary window length (1-60 minutes)"capture_interval_seconds": 60 — frame capture frequency (10-300 seconds)"webhook_url": "https://..." — receive summaries via webhook"max_windows": 3 — number of summary windows before stopping"include_frames": true — embed frames in summariesResponse: Returns a job_id.
curl -s "https://trio.machinefi.com/api/jobs/JOB_ID_HERE" \
-H "Authorization: Bearer $TRIO_API_KEY" | python3 -m json.tool
Job statuses: pending, running, stopped, completed, failed
curl -s "https://trio.machinefi.com/api/jobs?limit=20&offset=0" \
-H "Authorization: Bearer $TRIO_API_KEY" | python3 -m json.tool
Optional query params: status=running, type=live-monitor, limit=20, offset=0
curl -s -X DELETE "https://trio.machinefi.com/api/jobs/JOB_ID_HERE" \
-H "Authorization: Bearer $TRIO_API_KEY" | python3 -m json.tool
triggered result and explanation to the userAll errors return this structure:
{
"error": {
"code": "ERROR_CODE",
"message": "Human-readable description",
"remediation": "Actionable fix suggestion"
}
}
Common error codes:
NOT_LIVESTREAM — URL is not a live stream. Confirm it's actively broadcasting.STREAM_FETCH_FAILED — Cannot reach the stream. Check URL and network.STREAM_OFFLINE — Stream exists but is offline. Wait for it to go live.MAX_JOBS_REACHED — Too many concurrent jobs. Cancel old ones with DELETE /jobs/{id}.If you get an error, always show the remediation field to the user — it contains actionable guidance.
| Action | Cost |
|---|---|
| Check once | $0.01 / request |
| Live monitor | $0.02 / minute |
| Live digest | $0.02 / minute |
Free tier: 100 credits ($1.00) on signup at https://console.machinefi.com
explanation field from check-once responses — it provides the VLM's reasoning.