Getting Started

Creating your first Pop and running a demo.

How does EyePop.ai work?

You will create endpoints that use a cloud or edge based AI worker server that streamlines your detection tasks. We call these endpoints a “Pop”. Whether you're looking to post images, videos, or even connect through live webrtc, EyePop.ai offers the flexibility and efficiency to suit your requirements.

Build your first "Pop" Endpoint

EyePop.ai Quickstart Guide

This guide walks you from zero → first working visual intelligence task using EyePop.ai.


What You're Building

You'll create your first Pop — a configured worker endpoint that turns images, video, or livestreams into structured predictions (bounding boxes, classes, confidence scores, and more).

Example use cases:

  • Classify an image

  • Detect objects or events in video

  • Process live RTSP / RTMP streams

  • Identify behavior (e.g. "person entering")


Step 1 — Create an Account & Get Credentials

  1. Sign up at https://eyepop.ai

  2. In your profile, generate a Secret API Key and copy it

  • EYEPOP_API_KEY — your secret key, used to authenticate

Store them as environment variables (recommended) or pass them explicitly to the SDK.


Step 2 — Install the SDK

Python (3.8+)

Node / React

Browser (CDN)


Step 3 — Connect to Your Pop

The SDK authenticates with your API key and loads the worker configuration for the Pop identified by EYEPOP_POP_ID.

Python

Or, more idiomatically, use a context manager so resources are cleaned up automatically:

Node / TypeScript

Shorter form (reads env vars automatically):


Step 4 — Run Your First Prediction

Python — upload a single image

  • endpoint.upload(path) queues the file for processing.

  • predict() blocks until the first prediction is available and returns it as a dict.

  • For videos or image containers (GIF, etc.), call predict() in a loop — one result per frame — until it returns None.

Python — load from a URL (HTTP, RTSP, or RTMP)

Node — upload a single image

  • endpoint.process({...}) accepts a file path, a url, or a readable stream with a mimeType.

  • Results are streamed as an AsyncIterable<Prediction> — iterate with for await.

Node — load from a URL


Step 5 — Understand the Output

EyePop returns structured JSON, not raw model text. A typical prediction includes the source dimensions and a list of detected objects with bounding boxes, classes, and confidence scores.

Example (shape will vary by Pop configuration):

This is easy to plug directly into:

  • alerts

  • workflows

  • dashboards

  • automation systems


Step 6 — Process Batches Efficiently

Python — synchronous batch

Queue all jobs first, then collect results. This avoids paying the HTTP roundtrip per image.

Python — asynchronous batch (high throughput)

For very large batches, use the async variant with an on_ready callback so results are processed as soon as they land.

Node — parallel processing

Don't await each call; use .then() so uploads run in parallel (up to 5 HTTP connections per endpoint).


Step 7 — Process Video

The same Pop handles video via upload or public URL — HTTP, RTSP, or RTMP.

Python

Node

Canceling a job mid-stream


Step 8 — Process a Live Stream (Browser)

Connect EyePop to a real-time MediaStream (e.g. from getUserMedia) via liveIngress.

Requires a readable MediaStream. If using getUserMedia, handle camera permissions and stream lifecycle cleanly.


Step 9 — Visualize Results

Python — with matplotlib

Node — with @eyepop.ai/eyepop-render-2d

Render bounding boxes and labels onto a canvas. See the Render2d usage shown in Step 8.


Step 10 — Authentication Options (Node)

Three patterns, in order of production-readiness:

  1. API Key (server-side only) — pass auth: { secretKey }. Never expose this in client code.

  2. Session token (recommended for browsers) — generate a short-lived session server-side and hand it to the client.

  3. Current browser session (dev only) — if the developer is logged into the EyePop Dashboard, use auth: { oAuth2: true } with an explicit popId.


Step 11 — Deploy On-Premise (Optional)

For local IP-camera workflows, EyePop supports an on-prem architecture: a lightweight app captures and samples frames from RTSP/HTTP cameras, sends selected frames to the EyePop cloud for inference, and triggers notifications (Twilio, SendGrid, Slack, webhooks). Images can optionally be archived locally for audit or dataset curation.

Benefits:

  • Low-latency local dashboard

  • Cloud offload for heavy inference (stateless, no server-side storage)

  • Pluggable alerting

  • Audit-ready image archive

See the On-Premise IP Camera Analysis deployment guide.


Tuning Tips

  • Auto-start workers: EyePopSdk.endpoint(auto_start=False) (Python) / EyePop.endpoint({ autoStart: false }) (Node) disables automatic worker startup on connect().

  • Preserve pending jobs: by default, connect() cancels queued jobs on the worker. Pass stop_jobs=False / stopJobs: false to keep them.

  • Keep API keys out of source control: use python-dotenv or Node's dotenv with a .env file.

  • Override the API URL: set EYEPOP_URL if you're pointing at a non-production endpoint.


Next Steps

  • Build a small evaluation set (20–100 images) and iterate

  • Chain predictions into a workflow (e.g. detect → crop → classify)

  • Move from cloud API to on-prem when latency or data-residency demands it


Need Help?

  • Docs: https://docs.eyepop.ai

  • Dashboard: https://dashboard.eyepop.ai

  • Python SDK: https://github.com/eyepop-ai/eyepop-sdk-python

  • Node SDK: https://github.com/eyepop-ai/eyepop-sdk-node

  • Example projects: https://github.com/eyepop-ai/Labs

Or reach out for help scoping your first production use case.

Last updated