API Reference

Features

The feature workflow has two parts. Discovery and association runs read an asset through its connection and produce candidate derived features and column-pair association scores. Feature lists are the curated selections you keep against an asset.

Everything here is private to you and keyed by an assetId from Discover assets on a connection. At most one feature list per asset is the default.

List feature lists

GET /data-api/v1/features/lists

Returns your feature lists, most recently updated first.

Authentication
Bearer token How it works

Parameters

No parameters.

Returns

Returns a list of feature-list objects in data.

Request
curl "$VDF_BASE_URL/data-api/v1/features/lists" \
  -H "Authorization: Bearer $VDF_ACCESS_TOKEN"
Response 200
{
  "success": true,
  "data": [
    {
      "id": "f0e1d2c3-b4a5-4968-8776-5a4b3c2d1e0f",
      "datasetId": "7a2d9e10-4c3b-4a1e-9f8d-2b6c1e0f5a3d",
      "name": "Churn model features",
      "featureCount": 18,
      "isDefault": true,
      "lastUsedAt": "2026-09-01T10:00:00Z"
    }
  ]
}

Create a feature list

POST /data-api/v1/features/lists

Creates a feature list for an asset.

Creates a feature list against one of your assets. Marking it default clears the default flag on your other lists for the same asset.

Authentication
Bearer token How it works

Body parameters application/json

  • datasetId string Required

    Identifier of the asset the list belongs to.

  • name string Required

    Name of the feature list.

  • featureCount integer

    Number of features the list represents.

    Defaults to 0.

  • isDefault boolean

    Whether this becomes the default list for the asset.

    Defaults to false.

Returns

Returns the created feature-list object in data.

Errors

  • 400 datasetId or name is missing.
  • 404 No asset with this id belongs to you.
Request
curl -X POST "$VDF_BASE_URL/data-api/v1/features/lists" \
  -H "Authorization: Bearer $VDF_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "datasetId": "7a2d9e10-4c3b-4a1e-9f8d-2b6c1e0f5a3d",
    "name": "Churn model features",
    "featureCount": 18,
    "isDefault": true
  }'
Response 200
{
  "success": true,
  "data": {
    "id": "f0e1d2c3-b4a5-4968-8776-5a4b3c2d1e0f",
    "datasetId": "7a2d9e10-4c3b-4a1e-9f8d-2b6c1e0f5a3d",
    "name": "Churn model features",
    "featureCount": 18,
    "isDefault": true,
    "lastUsedAt": "2026-09-01T10:00:00Z"
  }
}

Update a feature list

PUT /data-api/v1/features/lists/{list_id}

Updates a feature list you own.

Updates the fields you supply. Setting isDefault to true clears the default flag on your other lists for the same asset.

Authentication
Bearer token How it works

Path parameters

  • list_id string Required

    Identifier of the feature list to update.

Body parameters application/json

  • datasetId string

    Move the list to a different asset you own.

  • name string

    New name.

  • featureCount integer

    New feature count.

  • isDefault boolean

    Whether this list is the default for its asset.

Returns

Returns the updated feature-list object in data.

Errors

  • 404 No feature list with this id belongs to you, or the target asset does not belong to you.
Request
curl -X PUT "$VDF_BASE_URL/data-api/v1/features/lists/f0e1d2c3-b4a5-4968-8776-5a4b3c2d1e0f" \
  -H "Authorization: Bearer $VDF_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Churn features v2",
    "featureCount": 20
  }'
Response 200
{
  "success": true,
  "data": {
    "id": "f0e1d2c3-b4a5-4968-8776-5a4b3c2d1e0f",
    "datasetId": "7a2d9e10-4c3b-4a1e-9f8d-2b6c1e0f5a3d",
    "name": "Churn features v2",
    "featureCount": 20,
    "isDefault": true,
    "lastUsedAt": "2026-09-01T10:05:00Z"
  }
}

Delete a feature list

DEL /data-api/v1/features/lists/{list_id}

Deletes a feature list you own.

Permanently deletes the feature list.

Authentication
Bearer token How it works

Path parameters

  • list_id string Required

    Identifier of the feature list to delete.

Returns

Returns a confirmation object in data.

Errors

  • 404 No feature list with this id belongs to you.
Request
curl -X DELETE "$VDF_BASE_URL/data-api/v1/features/lists/f0e1d2c3-b4a5-4968-8776-5a4b3c2d1e0f" \
  -H "Authorization: Bearer $VDF_ACCESS_TOKEN"
Response 200
{
  "success": true,
  "data": {
    "deleted": true
  }
}

Set a default feature list

POST /data-api/v1/features/lists/{list_id}/default

Marks a feature list as the default for its asset.

Makes this list the default for its asset and clears the default flag on your other lists for the same asset.

Authentication
Bearer token How it works

Path parameters

  • list_id string Required

    Identifier of the feature list to make default.

Returns

