---
title: "Render AI job visualization"
method: GET
path: "/api/v1/ai/jobs/{jobId}/vis"
tags: ["AI"]
---

# Render AI job visualization

`GET /api/v1/ai/jobs/{jobId}/vis`

Render the visualization from a completed AI job as a PNG image. The endpoint extracts the visualization configuration from the job result, loads Arrow IPC data, and renders it server-side using Vega. For style-only follow-ups (e.g., "make it a bar chart"), the endpoint walks back through previous jobs in the conversation to find the original query data.

## Path parameters

- `jobId` string, uuid, required — The unique identifier of the AI job

## Response `200`

Visualization rendered as a PNG image. The Content-Type header is image/png.

## Other responses

- `400` — Invalid job ID format. Must be a valid UUID.
- `401` — Missing or invalid API key.
- `403` — Insufficient permissions. AI query generation must be enabled for the organization and the caller must have permission to use AI on the job's model.
- `404` — Job not found, not in COMPLETE state, or the apiAiVis feature flag is not enabled.
- `422` — The job completed but cannot be rendered as a visualization. Common causes: no visualization action in the job result, no Arrow IPC data available, missing summary fields, or the chart type is not renderable as an image (e.g., tables, KPIs).

---

[API](https://skmtc.net/omniapp/apis/omni-api.md) · [All operations](https://skmtc.net/omniapp/apis/omni-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/omniapp/omni-api/versions/de7cac8b5983/schema)
