VisionAnswer vision.answer@1
Generated at from
openvibe-contracts v0.419.0 and
openvibe-sdk v0.161.0.
- Version
- 1.0.0
- Owner
- vision
- Visibility
- first-party
- Status
- active
- Compatibility
- backward
- Schema
https://openvibe.network/contracts/vision/answer.v1.json
vision.answer@1: one saved answer on OpenVibe.Vision. It names the engine, model, provider and route that actually answered (never a model hint), the reason it was chosen, the cost OpenVibe.AI reported, the measured latency and the confidence. No image bytes are stored: only a sha256 and the declared media type.
Fields
| Field | Type | Required | Description | Constraints |
|---|---|---|---|---|
id | string | yes |
| |
task | enum | yes |
| |
question | string | null |
| ||
mode | enum | yes |
| |
source | enum | yes |
| |
source_url | string | null |
| ||
image_sha256 | string | yes |
| |
image_mime | string | yes |
| |
image_bytes | integer | yes |
| |
text | string | null |
| ||
answer | object | yes | Engine details, OCR words, provenance and any compare rows; never an image. | |
model | string | null | |||
provider | string | null | |||
route | string | null | |||
reason | string | null | |||
engine | string | null | |||
confidence | number | null |
| ||
cost_usd | number | yes |
| |
latency_ms | integer | yes |
| |
created_at | string | yes |
|
Examples
From the contract's own test fixtures: valid ones validate, rejected ones must fail.
Valid: one
{
"id": "vis_01J8Z3Q4R5S6T7V8W9X0Y1Z2A4",
"task": "ask",
"mode": "auto",
"source": "upload",
"image_sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"image_mime": "image/png",
"image_bytes": 1024,
"text": "A desk with a keyboard and a mug.",
"answer": {
"engine": "local",
"route": "local.ocr"
},
"model": "tesseract",
"provider": "local",
"route": "local.ocr",
"reason": "the local OCR reader answered the read task; no model was called",
"cost_usd": 0,
"latency_ms": 42,
"created_at": "2026-10-29T10:00:00.000Z"
}Rejected: one
{
"id": "vis_short",
"task": "ask",
"mode": "auto",
"source": "upload",
"cost_usd": 0,
"latency_ms": 0,
"created_at": "2026-10-29T10:00:00.000Z",
"answer": {}
}Validate
const contracts = require('openvibe-contracts');
contracts.validate('vision.answer@1', value); // { valid, errors: [{ path, message }] }