Autoresearch
For instructions on how to authenticate to use this endpoint, see API overview.
Endpoints
GET | |
POST | |
GET | |
GET | |
POST | |
POST | |
POST | |
POST | |
POST | |
POST |
List all autoresearch training runs
List and retrieve training runs for a pipeline.
A training run records the agent's search for a model: each iteration's recipe and holdout score, and the summary of the run once it completes.
Required API key scopes
autoresearch:readPath parameters
- pipeline_idstring
Query parameters
- limitinteger
- offsetinteger
Response
Example request
GET /api /projects /:project_id /autoresearch /:pipeline_id /training_runsExample response
Status 200
List all autoresearch training runs
List and retrieve training runs for a pipeline.
A training run records the agent's search for a model: each iteration's recipe and holdout score, and the summary of the run once it completes.
Required API key scopes
autoresearch:readPath parameters
- pipeline_idstring
Query parameters
- limitinteger
- offsetinteger
Response
Example request
GET /api /projects /:project_id /autoresearch /:pipeline_id /training_runsExample response
Status 200
Create autoresearch training runs
Open a new training run for a pipeline and return its id. An agent — the in-house sandbox, an external bring-your-own agent, or a scheduled job — then records iterations against this run and finalizes it with the complete endpoint. The run starts in 'running'.
Required API key scopes
autoresearch:writePath parameters
- pipeline_idstring
Request parameters
- iteration_budgetinteger
Response
Example request
POST /api /projects /:project_id /autoresearch /:pipeline_id /training_runsExample response
Status 201 The opened training run. Record iterations against its id, then call complete.
Status 400 The pipeline is archived or paused, a run is already in progress, or an action target needs the action:read scope.
Create autoresearch training runs
Open a new training run for a pipeline and return its id. An agent — the in-house sandbox, an external bring-your-own agent, or a scheduled job — then records iterations against this run and finalizes it with the complete endpoint. The run starts in 'running'.
Required API key scopes
autoresearch:writePath parameters
- pipeline_idstring
Request parameters
- iteration_budgetinteger
Response
Example request
POST /api /projects /:project_id /autoresearch /:pipeline_id /training_runsExample response
Status 201 The opened training run. Record iterations against its id, then call complete.
Status 400 The pipeline is archived or paused, a run is already in progress, or an action target needs the action:read scope.
Retrieve autoresearch training runs
List and retrieve training runs for a pipeline.
A training run records the agent's search for a model: each iteration's recipe and holdout score, and the summary of the run once it completes.
Required API key scopes
autoresearch:readPath parameters
- idstring
- pipeline_idstring
Response
Example request
GET /api /projects /:project_id /autoresearch /:pipeline_id /training_runs /:idExample response
Status 200
Retrieve autoresearch training runs
List and retrieve training runs for a pipeline.
A training run records the agent's search for a model: each iteration's recipe and holdout score, and the summary of the run once it completes.
Required API key scopes
autoresearch:readPath parameters
- idstring
- pipeline_idstring
Response
Example request
GET /api /projects /:project_id /autoresearch /:pipeline_id /training_runs /:idExample response
Status 200
Retrieve autoresearch training runs artifacts
List the files an agent has uploaded for this training run's artifact bundle (train.py, predict.py, features.sql, and any eda/ notebooks).
Required API key scopes
autoresearch:readPath parameters
- idstring
- pipeline_idstring
Response
Example request
GET /api /projects /:project_id /autoresearch /:pipeline_id /training_runs /:id /artifactsExample response
Status 200 The relative paths of every file in this run's artifact bundle.
Retrieve autoresearch training runs artifacts
List the files an agent has uploaded for this training run's artifact bundle (train.py, predict.py, features.sql, and any eda/ notebooks).
Required API key scopes
autoresearch:readPath parameters
- idstring
- pipeline_idstring
Response
Example request
GET /api /projects /:project_id /autoresearch /:pipeline_id /training_runs /:id /artifactsExample response
Status 200 The relative paths of every file in this run's artifact bundle.
Create autoresearch training runs artifacts delete
Remove one file from this training run's artifact bundle. Idempotent — deleting a missing file is a no-op. The bundle is frozen once the run completes or fails.
Required API key scopes
autoresearch:writePath parameters
- idstring
- pipeline_idstring
Request parameters
- pathstring
Response
Example request
POST /api /projects /:project_id /autoresearch /:pipeline_id /training_runs /:id /artifacts /deleteExample response
Status 200 Whether a file existed at that path and was removed.
Status 400 Invalid path, or the run is no longer running.
Status 503 Object storage is unavailable; nothing was deleted.
Create autoresearch training runs artifacts delete
Remove one file from this training run's artifact bundle. Idempotent — deleting a missing file is a no-op. The bundle is frozen once the run completes or fails.
Required API key scopes
autoresearch:writePath parameters
- idstring
- pipeline_idstring
Request parameters
- pathstring
Response
Example request
POST /api /projects /:project_id /autoresearch /:pipeline_id /training_runs /:id /artifacts /deleteExample response
Status 200 Whether a file existed at that path and was removed.
Status 400 Invalid path, or the run is no longer running.
Status 503 Object storage is unavailable; nothing was deleted.
Create autoresearch training runs artifacts get
Fetch one file from this training run's artifact bundle, base64-encoded.
Required API key scopes
autoresearch:readPath parameters
- idstring
- pipeline_idstring
Request parameters
- pathstring
Response
Example request
POST /api /projects /:project_id /autoresearch /:pipeline_id /training_runs /:id /artifacts /getExample response
Status 200 The file's content, base64-encoded, with its size and hash.
Status 404 No file at that path in this run's bundle.
Create autoresearch training runs artifacts get
Fetch one file from this training run's artifact bundle, base64-encoded.
Required API key scopes
autoresearch:readPath parameters
- idstring
- pipeline_idstring
Request parameters
- pathstring
Response
Example request
POST /api /projects /:project_id /autoresearch /:pipeline_id /training_runs /:id /artifacts /getExample response
Status 200 The file's content, base64-encoded, with its size and hash.
Status 404 No file at that path in this run's bundle.
Create autoresearch training runs artifacts upload
Upload one file of this training run's artifact bundle. Send the file contents base64-encoded in content_base64. Re-uploading the same path overwrites it. Use this — not curl/set_output — to author train.py, predict.py, and features.sql. The bundle is frozen once the run completes or fails.
Required API key scopes
autoresearch:writePath parameters
- idstring
- pipeline_idstring
Request parameters
- pathstring
- content_base64string
Response
Example request
POST /api /projects /:project_id /autoresearch /:pipeline_id /training_runs /:id /artifacts /uploadExample response
Status 201 The stored file's path, size, and content hash.
Status 400 Invalid or reserved path, content is not base64, file exceeds the size limit, the bundle holds its maximum number of files, or the run is no longer running.
Status 503 Object storage is unavailable; nothing was stored.
Create autoresearch training runs artifacts upload
Upload one file of this training run's artifact bundle. Send the file contents base64-encoded in content_base64. Re-uploading the same path overwrites it. Use this — not curl/set_output — to author train.py, predict.py, and features.sql. The bundle is frozen once the run completes or fails.
Required API key scopes
autoresearch:writePath parameters
- idstring
- pipeline_idstring
Request parameters
- pathstring
- content_base64string
Response
Example request
POST /api /projects /:project_id /autoresearch /:pipeline_id /training_runs /:id /artifacts /uploadExample response
Status 201 The stored file's path, size, and content hash.
Status 400 Invalid or reserved path, content is not base64, file exceeds the size limit, the bundle holds its maximum number of files, or the run is no longer running.
Status 503 Object storage is unavailable; nothing was stored.
Create autoresearch training runs complete
Finalize a training run. The backend selects the kept iteration with the highest holdout score, decides champion vs challenger via the promotion ladder, and persists the model. best_iteration_id is advisory: it breaks a tie at the top score and is otherwise logged and ignored. Agents cannot set the champion directly, because promotion is server-side.
Required API key scopes
autoresearch:writePath parameters
- idstring
- pipeline_idstring
Request parameters
- best_iteration_idstring | null
- model_explanation
- recommended_nextstringDefault:
- distillationstringDefault:
- reader_summarystring | null
- headlinestring | null
- next_stepsarray | null
- report_notebook_short_idstringDefault:
Response
Example request
POST /api /projects /:project_id /autoresearch /:pipeline_id /training_runs /:id /completeExample response
Status 200 The completed training run. Call autoresearch-models-list to see the resulting champion/challenger.
Status 400 Run is already completed or failed, has no recorded iterations, or has no usable model artifact (no bundle and no feature SQL).
Create autoresearch training runs complete
Finalize a training run. The backend selects the kept iteration with the highest holdout score, decides champion vs challenger via the promotion ladder, and persists the model. best_iteration_id is advisory: it breaks a tie at the top score and is otherwise logged and ignored. Agents cannot set the champion directly, because promotion is server-side.
Required API key scopes
autoresearch:writePath parameters
- idstring
- pipeline_idstring
Request parameters
- best_iteration_idstring | null
- model_explanation
- recommended_nextstringDefault:
- distillationstringDefault:
- reader_summarystring | null
- headlinestring | null
- next_stepsarray | null
- report_notebook_short_idstringDefault:
Response
Example request
POST /api /projects /:project_id /autoresearch /:pipeline_id /training_runs /:id /completeExample response
Status 200 The completed training run. Call autoresearch-models-list to see the resulting champion/challenger.
Status 400 Run is already completed or failed, has no recorded iterations, or has no usable model artifact (no bundle and no feature SQL).
Create autoresearch training runs iterations
Record one iteration of an open training run. Idempotent on iteration_number: re-sending the same number updates that iteration. A new iteration_number is refused once the run's iteration_budget is used. The recipe is validated server-side: feature_sql must be a read-only SELECT from {anchors} keyed on person_id, and model_class must be set. The class allowlist applies only at completion, to a run that uploaded no bundle.
Required API key scopes
autoresearch:writePath parameters
- idstring
- pipeline_idstring
Request parameters
- iteration_numberinteger
- recipe_snapshotobject
- model_specobject
- status
- train_scorenumber | null
- holdout_scorenumber | null
- agent_descriptionstringDefault:
- summarystring | null
- headlinestring | null
- agent_confidencenumber | null
- parent_suggestionstring | null
Response
Example request
POST /api /projects /:project_id /autoresearch /:pipeline_id /training_runs /:id /iterationsExample response
Status 201 The recorded iteration.
Status 400 Recipe failed validation (feature_sql does not read from {anchors}, model_class missing, a non-object model_params), the run is not running, or its iteration budget is used.
Create autoresearch training runs iterations
Record one iteration of an open training run. Idempotent on iteration_number: re-sending the same number updates that iteration. A new iteration_number is refused once the run's iteration_budget is used. The recipe is validated server-side: feature_sql must be a read-only SELECT from {anchors} keyed on person_id, and model_class must be set. The class allowlist applies only at completion, to a run that uploaded no bundle.
Required API key scopes
autoresearch:writePath parameters
- idstring
- pipeline_idstring
Request parameters
- iteration_numberinteger
- recipe_snapshotobject
- model_specobject
- status
- train_scorenumber | null
- holdout_scorenumber | null
- agent_descriptionstringDefault:
- summarystring | null
- headlinestring | null
- agent_confidencenumber | null
- parent_suggestionstring | null
Response
Example request
POST /api /projects /:project_id /autoresearch /:pipeline_id /training_runs /:id /iterationsExample response
Status 201 The recorded iteration.
Status 400 Recipe failed validation (feature_sql does not read from {anchors}, model_class missing, a non-object model_params), the run is not running, or its iteration budget is used.
Create autoresearch training runs materialize features
Run features_sql server-side against the labeled training population and write the resulting train/holdout feature and label parquet files directly into this run's sandbox. Returns the local sandbox paths, row counts, and feature columns. The rows never pass through the agent's context and there is no 500-row cap. Read the returned paths with pd.read_parquet and iterate in Python.
Required API key scopes
autoresearch:writequery:readPath parameters
- idstring
- pipeline_idstring
Request parameters
- features_sqlstring
Response
Example request
POST /api /projects /:project_id /autoresearch /:pipeline_id /training_runs /:id /materialize-featuresExample response
Status 200 Sandbox paths to the train/holdout feature and label parquet files, plus row counts and feature columns.
Status 400 Run not running, features_sql invalid, sandbox unavailable, the query produced no usable rows, or the holdout split cannot be scored.
Create autoresearch training runs materialize features
Run features_sql server-side against the labeled training population and write the resulting train/holdout feature and label parquet files directly into this run's sandbox. Returns the local sandbox paths, row counts, and feature columns. The rows never pass through the agent's context and there is no 500-row cap. Read the returned paths with pd.read_parquet and iterate in Python.
Required API key scopes
autoresearch:writequery:readPath parameters
- idstring
- pipeline_idstring
Request parameters
- features_sqlstring
Response
Example request
POST /api /projects /:project_id /autoresearch /:pipeline_id /training_runs /:id /materialize-features










