Exploration
Exploration turns a discovered asset into an exploratory data-analysis (EDA) profile. A run reads the live source through the asset's connection and computes summary metrics — missing values, duplicates, outlier columns, class imbalance — plus a per-column profile.
Runs and profiles are private to you and are keyed by assetId, the id of an asset produced by Discover assets on a connection. The summary and column endpoints return the latest run per asset.
- GET /v1/overview Retrieve the overview
- POST /v1/eda/runs Run an analysis
- GET /v1/eda/summaries List analysis summaries
- GET /v1/eda/columns List column profiles
Paths are relative to /data-api
Retrieve the overview
GET /data-api/v1/overview
Returns counts of your connections, assets, and derived artefacts.
Returns the headline counts the Data workspace opens on: how many connections, discovered assets, feature lists, vector indexes, fine-tuning datasets, and semantic queries you own.
- Authentication
- Bearer token How it works
Parameters
No parameters.
Returns
Returns an object of counts scoped to you in data.
curl "$VDF_BASE_URL/data-api/v1/overview" \
-H "Authorization: Bearer $VDF_ACCESS_TOKEN" const response = await fetch(`${process.env.VDF_BASE_URL}/data-api/v1/overview`, {
headers: {
Authorization: `Bearer ${process.env.VDF_ACCESS_TOKEN}`,
},
});
if (!response.ok) throw new Error(`Request failed with status ${response.status}`);
const data = await response.json(); import os
import requests
response = requests.get(
f"{os.environ['VDF_BASE_URL']}/data-api/v1/overview",
headers={"Authorization": f"Bearer {os.environ['VDF_ACCESS_TOKEN']}"},
timeout=30,
)
response.raise_for_status()
data = response.json() {
"success": true,
"data": {
"connections": 3,
"assets": 12,
"featureLists": 4,
"vectorIndexes": 2,
"fineTuneDatasets": 1,
"semanticQueries": 27
}
} Run an analysis
POST /data-api/v1/eda/runs
Profiles an asset and returns its summary metrics.
Reads the asset through its connection and computes an exploratory profile: the average share of missing values, the share of duplicate rows, a count of columns showing outlier-like spread, and an estimated class-imbalance percentage. The run and a per-column profile are stored; the summary is returned. Read the columns with List column profiles.
- Authentication
- Bearer token How it works
Body parameters application/json
-
assetIdstring RequiredIdentifier of the discovered asset to profile.
Returns
Returns the summary metrics for the run in data.
Errors
- 400
assetIdis missing. - 404 No asset with this id belongs to you, or its connection no longer exists.
- 502 The source could not be reached while computing statistics.
curl -X POST "$VDF_BASE_URL/data-api/v1/eda/runs" \
-H "Authorization: Bearer $VDF_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"assetId": "7a2d9e10-4c3b-4a1e-9f8d-2b6c1e0f5a3d"
}' const response = await fetch(`${process.env.VDF_BASE_URL}/data-api/v1/eda/runs`, {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.VDF_ACCESS_TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
assetId: '7a2d9e10-4c3b-4a1e-9f8d-2b6c1e0f5a3d',
}),
});
if (!response.ok) throw new Error(`Request failed with status ${response.status}`);
const data = await response.json(); import os
import requests
response = requests.post(
f"{os.environ['VDF_BASE_URL']}/data-api/v1/eda/runs",
headers={"Authorization": f"Bearer {os.environ['VDF_ACCESS_TOKEN']}"},
json={
"assetId": "7a2d9e10-4c3b-4a1e-9f8d-2b6c1e0f5a3d",
},
timeout=30,
)
response.raise_for_status()
data = response.json() {
"success": true,
"data": {
"datasetId": "7a2d9e10-4c3b-4a1e-9f8d-2b6c1e0f5a3d",
"missingValuesPct": 2.14,
"duplicatesPct": 0.35,
"outlierColumns": 3,
"classImbalancePct": 61.2
}
} List analysis summaries
GET /data-api/v1/eda/summaries
Returns the latest analysis summary for each of your assets.
Returns the most recent analysis summary per asset, so an asset profiled several times appears once with its latest metrics.
- Authentication
- Bearer token How it works
Parameters
No parameters.
Returns
Returns a list of summary objects in data.
curl "$VDF_BASE_URL/data-api/v1/eda/summaries" \
-H "Authorization: Bearer $VDF_ACCESS_TOKEN" const response = await fetch(`${process.env.VDF_BASE_URL}/data-api/v1/eda/summaries`, {
headers: {
Authorization: `Bearer ${process.env.VDF_ACCESS_TOKEN}`,
},
});
if (!response.ok) throw new Error(`Request failed with status ${response.status}`);
const data = await response.json(); import os
import requests
response = requests.get(
f"{os.environ['VDF_BASE_URL']}/data-api/v1/eda/summaries",
headers={"Authorization": f"Bearer {os.environ['VDF_ACCESS_TOKEN']}"},
timeout=30,
)
response.raise_for_status()
data = response.json() {
"success": true,
"data": [
{
"datasetId": "7a2d9e10-4c3b-4a1e-9f8d-2b6c1e0f5a3d",
"missingValuesPct": 2.14,
"duplicatesPct": 0.35,
"outlierColumns": 3,
"classImbalancePct": 61.2
}
]
} List column profiles
GET /data-api/v1/eda/columns
Returns per-column profiles from your latest analysis runs.
Returns the per-column profiles from the latest analysis run of each asset: the inferred column type, the percentage of missing and unique values, and a drift signal of low, medium, or high.
- Authentication
- Bearer token How it works
Parameters
No parameters.
Returns
Returns a list of column-profile objects in data.
curl "$VDF_BASE_URL/data-api/v1/eda/columns" \
-H "Authorization: Bearer $VDF_ACCESS_TOKEN" const response = await fetch(`${process.env.VDF_BASE_URL}/data-api/v1/eda/columns`, {
headers: {
Authorization: `Bearer ${process.env.VDF_ACCESS_TOKEN}`,
},
});
if (!response.ok) throw new Error(`Request failed with status ${response.status}`);
const data = await response.json(); import os
import requests
response = requests.get(
f"{os.environ['VDF_BASE_URL']}/data-api/v1/eda/columns",
headers={"Authorization": f"Bearer {os.environ['VDF_ACCESS_TOKEN']}"},
timeout=30,
)
response.raise_for_status()
data = response.json() {
"success": true,
"data": [
{
"id": "c1a2b3d4-e5f6-4708-9a0b-1c2d3e4f5a6b",
"datasetId": "7a2d9e10-4c3b-4a1e-9f8d-2b6c1e0f5a3d",
"name": "signup_date",
"type": "datetime",
"missingPct": 0,
"uniquePct": 92.4,
"driftSignal": "low"
}
]
}