---
title: "Evaluation"
method: POST
path: "/api/v0/evaluate"
tags: ["Agents"]
---

# Evaluation

`POST /api/v0/evaluate`

Score how well every chart type fits a dataset. Deterministic — a rule-based scorer with no language model, so it returns a single result and uses no tokens. Only config.data is scored.

The response is a Server-Sent Events (SSE) stream. Evaluation emits no progress events — the result arrives in a single complete event.

## Request body

- EvaluateRequest — Deterministic evaluation reads only config.data and the optional chartFamily — there is no userPrompt.
  - `config` GraphConfig, required — The graph configuration object used to render charts. See [Graph Config Schema](/sdk/reference/graph-config) for the complete reference.
    - `type` 'line' | 'areaStacked' | 'bar' | 'groupedBar' | 'stackedBar' | '100StackedBar' | 'column' | 'groupedColumn' | 'stackedColumn' | '100StackedColumn' | 'combo' | 'pie' | 'donut' | 'funnel' | 'heatmap' | 'scatter' | 'bubble' | 'waterfall' | 'table' | 'mekko', required — The chart type
    - `data` object, required
      - `columns` object[]
        - `key` string
        - `label` string
      - `rows` object[]
  - `chartFamily` 'comparison' | 'relationship' | 'distribution' | 'composition' — Optional Abela chart-family hint. When set, chart types in that family get a fit bonus.
  - `metadata` Metadata — Optional tracking information for requests
    - `callId` string, required — Required when metadata is provided. Unique identifier for tracking and debugging.
    - `locale` 'EN_GB' | 'EN_US' | 'AR' | 'PT_PT' — Locale for responses
    - `effort` 'low' | 'medium' | 'high' — Preferred invocation tier; forwarded on the invocation (including nested agents). When omitted, it can be inferred from `storytellingEffort` or defaults to `medium`.
    - `storytellingEffort` 'none' | 'low' | 'medium' | 'high' — Deprecated. Prefer `effort`. When set without `effort`, the server derives `effort` for propagation. For chart generation, an explicit value still controls narrative richness when both `effort` and `storytellingEffort` are present (`storytellingEffort` wins for the chart).

## Response `200`

SSE stream with a single completion event

## Other responses

- `400` — Bad Request - Invalid request body
- `401` — Unauthorized - Invalid or missing API key

---

[API](https://skmtc.dev/graphy/apis/graphy-ai-agents-api.md) · [All operations](https://skmtc.dev/graphy/apis/graphy-ai-agents-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/graphy/graphy-ai-agents-api/revisions/f181a68b6e0c/schema)
