Skip to content
Go to Boltz API

Start a small molecule de novo design run

client.SmallMolecule.Design.Start(ctx, body) (*SmallMoleculeDesignStartResponse, error)
POST/compute/v1/small-molecule/design

Create a new design run that generates novel small molecule candidates for a protein target

ParametersExpand Collapse
body SmallMoleculeDesignStartParams
NumMolecules param.Field[int64]

Number of molecules to generate. Must be between 10 and 1,000,000.

minimum10
maximum1000000

Target protein with binding pocket for small molecule design or screening

Entities []SmallMoleculeDesignStartParamsTargetEntity

Protein entities defining the target structure. Each entity represents a protein chain.

ChainIDs []string

Chain IDs for this entity

Type Protein
Value string

Amino acid sequence (one-letter codes)

Cyclic booloptional

Whether the sequence is cyclic

Modifications []SmallMoleculeDesignStartParamsTargetEntityModificationUnionoptional

Post-translational modifications. Optional; defaults to an empty list when omitted.

Accepts one of the following:
type SmallMoleculeDesignStartParamsTargetEntityModificationCcdModification struct{…}
ResidueIndex int64

0-based index of the residue to modify

minimum0
Type Ccd
Value string

CCD code from RCSB PDB (e.g. 'MSE' for selenomethionine, 'SEP' for phosphoserine)

type SmallMoleculeDesignStartParamsTargetEntityModificationSmilesModification struct{…}
ResidueIndex int64

0-based index of the residue to modify

minimum0
Type Smiles
Value string

SMILES string for the modification

Bonds []SmallMoleculeDesignStartParamsTargetBondoptional

Covalent bond constraints between atoms in the target complex. Atom-level ligand references currently support ligand_ccd only; ligand_smiles is unsupported.

Atom1 SmallMoleculeDesignStartParamsTargetBondAtom1Union

Ligand atom reference. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

Accepts one of the following:
type SmallMoleculeDesignStartParamsTargetBondAtom1LigandAtom struct{…}

Ligand atom reference. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

AtomName string

Standardized atom name (verifiable in CIF file on RCSB). Atom-level references to ligand_smiles entities are currently unsupported; use ligand_ccd instead.

ChainID string

Chain ID containing the atom

Type LigandAtom
type SmallMoleculeDesignStartParamsTargetBondAtom1PolymerAtom struct{…}
AtomName string

Standardized atom name (verifiable in CIF file on RCSB)

ChainID string

Chain ID containing the atom

ResidueIndex int64

0-based residue index

minimum0
Type PolymerAtom
Atom2 SmallMoleculeDesignStartParamsTargetBondAtom2Union

Ligand atom reference. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

Accepts one of the following:
type SmallMoleculeDesignStartParamsTargetBondAtom2LigandAtom struct{…}

Ligand atom reference. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

AtomName string

Standardized atom name (verifiable in CIF file on RCSB). Atom-level references to ligand_smiles entities are currently unsupported; use ligand_ccd instead.

ChainID string

Chain ID containing the atom

Type LigandAtom
type SmallMoleculeDesignStartParamsTargetBondAtom2PolymerAtom struct{…}
AtomName string

Standardized atom name (verifiable in CIF file on RCSB)

ChainID string

Chain ID containing the atom

ResidueIndex int64

0-based residue index

minimum0
Type PolymerAtom
Constraints []SmallMoleculeDesignStartParamsTargetConstraintUnionoptional

Structural constraints (pocket and contact). Atom-level ligand references currently support ligand_ccd only; ligand_smiles is unsupported.

Accepts one of the following:
type SmallMoleculeDesignStartParamsTargetConstraintPocketConstraint struct{…}

Constrains the binder to interact with specific pocket residues on the target.

BinderChainID string

Chain ID of the binder molecule

ContactResidues map[string, []int64]

Binding pocket residues keyed by chain ID. Each key is a chain ID (e.g. "A") and the value is an array of 0-indexed residue indices that define the pocket on that chain.

MaxDistanceAngstrom float64

Maximum allowed distance in Angstroms between binder and pocket residues. Typical range: 4-8 A.

Type Pocket
Force booloptional

Whether to force the constraint

type SmallMoleculeDesignStartParamsTargetConstraintContactConstraint struct{…}

Contact constraint between two tokens. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

MaxDistanceAngstrom float64

Maximum distance in Angstroms

Token1 SmallMoleculeDesignStartParamsTargetConstraintContactConstraintToken1Union

Ligand contact token. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

Accepts one of the following:
type SmallMoleculeDesignStartParamsTargetConstraintContactConstraintToken1PolymerContactToken struct{…}
ChainID string

Chain ID

ResidueIndex int64

0-based residue index

