CHEESE APIDurable runs

Multi-query runs

Apply one selection template independently to caller-identified query molecules.

Suggest an edit
{
  "schema_version": "run/1",
  "kind": "selection_batch",
  "selection_template": {
    "schema_version": "molecule-selection/1",
    "database": {"database_id": "enamine-real-v5a", "release_id": "2026-08-29.1"},
    "strategy": {"type": "ranked"},
    "constraints": {"presets": [{"preset_id": "lipinski-ro5", "version": "1"}]},
    "objectives": [{
      "type": "similarity",
      "reference_id": "query",
      "metric_id": "rdkit.ecfp4_tanimoto",
      "direction": "maximize"
    }],
    "portfolio": {"limit": 10},
    "execution": {"quality": "fast"}
  },
  "items": [
    {"id": "lead-001", "references": [{"id": "query", "structure": {"format": "smiles", "value": "CCO"}}]},
    {"id": "lead-002", "references": [{"id": "query", "structure": {"format": "smiles", "value": "CCN"}}]}
  ],
  "failure_policy": "continue",
  "metadata": {"campaign": "lead-expansion-2026-08"}
}

Item IDs are unique 1–128 character values from [A-Za-z0-9._-]. Initial advertised bounds are 1,000 items, 5 MiB request bodies, and 100,000 items × portfolio.limit result cells; always read the deployment/entitlement limits from the catalog.

template = (
    Selection.from_database("enamine-real-v5a", release="2026-08-29.1")
    .ranked()
    .maximize_similarity("rdkit.ecfp4_tanimoto", reference="query")
    .limit(10)
)
spec = Run.selection_batch(
    template=template,
    items={"lead-001": {"query": "CCO"}, "lead-002": {"query": "CCN"}},
)
run = dmc.runs.create(spec, idempotency_key="lead-set-2026-08-v1")

A chemically invalid item becomes its own terminal error after admission. Invalid envelopes, duplicate IDs, missing bindings, unsupported capabilities, or over-budget requests fail before a run is created.