CHEESE APIDurable runs
Multi-query runs
Apply one selection template independently to caller-identified query molecules.
{
"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.