minimum0
Type PolymerContact
type SmallMoleculeDesignStartParamsTargetConstraintContactConstraintToken1LigandContactToken struct{…}

Ligand contact token. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

AtomName string

Atom name. Atom-level references to ligand_smiles entities are currently unsupported; use ligand_ccd instead.

ChainID string

Chain ID

Type LigandContact
Token2 SmallMoleculeDesignStartParamsTargetConstraintContactConstraintToken2Union

Ligand contact token. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

Accepts one of the following:
type SmallMoleculeDesignStartParamsTargetConstraintContactConstraintToken2PolymerContactToken struct{…}
ChainID string

Chain ID

ResidueIndex int64

0-based residue index

minimum0
Type PolymerContact
type SmallMoleculeDesignStartParamsTargetConstraintContactConstraintToken2LigandContactToken struct{…}

Ligand contact token. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

AtomName string

Atom name. Atom-level references to ligand_smiles entities are currently unsupported; use ligand_ccd instead.

ChainID string

Chain ID

Type LigandContact
Type Contact
Force booloptional

Whether to force the constraint

PocketResidues map[string, []int64]optional

Binding pocket residues, keyed by chain ID. Each key is a chain ID (e.g. "A") and the value is an array of 0-indexed residue indices that define the binding pocket on that chain. When provided, these residues guide pocket extraction and add a derived pocket constraint during affinity predictions. That derived constraint remains separate from any explicit pocket constraints in target.constraints. When omitted, the model auto-detects the pocket.

ReferenceLigands []stringoptional

Reference ligands as SMILES strings that help the model identify the binding pocket. When omitted, a set of drug-like default ligands is used for pocket detection.

ChemicalSpace param.Field[SmallMoleculeDesignStartParamsChemicalSpace]optional

Chemical space to constrain generated molecules. Currently only 'enamine_real' (Enamine REAL chemical space) is supported. Additional options may be added in the future.

const SmallMoleculeDesignStartParamsChemicalSpaceEnamineReal SmallMoleculeDesignStartParamsChemicalSpace = "enamine_real"
IdempotencyKey param.Field[string]optional

Client-provided key to prevent duplicate submissions on retries

maxLength255
MoleculeFilters param.Field[SmallMoleculeDesignStartParamsMoleculeFilters]optional

Molecule filtering configuration. Controls both Boltz built-in SMARTS filtering and custom filters.

BoltzSmartsCatalogFilterLevel SmallMoleculeDesignStartParamsMoleculeFiltersBoltzSmartsCatalogFilterLeveloptional

Controls the stringency of Boltz's built-in SMARTS structural alert filtering, which removes molecules matching known problematic substructures. 'recommended' (default): applies a curated set of alerts balancing safety and hit rate. 'extra': adds additional alerts beyond the recommended set for stricter filtering. 'aggressive': applies the most comprehensive alert set — may reject viable molecules. 'disabled': turns off Boltz SMARTS filtering entirely; only custom_filters will be applied.

Accepts one of the following:
const SmallMoleculeDesignStartParamsMoleculeFiltersBoltzSmartsCatalogFilterLevelRecommended SmallMoleculeDesignStartParamsMoleculeFiltersBoltzSmartsCatalogFilterLevel = "recommended"
const SmallMoleculeDesignStartParamsMoleculeFiltersBoltzSmartsCatalogFilterLevelExtra SmallMoleculeDesignStartParamsMoleculeFiltersBoltzSmartsCatalogFilterLevel = "extra"
const SmallMoleculeDesignStartParamsMoleculeFiltersBoltzSmartsCatalogFilterLevelAggressive SmallMoleculeDesignStartParamsMoleculeFiltersBoltzSmartsCatalogFilterLevel = "aggressive"
const SmallMoleculeDesignStartParamsMoleculeFiltersBoltzSmartsCatalogFilterLevelDisabled SmallMoleculeDesignStartParamsMoleculeFiltersBoltzSmartsCatalogFilterLevel = "disabled"
CustomFilters []SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterUnionoptional

Custom filters to apply. Molecules must pass all filters (AND logic).

Accepts one of the following:
type SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterLipinskiFilter struct{…}

Lipinski's Rule of Five filter. Rejects molecules that violate drug-likeness criteria based on molecular weight, LogP, hydrogen bond donors, and hydrogen bond acceptors.

MaxHba float64

Maximum number of hydrogen bond acceptors. Lipinski threshold: 10

MaxHbd float64

Maximum number of hydrogen bond donors. Lipinski threshold: 5

MaxLogp float64

Maximum LogP. Lipinski threshold: 5

MaxMw float64

Maximum molecular weight (Da). Lipinski threshold: 500

Type LipinskiFilter
AllowSingleViolation booloptional

If true, one rule violation is allowed (classic Rule of Five). Defaults to false (all rules must pass).

type SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterRdkitDescriptorFilter struct{…}

Filter molecules by RDKit molecular descriptors. Each descriptor is constrained to a min/max range. Only descriptors you provide are checked — omitted descriptors are unconstrained.

Type RdkitDescriptorFilter
FractionCsp3 SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterRdkitDescriptorFilterFractionCsp3optional

Min/max range constraint for an RDKit molecular descriptor

Max float64optional

Maximum allowed value (inclusive)

Min float64optional

Minimum allowed value (inclusive)

MolLogp SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterRdkitDescriptorFilterMolLogpoptional

Min/max range constraint for an RDKit molecular descriptor

Max float64optional

Maximum allowed value (inclusive)

Min float64optional

Minimum allowed value (inclusive)

MolWt SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterRdkitDescriptorFilterMolWtoptional

Min/max range constraint for an RDKit molecular descriptor

Max float64optional

Maximum allowed value (inclusive)

Min float64optional

Minimum allowed value (inclusive)

NumAromaticRings SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterRdkitDescriptorFilterNumAromaticRingsoptional

Min/max range constraint for an RDKit molecular descriptor

Max float64optional

Maximum allowed value (inclusive)

Min float64optional

Minimum allowed value (inclusive)

NumHAcceptors SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterRdkitDescriptorFilterNumHAcceptorsoptional

Min/max range constraint for an RDKit molecular descriptor

Max float64optional

Maximum allowed value (inclusive)

Min float64optional

Minimum allowed value (inclusive)

NumHDonors SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterRdkitDescriptorFilterNumHDonorsoptional

Min/max range constraint for an RDKit molecular descriptor

Max float64optional

Maximum allowed value (inclusive)

Min float64optional

Minimum allowed value (inclusive)

NumHeteroatoms SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterRdkitDescriptorFilterNumHeteroatomsoptional

Min/max range constraint for an RDKit molecular descriptor

Max float64optional

Maximum allowed value (inclusive)

Min float64optional

Minimum allowed value (inclusive)

NumRings SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterRdkitDescriptorFilterNumRingsoptional

Min/max range constraint for an RDKit molecular descriptor

Max float64optional

Maximum allowed value (inclusive)

Min float64optional

Minimum allowed value (inclusive)

NumRotatableBonds SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterRdkitDescriptorFilterNumRotatableBondsoptional

Min/max range constraint for an RDKit molecular descriptor

Max float64optional

Maximum allowed value (inclusive)

Min float64optional

Minimum allowed value (inclusive)

Tpsa SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterRdkitDescriptorFilterTpsaoptional

Min/max range constraint for an RDKit molecular descriptor

Max float64optional

Maximum allowed value (inclusive)

Min float64optional

Minimum allowed value (inclusive)

type SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterSmartsCustomFilter struct{…}

Filter molecules by custom SMARTS patterns. Molecules matching any pattern are rejected.

Patterns []string

SMARTS patterns. Molecules matching any pattern are rejected.

Type SmartsCustomFilter
type SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterSmartsCatalogFilter struct{…}

Filter molecules using a predefined SMARTS catalog of structural alerts.

Catalog SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterSmartsCatalogFilterCatalog

Predefined SMARTS catalog to apply. PAINS, BRENK, ChEMBL, and NIH catalogs reject known problematic substructures.

Accepts one of the following:
const SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterSmartsCatalogFilterCatalogPains SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterSmartsCatalogFilterCatalog = "PAINS"
const SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterSmartsCatalogFilterCatalogPainsA SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterSmartsCatalogFilterCatalog = "PAINS_A"
const SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterSmartsCatalogFilterCatalogPainsB SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterSmartsCatalogFilterCatalog = "PAINS_B"
const SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterSmartsCatalogFilterCatalogPainsC SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterSmartsCatalogFilterCatalog = "PAINS_C"
const SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterSmartsCatalogFilterCatalogBrenk SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterSmartsCatalogFilterCatalog = "BRENK"
const SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterSmartsCatalogFilterCatalogChembl SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterSmartsCatalogFilterCatalog = "CHEMBL"
const SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterSmartsCatalogFilterCatalogChemblBms SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterSmartsCatalogFilterCatalog = "CHEMBL_BMS"
const SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterSmartsCatalogFilterCatalogChemblDundee SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterSmartsCatalogFilterCatalog = "CHEMBL_Dundee"
const SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterSmartsCatalogFilterCatalogChemblGlaxo SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterSmartsCatalogFilterCatalog = "CHEMBL_Glaxo"
const SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterSmartsCatalogFilterCatalogChemblInpharmatica SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterSmartsCatalogFilterCatalog = "CHEMBL_Inpharmatica"
const SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterSmartsCatalogFilterCatalogChemblLint SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterSmartsCatalogFilterCatalog = "CHEMBL_LINT"
const SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterSmartsCatalogFilterCatalogChemblMlsmr SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterSmartsCatalogFilterCatalog = "CHEMBL_MLSMR"
const SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterSmartsCatalogFilterCatalogChemblSureChEmbl SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterSmartsCatalogFilterCatalog = "CHEMBL_SureChEMBL"
const SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterSmartsCatalogFilterCatalogNih SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterSmartsCatalogFilterCatalog = "NIH"
Type SmartsCatalogFilter
type SmallMoleculeDesignStartParamsMoleculeFiltersCustomFilterSmilesRegexFilter struct{…}

