Developers

The Vision API

JSON under /api/v1, with application/problem+json errors. A person is the vision_at session cookie or a Network user token as a Bearer. A service token needs the capability on the route; Design's Arena calls the UI check with vision.ui.check.

Ask, read, compare

POST /api/v1/ask (alias /api/v1/describe)
One image and a question: { task, question, mode, image_url }, a multipart image, or an image data URL. Local OCR answers a read question first, otherwise OpenVibe.AI. Capability: vision.image.ask.
POST /api/v1/ocr
The local Tesseract reader. fallback=1 asks AI only when no text is found and the caller is signed in or holds vision.text.read.
POST /api/v1/compare
The same image through local OCR and one to three AI hints (models). Returns each engine's answer, provider, model, cost and latency. Capability: vision.model.compare.
POST /api/v1/ui-check
HTML, URL or screenshot with viewport. Returns findings: overflow, cut_off, contrast, overlap and layering. Capability: vision.ui.check.
POST /api/v1/alt
Pics, Media and Chat send an image for short editable alt text. Capability: vision.alt.write.
POST /api/v1/index; GET or POST /api/v1/find
Media and Search index an owner image and find it by words or image. Requires the owner user token. Capability: vision.media.find.
POST /api/v1/receipt
Food sends a receipt image; Tesseract reads store, items and total first. Capability: vision.receipt.read.
POST /api/v1/product
Deals sends a product image for description, CLIP vector and configured offer candidates. Capability: vision.product.match.
POST /api/v1/watch
Cam sends an owner-provided still and watched classes. Requires the owner user token. Capability: vision.camera.watch.
POST /api/v1/moments
Live or Media sends timestamped frames for scenes and candidate moments. Requires the owner user token. Capability: vision.video.moments.
GET /api/v1/answers/:id
One saved answer, for its owner or a service holding the route capability.
GET /api/v1/ui-checks/:id
One saved UI check, for its owner or a service holding vision.ui.check.
GET /api/v1/models
The AI route's offered provider:model hints and the local engine. No subject data.
GET /api/v1/benchmarks?task=&limit=
Aggregate compare samples: task, engine, provider, model, samples, mean latency and mean cost. No subject data.

Faces, by consent

POST /api/v1/faces/detect
Anyone. YuNet boxes and a count; no template, identity or cross-frame tracking.
POST /api/v1/faces/blur
Anyone. The same YuNet boxes drive an image/png redaction. Both open routes are rate-limited.
GET /api/v1/faces/consents/text
The four signed texts and their versions. A person signs one purpose with signed_name and text_version at POST /api/v1/faces/consents/:feature; DELETE revokes and erases.
POST /api/v1/faces/enrol/:feature
A person, after that purpose's consent: exactly one face into an AES-GCM encrypted SFace template.
POST /api/v1/faces/verify
A person. Returns { score, match, threshold, liveness: "not_checked" } against their own template, never an identity. A match alone unlocks nothing.
POST /api/v1/faces/media
A person with find or library consent. Stores an encrypted Vision upload; GET /api/v1/faces/media/:id is owner-only.
POST /api/v1/faces/find
A person with self-search consent. Matches only their own template in their own Vision uploads and returns private links.
POST /api/v1/faces/cast/match
Live with vision.face.cast.match and a signed channel_id claim. Reads only that channel's adult, consenting roster.
GET /api/v1/faces/cast/tags
A person's own cast tags; revoking a grant deletes them.
POST /api/v1/faces/library/cluster
A person with library consent in an allowed region. Private clusters; unknown faces stay unlabelled.
GET /api/v1/faces/library/groups
A person's own groups. No subject or public index.
POST /api/v1/faces/library/correct
A person's own group correction: exclude, merge or split.

Manage choices · Retention and privacy

Capabilities and grants

Vision calls OpenVibe.AI with ai.run.create, audience openvibe.ai and namespace ai.*. The twenty Vision capability manifests cover image questions, text, comparison, UI checks, network tools and consent-scoped face operations. A service token needs the capability named on its route; a person manages only their own face consent. Vision also offers eleven tools on /mcp, with Network token discovery at /.well-known/oauth-protected-resource.

POST /api/v1/ui-check
Authorization: Bearer <Network service token for openvibe.vision>
Content-Type: application/json

{ "html": "<!doctype html>…", "viewport": { "w": 390, "h": 844 } }

What leaves this host

The local OCR engine, UI check and all face tools run on this host. Only an ask, compare or OCR fallback sends the normalised image to OpenVibe.AI; face images and templates never go there. General answers store no image bytes; opt-in face uploads are encrypted and private. AI may describe people, including how they look; it never names a stranger or uses a face as identity.

AI on this host: configured. Model hints: from AI's routes at request time.