AutoVision.dev
DEVELOPER REFERENCE

Visual observations.
One straightforward API.

Add image and sampled-video analysis to your application. Use the same organization-scoped API key for REST and MCP. Signed-in console users run jobs with their session—no pasted key.

OpenAPI JSON ↗

Authentication and limits

Create an API key in the console’s Settings. Send Authorization: Bearer av_…. Keys are revealed once, stored hashed, and revocable. Requests are bounded to 4 MB, 12 frames, and a 30-second timeline. Images must be base64 JPEG/PNG, at most 2048 pixels on either axis; the browser demo downsizes uploads to 640 pixels.

POST/api/v1/analyze

Image or sampled-video analysis

Each frame consumes one image-quota unit. Results include measured observations, per-frame OpenCV object boxes (person plus requested COCO labels), a timeline of per-frame motion (at_ms, motion, detected; the first frame has no predecessor, so its motion is null), optional AI summary, and a private job ID.

curl --fail-with-body https://autovision.dev/api/v1/analyze \
  -H "Authorization: Bearer $AUTOVISION_API_KEY" \
  -H "Content-Type: application/json" \
  --data-binary @analysis.json
{
  "frames": [
    {"image": "<base64-jpeg-first-frame>", "at_ms": 0},
    {"image": "<base64-jpeg-next-frame>", "at_ms": 1000}
  ],
  "classify": true
}

A single image can use {"image":"<base64-jpeg>","classify":true}. Classification uses the deployment’s configured vision-capable Bedrock model; inspect classification.status rather than assuming it succeeded. AI interpretation is advisory. Set detection_labels to a catalog-label array to override your organization’s Settings selection, for example ["dog","package"]. COCO labels such as dog are detected by the OpenCV 5 YOLOX model on every frame, with or without classification; detector scores are not calibrated probabilities. package, smoke and fire are advisory Bedrock grounding and require classify:true.

POST/api/v1/faces

Stateless face measurements

Use the same bearer key and bounded image/frames input with classify:false. The standard vision image includes pinned YuNet/SFace models that return normalized face boxes and 128-number embeddings, with exact model checksum IDs. Each frame consumes a quota unit. This endpoint does not create job history, identify people, maintain a gallery, or invoke Bedrock. Rebuild and deploy the updated image to enable this endpoint; missing or invalid models return unavailable. Treat embeddings as sensitive biometric data: do not log them or expose them to browser clients by default. Your application owns enrollment consent, matching, retention and decisions; a similarity match is not identity or liveness verification.

See the model setup and privacy contract. Face measurements are not exposed by the default MCP tools.

POST/api/v1/detect

Legacy motion comparison

Send image and previous_image, or demo:true, with the same API key. This compatibility endpoint compares two frames; both analysis endpoints record private job history. Use analyze for new integrations.

POST/mcp

Connect an AI agent

Stateless Streamable HTTP with analyze_image and analyze_video_frames. The same key and quotas apply. Connection guide ↗

Camera → AutoVision → your workflow

Your authorized camera adapter samples frames and submits them to analyze. Read the returned observations and scene summary, then publish the relevant signal to SmartDetector or your own event system. AutoVision does not open Ring feeds or call arbitrary callback URLs. A viewer cannot determine criminal intent from appearance alone.

camera adapter → timed JPEG frames → AutoVision
AutoVision → observations + summary + job_id → your event pipeline

Live pipeline events

Send Accept: text/event-stream to the same analyze endpoint. Pipeline events include run.started, step.added, step.started, step.completed, step.failed, run.completed and run.failed. The Decider dynamically adds actual tool calls. Final data contains the analysis and job ID. Default requests still return ordinary JSON. Cancel the request to abort outstanding work where supported; no stream resume or automatic retry is provided.

Homepage uploads use the bounded anonymous live pipeline. Prerecorded clips replay cached reports without inference charges. Only concise decision summaries and observable results are displayed, never hidden model chain-of-thought.

Discover lenses and AI models

Authenticated GET /api/v1/lenses lists implemented, separate-API and planned lenses plus approved model keys and skills. Discovery has no inference charge. Organization settings choose planner, scene, package and activity models from this registry. Planned adapters are not executable. Operators register and verify models; customers cannot submit arbitrary model IDs. MCP exposes the same discovery through list_vision_lenses.

Build autonomous apps

Your app supplies frames → OpenCV measures objects and brightness → Bedrock selects a bounded inspection → actual tool results change its next decision → your app applies its own approval and notification policy. Examples include camera-event triage, pet observation, and visual inventory review. This API does not grant permission for physical or security actions.

Autonomous inspection

Send enhanced:true with classify:true to opt into a bounded Bedrock-planned inspection using supplied frames. Set enhanced false to disable it; omission inherits organization settings. Follow-ups can crop/re-detect with OpenCV 5, enhance low light with CLAHE and re-detect, or request focused scene assessment. Each follow-up consumes an additional image quota unit. Read inspection.status, review_recommended, reason, and trace. Failures retain initial observations and recommend review. No notifications or external actions are performed. inspect_scene exposes the same loop through MCP.

Handle the result

A review recommendation can create a task in your app or notify its configured operator. Missing models, timeouts and exhausted budgets recommend review while preserving initial observations. A false flag, or no configured trigger, is not proof of safety or absence. Traces retain actual tool measurements and timings; they are available in the private job detail. No arbitrary URLs, shell commands or model downloads are allowed. Configure policy per organization in Settings. Low-light enhancement does not recover details the camera never captured.

Privacy and retention

The anonymous demo does not persist media or job history. Authenticated analyses retain results, actor attribution, and small sampled previews for seven days, with expiry filtering and DynamoDB TTL where configured. Administrators can clear saved jobs and previews from Settings without disconnecting devices or removing API keys. Original clips are decoded and sampled in the browser, not uploaded. Enabling classification sends sampled frames to Bedrock; follow the provider’s data terms.

Errors

StatusMeaning
400Invalid images, timestamps, or JSON
401Missing, invalid, or revoked API key
413Request too large
415Use application/json
429Quota or demo allowance reached
503Vision or storage unavailable