Filter molecules by regex patterns on their SMILES representation.

Patterns []string

Regex patterns applied to SMILES strings. Molecules matching any pattern are rejected.

Type SmilesRegexFilter
WorkspaceID param.Field[string]optional

Target workspace ID (admin keys only; ignored for workspace keys)

ReturnsExpand Collapse
type SmallMoleculeDesignStartResponse struct{…}

A small molecule design engine run that generates novel molecules

ID string

Unique SmDesignRun identifier

CompletedAt Time
formatdate-time
CreatedAt Time
formatdate-time
DataDeletedAt Time

When the input, output, and result data was permanently deleted. Null if data has not been deleted.

formatdate-time
Engine BoltzSmDesign

Engine used for small molecule design

EngineVersion string

Engine version used for small molecule design

Error SmallMoleculeDesignStartResponseError
Code string

Machine-readable error code

Message string

Human-readable error message

Details anyoptional

Additional field-level error details keyed by input path, when available.

Input SmallMoleculeDesignStartResponseInput

Pipeline input (null if data deleted)

NumMolecules int64

Number of molecules to generate. Must be between 10 and 1,000,000.

minimum10
maximum1000000
Target SmallMoleculeDesignStartResponseInputTarget

Target protein with binding pocket for small molecule design or screening

Entities []SmallMoleculeDesignStartResponseInputTargetEntity

Protein entities defining the target structure. Each entity represents a protein chain.

ChainIDs []string

Chain IDs for this entity

Type Protein
Value string

Amino acid sequence (one-letter codes)

Cyclic booloptional

Whether the sequence is cyclic

Modifications []SmallMoleculeDesignStartResponseInputTargetEntityModificationUnionoptional

Post-translational modifications. Optional; defaults to an empty list when omitted.

Accepts one of the following:
type SmallMoleculeDesignStartResponseInputTargetEntityModificationCcdModificationResponse struct{…}
ResidueIndex int64

0-based index of the residue to modify

minimum0
Type Ccd
Value string

CCD code from RCSB PDB (e.g. 'MSE' for selenomethionine, 'SEP' for phosphoserine)

type SmallMoleculeDesignStartResponseInputTargetEntityModificationSmilesModificationResponse struct{…}
ResidueIndex int64

0-based index of the residue to modify

minimum0
Type Smiles
Value string

SMILES string for the modification

Bonds []SmallMoleculeDesignStartResponseInputTargetBondoptional

Covalent bond constraints between atoms in the target complex. Atom-level ligand references currently support ligand_ccd only; ligand_smiles is unsupported.

Atom1 SmallMoleculeDesignStartResponseInputTargetBondAtom1Union

Ligand atom reference. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

Accepts one of the following:
type SmallMoleculeDesignStartResponseInputTargetBondAtom1LigandAtomResponse struct{…}

Ligand atom reference. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

AtomName string

Standardized atom name (verifiable in CIF file on RCSB). Atom-level references to ligand_smiles entities are currently unsupported; use ligand_ccd instead.

ChainID string

Chain ID containing the atom

Type LigandAtom
type SmallMoleculeDesignStartResponseInputTargetBondAtom1PolymerAtomResponse struct{…}
AtomName string

Standardized atom name (verifiable in CIF file on RCSB)

ChainID string

Chain ID containing the atom

ResidueIndex int64

0-based residue index

minimum0
Type PolymerAtom
Atom2 SmallMoleculeDesignStartResponseInputTargetBondAtom2Union

Ligand atom reference. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

Accepts one of the following:
type SmallMoleculeDesignStartResponseInputTargetBondAtom2LigandAtomResponse struct{…}

Ligand atom reference. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

AtomName string

Standardized atom name (verifiable in CIF file on RCSB). Atom-level references to ligand_smiles entities are currently unsupported; use ligand_ccd instead.

ChainID string

Chain ID containing the atom

Type LigandAtom
type SmallMoleculeDesignStartResponseInputTargetBondAtom2PolymerAtomResponse struct{…}
AtomName string

Standardized atom name (verifiable in CIF file on RCSB)

ChainID string

Chain ID containing the atom