Returns a confirmation object in data.

Errors

  • 404 No feature list with this id belongs to you.
Request
curl -X POST "$VDF_BASE_URL/data-api/v1/features/lists/f0e1d2c3-b4a5-4968-8776-5a4b3c2d1e0f/default" \
  -H "Authorization: Bearer $VDF_ACCESS_TOKEN"
Response 200
{
  "success": true,
  "data": {
    "updated": true
  }
}

Run feature discovery

POST /data-api/v1/features/discovery/runs

Generates candidate derived features for an asset.

Reads the asset's schema through its connection and proposes derived features — rolling averages, lags, z-scores, date truncations, encodings, and interaction terms — each with a confidence score. The candidates are stored and returned. Read them again with List derived features.

Authentication
Bearer token How it works

Body parameters application/json

  • assetId string Required

    Identifier of the asset to analyse.

Returns

Returns a list of derived-feature objects in data.

Errors

  • 400 assetId is missing.
  • 404 No asset with this id belongs to you, or its connection no longer exists.
  • 502 The source could not be reached while reading the schema.
Request
curl -X POST "$VDF_BASE_URL/data-api/v1/features/discovery/runs" \
  -H "Authorization: Bearer $VDF_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "assetId": "7a2d9e10-4c3b-4a1e-9f8d-2b6c1e0f5a3d"
  }'
Response 200
{
  "success": true,
  "data": [
    {
      "id": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
      "datasetId": "7a2d9e10-4c3b-4a1e-9f8d-2b6c1e0f5a3d",
      "name": "orders_total_rolling_avg",
      "formula": "rolling_avg(orders_total, 7)",
      "confidence": 0.85
    }
  ]
}

List derived features

GET /data-api/v1/features/discovery/results

Returns the derived features discovered for your assets.

Returns your derived features, most recent first. Pass assetId to scope the results to a single asset.

Authentication
Bearer token How it works

Query parameters

  • assetId string

    Return only features discovered for this asset.

Returns

Returns a list of derived-feature objects in data.

Request
curl "$VDF_BASE_URL/data-api/v1/features/discovery/results?assetId=7a2d9e10-4c3b-4a1e-9f8d-2b6c1e0f5a3d" \
  -H "Authorization: Bearer $VDF_ACCESS_TOKEN"
Response 200
{
  "success": true,
  "data": [
    {
      "id": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
      "datasetId": "7a2d9e10-4c3b-4a1e-9f8d-2b6c1e0f5a3d",
      "name": "orders_total_rolling_avg",
      "formula": "rolling_avg(orders_total, 7)",
      "confidence": 0.85
    }
  ]
}

Run association mining

POST /data-api/v1/features/associations/runs

Scores associations between numeric columns of an asset.

Reads the asset's numeric columns through its connection and scores associations between column pairs using Pearson, Spearman, and mutual-information methods. The scored pairs are stored and returned. Read them again with List associations.

Authentication
Bearer token How it works

Body parameters application/json

  • assetId string Required

    Identifier of the asset to analyse.

Returns

Returns a list of association objects in data.

Errors

  • 400 assetId is missing.
  • 404 No asset with this id belongs to you, or its connection no longer exists.
  • 502 The source could not be reached while reading the schema.
Request
curl -X POST "$VDF_BASE_URL/data-api/v1/features/associations/runs" \
  -H "Authorization: Bearer $VDF_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "assetId": "7a2d9e10-4c3b-4a1e-9f8d-2b6c1e0f5a3d"
  }'
Response 200
{
  "success": true,
  "data": [
    {
      "id": "d4c3b2a1-f6e5-4b7a-9d8c-1e0f2a3b4c5d",
      "datasetId": "7a2d9e10-4c3b-4a1e-9f8d-2b6c1e0f5a3d",
      "featureA": "orders_total",
      "featureB": "lifetime_value",
      "score": 0.742,
      "method": "pearson"
    }
  ]
}

List associations

GET /data-api/v1/features/associations/results

Returns the column associations mined for your assets.

Returns your mined associations, most recent first. Pass assetId to scope the results to a single asset.

Authentication
Bearer token How it works

Query parameters

  • assetId string

    Return only associations mined for this asset.

Returns

Returns a list of association objects in data.

Request
curl "$VDF_BASE_URL/data-api/v1/features/associations/results?assetId=7a2d9e10-4c3b-4a1e-9f8d-2b6c1e0f5a3d" \
  -H "Authorization: Bearer $VDF_ACCESS_TOKEN"
Response 200
{
  "success": true,
  "data": [
    {
      "id": "d4c3b2a1-f6e5-4b7a-9d8c-1e0f2a3b4c5d",
      "datasetId": "7a2d9e10-4c3b-4a1e-9f8d-2b6c1e0f5a3d",
      "featureA": "orders_total",
      "featureB": "lifetime_value",
      "score": 0.742,
      "method": "pearson"
    }
  ]
}