Manage Datasets
Create, list, and manage datasets from the dashboard, SDK, or API.
Manage Datasets
You can manage datasets from the Dashboard UI, the SDK (TypeScript, Python, Java), or the REST API.
From the Dashboard
View Datasets

Navigate to Datasets in the left sidebar.
The dataset list shows one row per dataset with these columns:
| Column | Description |
|---|---|
| Name | Dataset name (click to open detail page) |
| Items | Number of items in the dataset |
| Runs | Number of dataset runs |
| Created | Creation date |
| Last Run | Date of the most recent run |
Use the search bar to filter datasets by name. Pagination defaults to 50 rows per page.
To filter with SQL expressions, click Filters, then switch to the SQL tab. See SQL Filter Mode below.
SQL Filter Mode
The Datasets table supports a SQL filter tab that accepts SQL WHERE-clause expressions for filtering by name, item count, run count, and dates.
The Datasets SQL filter supports AND conditions only. Top-level OR (e.g. name = 'a' OR name = 'b') is not supported on this table.
Available columns:
| Column | Type | Notes |
|---|---|---|
name | string | Dataset name |
items | number | Number of items |
runs | number | Number of runs |
created_at | datetime | Creation timestamp |
last_run | datetime | Most recent run timestamp |
Example expressions:
-- Filter by name
name = 'qa-golden-set'
-- Recently created datasets
created_at > '2025-01-01'
-- Datasets with items
items > 0
-- Name AND item count
name LIKE '%golden%' AND items > 10To use the SQL filter:

Create a Dataset
Click New Dataset in the top-right of the Datasets page.
Fill in the form:
- Name (required) — unique dataset name
- Description (optional) — free-form notes about the dataset
- Metadata (optional) — JSON key-value pairs for custom metadata
Click Create dataset. You'll be taken to the new dataset's detail page.
Dataset Detail Page
Click any dataset name to open its detail page. The page has three tabs:
- Items — view, add, import, and manage dataset items (see Dataset Items)
- Runs — view and create dataset runs (see Dataset Runs)
- Linked Experiments — experiments that reference this dataset
Dataset Actions
Click the more menu (three dots) on the dataset detail page for:
- Rename — update the dataset name and description
- Duplicate Dataset — create a copy of the entire dataset with all items
- Delete — permanently remove the dataset and all its items
From the SDK
Setup
import { AISDK } from '@browserstack/ai-sdk';
const testOps = new AISDK({
publicKey: process.env.AISDK_PUBLIC_KEY,
secretKey: process.env.AISDK_SECRET_KEY,
});
const datasets = testOps.datasets; // DatasetsClient
const datasetRuns = testOps.datasetRuns; // DatasetRunsimport os
from browserstack_ai_sdk import AISDK
client = AISDK(
public_key=os.environ["AISDK_PUBLIC_KEY"],
secret_key=os.environ["AISDK_SECRET_KEY"],
)
datasets = testOps.datasets; # datasets clientimport com.browserstack.aisdk.AISDK;
import com.browserstack.aisdk.eval.DatasetsClient;
import com.browserstack.aisdk.eval.model.*;
AISDK sdk = AISDK.fromEnv();
DatasetsClient datasets = sdk.datasets();Create a Dataset
const dataset = await datasets.create(
'qa-golden-set',
'Golden set for QA evaluation',
{ owner: 'ml-team', version: '1.0' } // optional metadata
);
console.log(dataset.id); // dataset ID
console.log(dataset.name); // 'qa-golden-set'dataset = client.datasets.create(
name="qa-dataset-v1",
description="Question-answer pairs for RAG evaluation",
metadata='{"domain": "customer-support"}',
)
print(dataset)// Name only
DatasetResponse ds = datasets.create("my-dataset");
// With description
DatasetResponse ds = datasets.create("my-dataset", "Questions about Northern Lights");
// With metadata
DatasetResponse ds = datasets.create(
"my-dataset",
"Questions about Northern Lights",
Map.of("team", "nlp", "domain", "science")
);
System.out.println("Created: " + ds.getId() + " — " + ds.getName());List Datasets
const result = await datasets.list(
1, // page (1-indexed)
20, // limit per page
'qa' // optional name filter
);
for (const ds of result.data) {
console.log(ds.id, ds.name);
}result = client.datasets.list(page=1, limit=20)
for dataset in result["data"]:
print(f"{dataset.get('name')}: {dataset.get('id')}")Filter by name:
datasets = client.datasets.list(name="qa-dataset-v1")// Default (page 1, limit 50)
ListDatasetsResponse list = datasets.list();
// With pagination
ListDatasetsResponse list = datasets.list(1, 20);
// Filtered by name
ListDatasetsResponse list = datasets.list(1, 20, "my-dataset");
list.getData().forEach(d -> System.out.println(d.getId() + " " + d.getName()));Get Dataset Tags
const tagsResult = await datasets.getTags('qa-golden-set');
console.log(tagsResult.tags); // string[]tags = client.datasets.get_tags("qa-dataset-v1")
print(tags)List<String> tags = datasets.getTags("my-dataset");
System.out.println("Tags: " + tags);