ResidueIndex int64

0-based residue index

minimum0
Type PolymerAtom
Constraints []SmallMoleculeDesignStartResponseInputTargetConstraintUnionoptional

Structural constraints (pocket and contact). Atom-level ligand references currently support ligand_ccd only; ligand_smiles is unsupported.

Accepts one of the following:
type SmallMoleculeDesignStartResponseInputTargetConstraintPocketConstraintResponse struct{…}

Constrains the binder to interact with specific pocket residues on the target.

BinderChainID string

Chain ID of the binder molecule

ContactResidues map[string, []int64]

Binding pocket residues keyed by chain ID. Each key is a chain ID (e.g. "A") and the value is an array of 0-indexed residue indices that define the pocket on that chain.

MaxDistanceAngstrom float64

Maximum allowed distance in Angstroms between binder and pocket residues. Typical range: 4-8 A.

Type Pocket
Force booloptional

Whether to force the constraint

type SmallMoleculeDesignStartResponseInputTargetConstraintContactConstraintResponse struct{…}

Contact constraint between two tokens. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

MaxDistanceAngstrom float64

Maximum distance in Angstroms

Token1 SmallMoleculeDesignStartResponseInputTargetConstraintContactConstraintResponseToken1Union

Ligand contact token. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

Accepts one of the following:
type SmallMoleculeDesignStartResponseInputTargetConstraintContactConstraintResponseToken1PolymerContactTokenResponse struct{…}
ChainID string

Chain ID

ResidueIndex int64

0-based residue index

minimum0
Type PolymerContact
type SmallMoleculeDesignStartResponseInputTargetConstraintContactConstraintResponseToken1LigandContactTokenResponse struct{…}

Ligand contact token. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

AtomName string

Atom name. Atom-level references to ligand_smiles entities are currently unsupported; use ligand_ccd instead.

ChainID string

Chain ID

Type LigandContact
Token2 SmallMoleculeDesignStartResponseInputTargetConstraintContactConstraintResponseToken2Union

Ligand contact token. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

Accepts one of the following:
type SmallMoleculeDesignStartResponseInputTargetConstraintContactConstraintResponseToken2PolymerContactTokenResponse struct{…}
ChainID string

Chain ID

ResidueIndex int64

0-based residue index

minimum0
Type PolymerContact
type SmallMoleculeDesignStartResponseInputTargetConstraintContactConstraintResponseToken2LigandContactTokenResponse struct{…}

Ligand contact token. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

AtomName string

Atom name. Atom-level references to ligand_smiles entities are currently unsupported; use ligand_ccd instead.

ChainID string

Chain ID

Type LigandContact
Type Contact
Force booloptional

Whether to force the constraint

PocketResidues map[string, []int64]optional

Binding pocket residues, keyed by chain ID. Each key is a chain ID (e.g. "A") and the value is an array of 0-indexed residue indices that define the binding pocket on that chain. When provided, these residues guide pocket extraction and add a derived pocket constraint during affinity predictions. That derived constraint remains separate from any explicit pocket constraints in target.constraints. When omitted, the model auto-detects the pocket.

ReferenceLigands []stringoptional

Reference ligands as SMILES strings that help the model identify the binding pocket. When omitted, a set of drug-like default ligands is used for pocket detection.

ChemicalSpace stringoptional

Chemical space to constrain generated molecules. Currently only 'enamine_real' (Enamine REAL chemical space) is supported. Additional options may be added in the future.

IdempotencyKey stringoptional

Client-provided key to prevent duplicate submissions on retries

maxLength255
MoleculeFilters SmallMoleculeDesignStartResponseInputMoleculeFiltersoptional

Molecule filtering configuration. Controls both Boltz built-in SMARTS filtering and custom filters.

BoltzSmartsCatalogFilterLevel SmallMoleculeDesignStartResponseInputMoleculeFiltersBoltzSmartsCatalogFilterLeveloptional

Controls the stringency of Boltz's built-in SMARTS structural alert filtering, which removes molecules matching known problematic substructures. 'recommended' (default): applies a curated set of alerts balancing safety and hit rate. 'extra': adds additional alerts beyond the recommended set for stricter filtering. 'aggressive': applies the most comprehensive alert set — may reject viable molecules. 'disabled': turns off Boltz SMARTS filtering entirely; only custom_filters will be applied.

