Quickstart

Send your first trace and run your first eval in under 5 minutes.

1Sign up & create a project

Sign in with GitHub and create a project. You'll see your EVALO_API_KEY on the project overview page — save it now, it's only shown once.

2Install the SDK

npm i @evalo/sdk
# or
pnpm add @evalo/sdk

3Send a trace

import { Evalo } from "@evalo/sdk";
import OpenAI from "openai";

const evalo = new Evalo({ apiKey: process.env.EVALO_API_KEY! });
const openai = new OpenAI();

const trace = evalo.trace({
  name: "summarize",
  input: { article },
});

const r = await openai.chat.completions.create({
  model: "gpt-4o-mini",
  messages: [{ role: "user", content: `Summarize: ${article}` }],
});

await trace.end({
  output: r.choices[0].message.content,
  tokensInput: r.usage?.prompt_tokens,
  tokensOutput: r.usage?.completion_tokens,
});

Or send a raw HTTP request:

curl -X POST https://evalo.dev/api/v1/traces \
  -H "Authorization: Bearer $EVALO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "summarize",
    "input": { "article": "..." },
    "output": "...",
    "durationMs": 842
  }'

4Create a dataset

In your project, go to Datasets → New dataset, then paste JSONL — one test case per line:

{"input": "refund my order #1234", "expected_output": "Initiate refund and confirm."}
{"input": "is bitcoin a security?", "expected_output": "Decline; out of scope."}
{"input": "where is my package?", "expected_output": "Ask for order number."}

5Run your first eval

Go to Eval runs, pick your dataset and eval definition, optionally add a system prompt, and hit Run evals. Or trigger from CI:

await evalo.runEval({
  datasetId: "ds_xxx",
  evalDefinitionId: "ev_xxx",
  systemPrompt: "You are a helpful support agent.",
  model: "gpt-4o-mini",
});

6Connect GitHub for PR checks

In Settings → GitHub integration, install the Evalo GitHub App. Every PR against the connected repo will trigger your configured eval suite and post a check-run with the pass-rate diff vs main. Set up branch protection to block merges on regression.