API Reference
A complete reference for the QueueVIO REST API. All endpoints return JSON. Base URL: https://api.queuevio.com
All /api/* endpoints require a JWT Bearer token obtained from POST /api/auth/login. Pass it in every request: Authorization: Bearer <token>. The token is scoped to a single tenant — all data is isolated by tenantId automatically.
Authentication
/api/authObtain and manage JWT tokens. All other endpoints (except /public/contact) require Bearer token auth.
/api/auth/loginObtain a JWT{ "email": "you@example.com", "password": "••••••••" }{ "token": "eyJhbGci...", "tenantId": "ten_01j9x..." }Intents
/api/intentsAuth requiredSubmit natural-language job briefs. The AI Intake Service extracts a structured job draft and returns per-field confidence scores. Jobs with confidence ≥ autoApproveThreshold (default 0.80) and no ambiguities are auto-approved and immediately routed.
/api/intentsCreate an intent (NL intake)| Parameter | In | Type | Description |
|---|---|---|---|
| nlText* | body | string | Natural-language job brief. |
| contextHints | body | object | Optional hints — customerId, priority, referenceJobId. |
{
"nlText": "5,000 A4 CMYK brochures, 130 gsm coated,
saddle-stitched, needed Friday",
"contextHints": { "priority": "high" }
}{
"id": "int_01j9xk...",
"status": "auto_approved",
"confidence": 0.94,
"jobDraft": {
"quantity": { "ordered": 5000 },
"substrate": { "type": "coated", "weightGsm": 130 },
"colorSpace": "CMYK",
"finishing": ["saddle_stitch"],
"status": "routed"
}
}/api/intentsList all intents[{ "id": "int_01j9xk...", "status": "pending_review", "confidence": 0.61, ... }]/api/intents/:idGet an intent| Parameter | In | Type | Description |
|---|---|---|---|
| id* | path | uuid | Intent ID. |
/api/intents/:id/approveApprove a pending intentApproves the AI-extracted job draft as-is. The job is created and immediately enters routing.
| Parameter | In | Type | Description |
|---|---|---|---|
| id* | path | uuid | Intent ID. |
/api/intents/:id/rejectReject a pending intent| Parameter | In | Type | Description |
|---|---|---|---|
| id* | path | uuid | Intent ID. |
| reason | body | string | Optional rejection reason stored in the intent record. |
Jobs
/api/jobsAuth requiredCreate and manage production jobs directly (structured payload, no NL intake). Jobs move through a production chain of stages; each stage is routed to a device by the AI Routing Engine.
/api/jobsCreate a job{
"title": "Brochure Run Q3",
"quantity": { "ordered": 5000 },
"substrate": { "type": "coated", "weightGsm": 130 },
"colorSpace": "CMYK",
"finishing": ["saddle_stitch"],
"dueDate": "2026-06-27T17:00:00Z"
}{ "id": "job_01j9xm...", "status": "pending", ... }/api/jobsList all jobs| Parameter | In | Type | Description |
|---|---|---|---|
| status | query | string | Filter by status: pending | routed | queued | in_progress | completed | failed. |
/api/jobs/:idGet a job| Parameter | In | Type | Description |
|---|---|---|---|
| id* | path | uuid | Job ID. |
/api/jobs/:id/routing-decisionsGet routing audit trailReturns all RoutingDecision records for the job — hard vetoes applied, AI candidate scores, selected device, and post-completion outcome labels used for model feedback.
| Parameter | In | Type | Description |
|---|---|---|---|
| id* | path | uuid | Job ID. |
[{
"id": "rd_01j9xn...",
"stage": "print",
"selectedBy": "ai",
"selectedDeviceId": "dev_01j...",
"hardVetoes": [{ "deviceId": "dev_02j...", "vetoCode": "substrate_gsm_exceeded" }],
"candidates": [{ "deviceId": "dev_01j...", "scores": { "capabilityFit": 0.95, "queueFit": 0.88, ... } }],
"outcome": { "status": "completed", "wastePercent": 1.2 }
}]/api/jobs/dispatchFetch jobs for a connectorUsed by connector agents to poll for jobs assigned to their connector. Returns jobs in queued state where the production stage connectorId matches.
| Parameter | In | Type | Description |
|---|---|---|---|
| connectorId* | query | uuid | Connector agent ID. |
/api/jobs/:id/statusUpdate job statusUsed by connector agents to report stage progress and completion back to the cloud.
| Parameter | In | Type | Description |
|---|---|---|---|
| id* | path | uuid | Job ID. |
| status* | body | string | New status value. |
| stage | body | string | Stage name if updating a specific production stage. |
Devices
/api/devicesAuth requiredRegister and manage print devices. Each device has a capability envelope (substrate range, color spaces, finishing operations) and AI signals (queue depth, historical waste, SLA compliance) that the routing engine queries.
/api/devicesRegister a device{
"name": "HP Indigo 100K — Bay 3",
"type": "digital_press",
"adapter": "hp_indigo",
"connectorId": "con_01j9xp...",
"capabilities": {
"substrates": ["coated", "uncoated"],
"colorSpaces": ["CMYK", "RGB", "spot"],
"finishing": ["perforate", "score"],
"maxSubstrateGsm": 350,
"minSubstrateGsm": 60,
"maxSpeedSph": 4600
}
}{ "id": "dev_01j9xq...", "status": "online", ... }/api/devicesList all devices| Parameter | In | Type | Description |
|---|---|---|---|
| status | query | string | Filter by status: online | offline | error | maintenance. |
/api/devices/:idGet a deviceReturns the device record including its full capability envelope and current AI signals.
| Parameter | In | Type | Description |
|---|---|---|---|
| id* | path | uuid | Device ID. |
/api/devices/:id/statusUpdate device statusUsed by connector agents to push status changes and updated AI signals (queue depth, waste %, SLA rate, maintenance risk).
| Parameter | In | Type | Description |
|---|---|---|---|
| id* | path | uuid | Device ID. |
| status* | body | string | online | offline | error | maintenance. |
| aiSignals | body | object | Updated AI signal values from SNMP / device polling. |
Connectors
/api/connectorsAuth requiredOn-premise connector agents self-register on first start and send heartbeats every 30 s. The cloud uses heartbeat data to surface agent health in the dashboard and to flag stale connectors.
/api/connectorsRegister a connector agent{
"name": "Plant Floor A — Building 2",
"adapterType": "generic_rest",
"version": "1.0.0"
}{ "id": "con_01j9xp...", "status": "online" }/api/connectorsList all connectors/api/connectors/:idGet a connector| Parameter | In | Type | Description |
|---|---|---|---|
| id* | path | uuid | Connector ID. |
/api/connectors/:id/heartbeatSend a heartbeatSent every 30 s by the connector agent. Updates last-seen timestamp and resource metrics.
| Parameter | In | Type | Description |
|---|---|---|---|
| id* | path | uuid | Connector ID. |
| cpuPercent | body | number | Agent host CPU usage 0–100. |
| memoryPercent | body | number | Agent host memory usage 0–100. |
| activeJobs | body | number | Jobs currently being processed. |
| queueDepth | body | number | Jobs waiting in the local queue. |
Events (SSE)
/api/eventsAuth requiredReal-time event stream using Server-Sent Events. Each connection is scoped to the requesting tenant — no cross-tenant data is visible. Reconnect with Last-Event-ID for resumable streams.
/api/eventsOpen SSE streamReturns a persistent text/event-stream connection. Events are emitted as the tenant's jobs, devices, and AI signals change state. Event types: job.submitted · job.routed · job.queued · job.in_progress · job.completed · job.failed · device.online · device.offline · device.error · ai.intent.extracted · ai.routing.decided · alert.sla_breach
| Parameter | In | Type | Description |
|---|---|---|---|
| Authorization* | header | Bearer <token> | JWT token. |
| Last-Event-ID | header | string | Resume stream from a prior event ID. |
data: {
"tenantId": "ten_01j9x...",
"eventType": "job.routed",
"source": "routing-engine",
"payload": { "jobId": "job_01j9xm...", "deviceId": "dev_01j9xq..." },
"timestamp": "2026-06-22T14:32:01Z"
}/api/events/recentGet recent eventsReturns the last N events for the tenant (non-streaming). Useful for dashboard hydration on page load.
| Parameter | In | Type | Description |
|---|---|---|---|
| limit | query | number | Max events to return (default 50). |
Explore the full OpenAPI spec
Import into Postman, generate a client SDK, or browse interactively in Swagger UI.