Skip to main content
POST
/
api
/
automl
/
feature-engineering
Create a feature engineering proposal
curl --request POST \
  --url https://api.example.com/api/automl/feature-engineering \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "target_table_name": "<string>",
  "description": "<string>",
  "source_tables": [
    "<string>"
  ],
  "entity_grain": [
    "<string>"
  ],
  "label": {
    "name": "label",
    "type": "binary",
    "column": "<string>",
    "derivation": "<string>",
    "positive_class_value": "<unknown>"
  },
  "domain": "<string>",
  "owner": "<string>",
  "join_hints": "<string>"
}
'
{
  "job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "target_table_name": "<string>",
  "domain": "<string>",
  "owner": "<string>",
  "created_at": "2023-11-07T05:31:56Z",
  "updated_at": "2023-11-07T05:31:56Z",
  "recipe": {
    "target_table": "<string>",
    "entity_grain": [
      "<string>"
    ],
    "label": {
      "name": "label",
      "type": "binary",
      "column": "<string>",
      "derivation": "<string>",
      "positive_class_value": "<unknown>"
    },
    "features": [
      {
        "name": "<string>",
        "expression": "<string>",
        "source_table": "<string>",
        "description": "<string>",
        "data_type": "<string>"
      }
    ],
    "notes": "<string>"
  },
  "sql": "<string>",
  "validation": {
    "estimated_row_count": 123,
    "label_distribution": {},
    "high_null_columns": {},
    "warnings": [
      "<string>"
    ]
  },
  "error": "<string>"
}

Authorizations

Authorization
string
header
required

The access token received from the authorization server in the OAuth 2.0 flow.

Body

application/json

Top-level request to start a feature engineering proposal.

target_table_name
string
required

Fully qualified output table. For example iceberg.automl_credit_risk.training_v1. Schema must be under the AutoML namespace.

description
string
required

Natural-language description of the prediction problem.

source_tables
string[]
required

Fully qualified source tables in catalog.schema.table format.

Minimum array length: 1
entity_grain
string[]
required

Columns that uniquely identify a training row.

Minimum array length: 1
label
LabelSpec · object
required

How to derive the label column for the training table.

Provide exactly one of column or derivation. column refers to an existing column or a simple SQL expression over source columns. derivation is a natural-language description that the crew translates into SQL.

domain
string
required

DataHub domain or business domain for governance.

owner
string
required

Username who owns the resulting training table.

join_hints
string | null

Optional natural-language join guidance for the crew.

Response

Crew run started. Poll the job for the proposal.

The crew's proposal returned to the user for review.

job_id
string<uuid>
required
status
enum<string>
required

Lifecycle of an AutoML feature engineering job.

Available options:
running,
pending_approval,
failed,
approved,
materializing,
complete
target_table_name
string
required
domain
string
required
owner
string
required
created_at
string<date-time>
required
updated_at
string<date-time>
required
recipe
FeatureRecipe · object | null

Structured recipe describing the training table the crew designed.

sql
string | null

The CREATE TABLE AS SELECT query the crew produced.

validation
ValidationSummary · object | null

Result of running the CTAS query with a row limit during validation.

Kept intentionally lean. Large agents produce more than 10 KB of JSON when this grows with per-column null rates and sample rows. That often exceeds output-token limits. Run the SQL directly to inspect rows. Only persist what's cheap and structurally useful.

error
string | null