Skip to main content

LaminarClient

HTTP client for Laminar API operations.
import { LaminarClient } from '@lmnr-ai/lmnr';

const client = new LaminarClient({
  projectApiKey: process.env.LMNR_PROJECT_API_KEY,
});

// Tag a completed trace
await client.tags.tag(traceId, ['user-feedback-positive']);
Constructor parameters:
NameTypeDefaultDescription
projectApiKeystringLMNR_PROJECT_API_KEY envAPI key
baseUrlstringhttps://api.lmnr.aiAPI base URL
portnumber443API port
Resources:

client.tags.tag(traceId, tags)

Add tags to a completed trace.
await client.tags.tag('trace-uuid', ['positive-feedback', 'resolved']);
Example: Capture a trace ID and tag later
import { Laminar, LaminarClient, observe } from '@lmnr-ai/lmnr';

Laminar.initialize();
const client = new LaminarClient();

const traceId = await observe({ name: 'chat_completion' }, async () => {
  // ... your work ...
  return Laminar.getTraceId();
});

await Laminar.flush();

if (traceId) {
  await client.tags.tag(traceId, 'good');
}
Parameters:
NameTypeDefaultDescription
traceIdstringTrace UUID
tagsstring[] | stringTag(s) to add
Returns: Promise<any>Note: Call after Laminar.flush() to ensure trace exists.

client.datasets

Dataset operations.
// List datasets
const datasets = await client.datasets.listDatasets();

// Get by name
const dataset = await client.datasets.getDatasetByName('my-dataset');

// Push datapoints
await client.datasets.push({
  name: 'my-dataset',
  points: [{ data: { query: 'test' }, target: { answer: '42' } }],
  createDataset: true,
});

// Pull datapoints
const points = await client.datasets.pull({
  name: 'my-dataset',
  limit: 100,
});

client.datasets.listDatasets()

Returns: Promise<Dataset[]>

client.datasets.getDatasetByName(name)

Parameters:
NameTypeDefaultDescription
namestringDataset name
Returns: Promise<Dataset[]>

client.datasets.pull(options)

Pull datapoints from a dataset.Parameters:
NameTypeDefaultDescription
options.namestringDataset name
options.idstringDataset ID
options.limitnumber100Max datapoints
options.offsetnumber0Pagination offset
Returns: Promise<GetDatapointsResponse<D, T>>

client.datasets.push(options)

Push datapoints to a dataset.Parameters:
NameTypeDefaultDescription
options.pointsDatapoint<D, T>[]Datapoints to push
options.namestringDataset name
options.idstringDataset ID
options.batchSizenumber100Batch size
options.createDatasetbooleanfalseCreate dataset if missing
Returns: Promise<PushDatapointsResponse | undefined>

client.evals

Evaluation operations.
// Initialize evaluation
const eval = await client.evals.init('my-eval', 'default-group');

// Create datapoint
await client.evals.createDatapoint({
  evalId: eval.id,
  data: { query: 'test' },
  target: { answer: '42' },
});

client.evals.init(name?, groupName?, metadata?)

Parameters:
NameTypeDefaultDescription
namestringEvaluation name
groupNamestringGroup name
metadataRecord<string, any>Evaluation metadata
Returns: Promise<InitEvaluationResponse>

client.evals.createDatapoint(options)

Parameters:
NameTypeDefaultDescription
options.evalIdstringEvaluation UUID
options.dataanyInput data
options.targetanyTarget/expected output
options.metadataRecord<string, any>Datapoint metadata
options.indexnumberDataset index
options.traceIdstringTrace UUID
Returns: Promise<string>

client.evaluators.score(options)

Attach evaluator score to a trace or span.
await client.evaluators.score({
  name: 'quality',
  score: 0.95,
  traceId: 'trace-uuid',
});
Parameters:Pass exactly one of traceId or spanId.
NameTypeDefaultDescription
options.namestringEvaluator name
options.scorenumberScore value
options.metadataRecord<string, any>Score metadata
options.traceIdstringTrace UUID
options.spanIdstringSpan UUID
Returns: Promise<void>

client.agent.run(options)

Run a browser agent.
const result = await client.agent.run({
  prompt: 'Find the pricing on example.com',
  maxSteps: 50,
  returnScreenshots: true,
});
Parameters:
NameTypeDefaultDescription
promptstringAgent instruction (required)
parentSpanContextstringCurrent spanParent trace context
modelstringModel to use
streambooleanfalseStream responses
maxStepsnumber100Maximum steps
startUrlstringStarting URL
timeoutnumberTimeout in ms
returnScreenshotsbooleanfalseInclude screenshots
returnAgentStatebooleanfalseReturn agent state
returnStorageStatebooleanfalseReturn storage state
disableGiveControlbooleanfalseDisable “give control”
enableThinkingbooleantrueEnable thinking
Returns:
  • Promise<AgentOutput> when stream is false
  • Promise<ReadableStream<RunAgentResponseChunk>> when stream is true