Accepts one of the following:
const SmallMoleculeDesignStartResponseInputMoleculeFiltersBoltzSmartsCatalogFilterLevelRecommended SmallMoleculeDesignStartResponseInputMoleculeFiltersBoltzSmartsCatalogFilterLevel = "recommended"
const SmallMoleculeDesignStartResponseInputMoleculeFiltersBoltzSmartsCatalogFilterLevelExtra SmallMoleculeDesignStartResponseInputMoleculeFiltersBoltzSmartsCatalogFilterLevel = "extra"
const SmallMoleculeDesignStartResponseInputMoleculeFiltersBoltzSmartsCatalogFilterLevelAggressive SmallMoleculeDesignStartResponseInputMoleculeFiltersBoltzSmartsCatalogFilterLevel = "aggressive"
const SmallMoleculeDesignStartResponseInputMoleculeFiltersBoltzSmartsCatalogFilterLevelDisabled SmallMoleculeDesignStartResponseInputMoleculeFiltersBoltzSmartsCatalogFilterLevel = "disabled"
CustomFilters []SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterUnionoptional

Custom filters to apply. Molecules must pass all filters (AND logic).

Accepts one of the following:
type SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterLipinskiFilterResponse struct{…}

Lipinski's Rule of Five filter. Rejects molecules that violate drug-likeness criteria based on molecular weight, LogP, hydrogen bond donors, and hydrogen bond acceptors.

MaxHba float64

Maximum number of hydrogen bond acceptors. Lipinski threshold: 10

MaxHbd float64

Maximum number of hydrogen bond donors. Lipinski threshold: 5

MaxLogp float64

Maximum LogP. Lipinski threshold: 5

MaxMw float64

Maximum molecular weight (Da). Lipinski threshold: 500

Type LipinskiFilter
AllowSingleViolation booloptional

If true, one rule violation is allowed (classic Rule of Five). Defaults to false (all rules must pass).

type SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterRdkitDescriptorFilterResponse struct{…}

Filter molecules by RDKit molecular descriptors. Each descriptor is constrained to a min/max range. Only descriptors you provide are checked — omitted descriptors are unconstrained.

Type RdkitDescriptorFilter
FractionCsp3 SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterRdkitDescriptorFilterResponseFractionCsp3optional

Min/max range constraint for an RDKit molecular descriptor

Max float64optional

Maximum allowed value (inclusive)

Min float64optional

Minimum allowed value (inclusive)

MolLogp SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterRdkitDescriptorFilterResponseMolLogpoptional

Min/max range constraint for an RDKit molecular descriptor

Max float64optional

Maximum allowed value (inclusive)

Min float64optional

Minimum allowed value (inclusive)

MolWt SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterRdkitDescriptorFilterResponseMolWtoptional

Min/max range constraint for an RDKit molecular descriptor

Max float64optional

Maximum allowed value (inclusive)

Min float64optional

Minimum allowed value (inclusive)

NumAromaticRings SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterRdkitDescriptorFilterResponseNumAromaticRingsoptional

Min/max range constraint for an RDKit molecular descriptor

Max float64optional

Maximum allowed value (inclusive)

Min float64optional

Minimum allowed value (inclusive)

NumHAcceptors SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterRdkitDescriptorFilterResponseNumHAcceptorsoptional

Min/max range constraint for an RDKit molecular descriptor

Max float64optional

Maximum allowed value (inclusive)

Min float64optional

Minimum allowed value (inclusive)

NumHDonors SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterRdkitDescriptorFilterResponseNumHDonorsoptional

Min/max range constraint for an RDKit molecular descriptor

Max float64optional

Maximum allowed value (inclusive)

Min float64optional

Minimum allowed value (inclusive)

NumHeteroatoms SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterRdkitDescriptorFilterResponseNumHeteroatomsoptional

Min/max range constraint for an RDKit molecular descriptor

Max float64optional

Maximum allowed value (inclusive)

Min float64optional

Minimum allowed value (inclusive)

NumRings SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterRdkitDescriptorFilterResponseNumRingsoptional

Min/max range constraint for an RDKit molecular descriptor

Max float64optional

Maximum allowed value (inclusive)

Min float64optional

Minimum allowed value (inclusive)

NumRotatableBonds SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterRdkitDescriptorFilterResponseNumRotatableBondsoptional

Min/max range constraint for an RDKit molecular descriptor

Max float64optional

Maximum allowed value (inclusive)

Min float64optional

Minimum allowed value (inclusive)

Tpsa SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterRdkitDescriptorFilterResponseTpsaoptional

Min/max range constraint for an RDKit molecular descriptor

Max float64optional

Maximum allowed value (inclusive)

Min float64optional

Minimum allowed value (inclusive)

type SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterSmartsCustomFilterResponse struct{…}

Filter molecules by custom SMARTS patterns. Molecules matching any pattern are rejected.

Patterns []string

SMARTS patterns. Molecules matching any pattern are rejected.

Type SmartsCustomFilter
type SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterSmartsCatalogFilterResponse struct{…}

Filter molecules using a predefined SMARTS catalog of structural alerts.

Catalog SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterSmartsCatalogFilterResponseCatalog

Predefined SMARTS catalog to apply. PAINS, BRENK, ChEMBL, and NIH catalogs reject known problematic substructures.

Accepts one of the following:
const SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterSmartsCatalogFilterResponseCatalogPains SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterSmartsCatalogFilterResponseCatalog = "PAINS"
const SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterSmartsCatalogFilterResponseCatalogPainsA SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterSmartsCatalogFilterResponseCatalog = "PAINS_A"
const SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterSmartsCatalogFilterResponseCatalogPainsB SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterSmartsCatalogFilterResponseCatalog = "PAINS_B"
const SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterSmartsCatalogFilterResponseCatalogPainsC SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterSmartsCatalogFilterResponseCatalog = "PAINS_C"
const SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterSmartsCatalogFilterResponseCatalogBrenk SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterSmartsCatalogFilterResponseCatalog = "BRENK"
const SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterSmartsCatalogFilterResponseCatalogChembl SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterSmartsCatalogFilterResponseCatalog = "CHEMBL"
const SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterSmartsCatalogFilterResponseCatalogChemblBms SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterSmartsCatalogFilterResponseCatalog = "CHEMBL_BMS"
const SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterSmartsCatalogFilterResponseCatalogChemblDundee SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterSmartsCatalogFilterResponseCatalog = "CHEMBL_Dundee"
const SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterSmartsCatalogFilterResponseCatalogChemblGlaxo SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterSmartsCatalogFilterResponseCatalog = "CHEMBL_Glaxo"
const SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterSmartsCatalogFilterResponseCatalogChemblInpharmatica SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterSmartsCatalogFilterResponseCatalog = "CHEMBL_Inpharmatica"
const SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterSmartsCatalogFilterResponseCatalogChemblLint SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterSmartsCatalogFilterResponseCatalog = "CHEMBL_LINT"
const SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterSmartsCatalogFilterResponseCatalogChemblMlsmr SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterSmartsCatalogFilterResponseCatalog = "CHEMBL_MLSMR"
const SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterSmartsCatalogFilterResponseCatalogChemblSureChEmbl SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterSmartsCatalogFilterResponseCatalog = "CHEMBL_SureChEMBL"
const SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterSmartsCatalogFilterResponseCatalogNih SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterSmartsCatalogFilterResponseCatalog = "NIH"
Type SmartsCatalogFilter
type SmallMoleculeDesignStartResponseInputMoleculeFiltersCustomFilterSmilesRegexFilterResponse struct{…}

Filter molecules by regex patterns on their SMILES representation.

Patterns []string

Regex patterns applied to SMILES strings. Molecules matching any pattern are rejected.

Type SmilesRegexFilter
WorkspaceID stringoptional

Target workspace ID (admin keys only; ignored for workspace keys)

Livemode bool

Whether this resource was created with a live API key.

Progress SmallMoleculeDesignStartResponseProgress
NumMoleculesGenerated int64

Number of molecules generated so far

minimum0
TotalMoleculesToGenerate int64

Total number of molecules requested

minimum1
LatestResultID stringoptional

ID of the most recently generated result

StartedAt Time
formatdate-time
Status SmallMoleculeDesignStartResponseStatus
Accepts one of the following:
const SmallMoleculeDesignStartResponseStatusPending SmallMoleculeDesignStartResponseStatus = "pending"
const SmallMoleculeDesignStartResponseStatusRunning SmallMoleculeDesignStartResponseStatus = "running"
const SmallMoleculeDesignStartResponseStatusSucceeded SmallMoleculeDesignStartResponseStatus = "succeeded"
const SmallMoleculeDesignStartResponseStatusFailed SmallMoleculeDesignStartResponseStatus = "failed"
const SmallMoleculeDesignStartResponseStatusStopped SmallMoleculeDesignStartResponseStatus = "stopped"
StoppedAt Time
formatdate-time
WorkspaceID string

Workspace ID

IdempotencyKey stringoptional

Client-provided idempotency key

Start a small molecule de novo design run

package main

import (
  "context"
  "fmt"

  "github.com/boltz-bio/boltz-api-go"
  "github.com/boltz-bio/boltz-api-go/option"
)

func main() {
  client := boltzapi.NewClient(
    option.WithAPIKey("My API Key"),
  )
  response, err := client.SmallMolecule.Design.Start(context.TODO(), boltzapi.SmallMoleculeDesignStartParams{
    NumMolecules: 10,
    Target: boltzapi.SmallMoleculeDesignStartParamsTarget{
      Entities: []boltzapi.SmallMoleculeDesignStartParamsTargetEntity{boltzapi.SmallMoleculeDesignStartParamsTargetEntity{
        ChainIDs: []string{"string"},
        Value: "value",
      }},
    },
  })
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", response.ID)
}
{
  "id": "id",
  "completed_at": "2019-12-27T18:11:19.117Z",
  "created_at": "2019-12-27T18:11:19.117Z",
  "data_deleted_at": "2019-12-27T18:11:19.117Z",
  "engine": "boltz-sm-design",
  "engine_version": "engine_version",
  "error": {
    "code": "code",
    "message": "message",
    "details": {}
  },
  "input": {
    "num_molecules": 10,
    "target": {
      "entities": [
        {
          "chain_ids": [
            "string"
          ],
          "type": "protein",
          "value": "value",
          "cyclic": true,
          "modifications": [
            {
              "residue_index": 0,
              "type": "ccd",
              "value": "value"
            }
          ]
        }
      ],
      "bonds": [
        {
          "atom1": {
            "atom_name": "atom_name",
            "chain_id": "chain_id",
            "type": "ligand_atom"
          },
          "atom2": {
            "atom_name": "atom_name",
            "chain_id": "chain_id",
            "type": "ligand_atom"
          }
        }
      ],
      "constraints": [
        {
          "binder_chain_id": "binder_chain_id",
          "contact_residues": {
            "A": [
              42,
              43,
              44,
              67,
              68,
              69
            ]
          },
          "max_distance_angstrom": 0,
          "type": "pocket",
          "force": true
        }
      ],
      "pocket_residues": {
        "A": [
          42,
          43,
          44,
          67,
          68,
          69
        ]
      },
      "reference_ligands": [
        "string"
      ]
    },
    "chemical_space": "enamine_real",
    "idempotency_key": "idempotency_key",
    "molecule_filters": {
      "boltz_smarts_catalog_filter_level": "recommended",
      "custom_filters": [
        {
          "max_hba": 0,
          "max_hbd": 0,
          "max_logp": 0,
          "max_mw": 0,
          "type": "lipinski_filter",
          "allow_single_violation": true
        }
      ]
    },
    "workspace_id": "workspace_id"
  },
  "livemode": true,
  "progress": {
    "num_molecules_generated": 0,
    "total_molecules_to_generate": 1,
    "latest_result_id": "latest_result_id"
  },
  "started_at": "2019-12-27T18:11:19.117Z",
  "status": "pending",
  "stopped_at": "2019-12-27T18:11:19.117Z",
  "workspace_id": "workspace_id",
  "idempotency_key": "idempotency_key"
}
Returns Examples
{
  "id": "id",
  "completed_at": "2019-12-27T18:11:19.117Z",
  "created_at": "2019-12-27T18:11:19.117Z",
  "data_deleted_at": "2019-12-27T18:11:19.117Z",
  "engine": "boltz-sm-design",
  "engine_version": "engine_version",
  "error": {
    "code": "code",
    "message": "message",
    "details": {}
  },
  "input": {
    "num_molecules": 10,
    "target": {
      "entities": [
        {
          "chain_ids": [
            "string"
          ],
          "type": "protein",
          "value": "value",
          "cyclic": true,
          "modifications": [
            {
              "residue_index": 0,
              "type": "ccd",
              "value": "value"
            }
          ]
        }
      ],
      "bonds": [
        {
          "atom1": {
            "atom_name": "atom_name",
            "chain_id": "chain_id",
            "type": "ligand_atom"
          },
          "atom2": {
            "atom_name": "atom_name",
            "chain_id": "chain_id",
            "type": "ligand_atom"
          }
        }
      ],
      "constraints": [
        {
          "binder_chain_id": "binder_chain_id",
          "contact_residues": {
            "A": [
              42,
              43,
              44,
              67,
              68,
              69
            ]
          },
          "max_distance_angstrom": 0,
          "type": "pocket",
          "force": true
        }
      ],
      "pocket_residues": {
        "A": [
          42,
          43,
          44,
          67,
          68,
          69
        ]
      },
      "reference_ligands": [
        "string"
      ]
    },
    "chemical_space": "enamine_real",
    "idempotency_key": "idempotency_key",
    "molecule_filters": {
      "boltz_smarts_catalog_filter_level": "recommended",
      "custom_filters": [
        {
          "max_hba": 0,
          "max_hbd": 0,
          "max_logp": 0,
          "max_mw": 0,
          "type": "lipinski_filter",
          "allow_single_violation": true
        }
      ]
    },
    "workspace_id": "workspace_id"
  },
  "livemode": true,
  "progress": {
    "num_molecules_generated": 0,
    "total_molecules_to_generate": 1,
    "latest_result_id": "latest_result_id"
  },
  "started_at": "2019-12-27T18:11:19.117Z",
  "status": "pending",
  "stopped_at": "2019-12-27T18:11:19.117Z",
  "workspace_id": "workspace_id",
  "idempotency_key": "idempotency_key"
}