Skip to content
Go to Boltz API

Small Molecule

Small Molecule Pipeline — design novel small molecules and screen compound libraries against protein targets. Includes de novo generation and virtual screening.

Small MoleculeDesign

Generate novel small molecules optimized for binding to a protein target. Results are scored by binding confidence (likelihood of binding, for hit discovery), optimization score (binding strength ranking, for lead optimization), and structure confidence.

Start a small molecule de novo design run
POST/compute/v1/small-molecule/design
List small molecule design runs
GET/compute/v1/small-molecule/design
Get small molecule design run status
GET/compute/v1/small-molecule/design/{id}
Get generated small molecule designs
GET/compute/v1/small-molecule/design/{id}/results
Stop a running small molecule design run
POST/compute/v1/small-molecule/design/{id}/stop
Delete small molecule design run data
POST/compute/v1/small-molecule/design/{id}/delete-data
Estimate cost for a small molecule design run
POST/compute/v1/small-molecule/design/estimate-cost
ModelsExpand Collapse
DesignStartResponse object { id, completed_at, created_at, 14 more }

A small molecule design pipeline run that generates novel molecules

id: string

Unique SmDesignRun identifier

completed_at: string
formatdate-time
created_at: string
formatdate-time
data_deleted_at: string

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

formatdate-time
Deprecatedengine: "boltzmol"
Use pipeline instead.

Deprecated. Use pipeline instead.

Deprecatedengine_version: "1.0"
Use pipeline_version instead.

Deprecated. Use pipeline_version instead.

error: object { code, message, details }
code: string

Machine-readable error code

message: string

Human-readable error message

details: optional unknown

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

input: object { num_molecules, target, chemical_space, 3 more }

Pipeline input (null if data deleted)

num_molecules: number

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

minimum10
maximum1000000
target: object { entities, bonds, constraints, 3 more }

Target protein sequences for small molecule design or screening.

entities: array of object { chain_ids, type, value, 2 more }

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

chain_ids: array of string

Chain IDs for this entity

type: "protein"
value: string

Amino acid sequence (one-letter codes)

cyclic: optional boolean

Whether the sequence is cyclic

modifications: optional array of object { residue_index, type, value }

CCD post-translational modifications. Optional; defaults to an empty list when omitted. SMILES modifications are not supported.

residue_index: number

0-based index of the residue to modify

minimum0
type: "ccd"

Modification format. Only CCD polymer modifications are supported.

value: string

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

bonds: optional array of object { atom1, atom2 }

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

atom1: object { atom_name, chain_id, type } or object { atom_name, chain_id, residue_index, type }

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

One of the following:
LigandAtomResponse object { atom_name, chain_id, type }

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

atom_name: string

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

chain_id: string

Chain ID containing the atom

type: "ligand_atom"
PolymerAtomResponse object { atom_name, chain_id, residue_index, type }
atom_name: string

Standardized atom name (verifiable in CIF file on RCSB)

chain_id: string

Chain ID containing the atom

residue_index: number

0-based residue index

minimum0
type: "polymer_atom"
atom2: object { atom_name, chain_id, type } or object { atom_name, chain_id, residue_index, type }

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

One of the following:
LigandAtomResponse object { atom_name, chain_id, type }

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

atom_name: string

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

chain_id: string

Chain ID containing the atom

type: "ligand_atom"
PolymerAtomResponse object { atom_name, chain_id, residue_index, type }
atom_name: string

Standardized atom name (verifiable in CIF file on RCSB)

chain_id: string

Chain ID containing the atom

residue_index: number

0-based residue index

minimum0
type: "polymer_atom"
constraints: optional array of object { binder_chain_id, contact_residues, max_distance_angstrom, 2 more } or object { max_distance_angstrom, token1, token2, 2 more }

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

One of the following:
PocketConstraintResponse object { binder_chain_id, contact_residues, max_distance_angstrom, 2 more }

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

binder_chain_id: string

Chain ID of the binder molecule

contact_residues: map[array of number]

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.

max_distance_angstrom: number

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

type: "pocket"
force: optional boolean

Whether to force the constraint

ContactConstraintResponse object { max_distance_angstrom, token1, token2, 2 more }

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

max_distance_angstrom: number

Maximum distance in Angstroms

token1: object { chain_id, residue_index, type } or object { atom_name, chain_id, type }

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

One of the following:
PolymerContactTokenResponse object { chain_id, residue_index, type }
chain_id: string

Chain ID

residue_index: number

0-based residue index

minimum0
type: "polymer_contact"
LigandContactTokenResponse object { atom_name, chain_id, type }

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

atom_name: string

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

chain_id: string

Chain ID

type: "ligand_contact"
token2: object { chain_id, residue_index, type } or object { atom_name, chain_id, type }

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

One of the following:
PolymerContactTokenResponse object { chain_id, residue_index, type }
chain_id: string

Chain ID

residue_index: number

0-based residue index

minimum0
type: "polymer_contact"
LigandContactTokenResponse object { atom_name, chain_id, type }

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

atom_name: string

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

chain_id: string

Chain ID

type: "ligand_contact"
type: "contact"
force: optional boolean

Whether to force the constraint

pocket_residues: optional map[array of number]

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.

reference_ligands: optional array of string

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.

type: optional "no_template"

Target is defined directly by protein sequences rather than a structure template.

chemical_space: optional "enamine_real"

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

idempotency_key: optional string

Client-provided key to prevent duplicate submissions on retries

maxLength255
molecule_filters: optional object { boltz_smarts_catalog_filter_level, custom_filters }

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

boltz_smarts_catalog_filter_level: optional "recommended" or "extra" or "aggressive" or "disabled"

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.

One of the following:
"recommended"
"extra"
"aggressive"
"disabled"
custom_filters: optional array of object { max_hba, max_hbd, max_logp, 3 more } or object { type, fraction_csp3, mol_logp, 8 more } or object { patterns, type } or 2 more

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

One of the following:
LipinskiFilterResponse object { max_hba, max_hbd, max_logp, 3 more }

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.

max_hba: number

Maximum number of hydrogen bond acceptors. Lipinski threshold: 10

max_hbd: number

Maximum number of hydrogen bond donors. Lipinski threshold: 5

max_logp: number

Maximum LogP. Lipinski threshold: 5

max_mw: number

Maximum molecular weight (Da). Lipinski threshold: 500

type: "lipinski_filter"
allow_single_violation: optional boolean

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

RdkitDescriptorFilterResponse object { type, fraction_csp3, mol_logp, 8 more }

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: "rdkit_descriptor_filter"
fraction_csp3: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

mol_logp: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

mol_wt: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_aromatic_rings: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_h_acceptors: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_h_donors: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_heteroatoms: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_rings: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_rotatable_bonds: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

tpsa: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

SmartsCustomFilterResponse object { patterns, type }

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

patterns: array of string

SMARTS patterns. Molecules matching any pattern are rejected.

type: "smarts_custom_filter"
SmartsCatalogFilterResponse object { catalog, type }

Filter molecules using a predefined SMARTS catalog of structural alerts.

catalog: "PAINS" or "PAINS_A" or "PAINS_B" or 11 more

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

One of the following:
"PAINS"
"PAINS_A"
"PAINS_B"
"PAINS_C"
"BRENK"
"CHEMBL"
"CHEMBL_BMS"
"CHEMBL_Dundee"
"CHEMBL_Glaxo"
"CHEMBL_Inpharmatica"
"CHEMBL_LINT"
"CHEMBL_MLSMR"
"CHEMBL_SureChEMBL"
"NIH"
type: "smarts_catalog_filter"
SmilesRegexFilterResponse object { patterns, type }

Filter molecules by regex patterns on their SMILES representation.

patterns: array of string

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

type: "smiles_regex_filter"
workspace_id: optional string

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

livemode: boolean

Whether this resource was created with a live API key.

pipeline: "boltzmol"

Pipeline used for small molecule design

pipeline_version: "1.0"

Pipeline version used for small molecule design

progress: object { num_molecules_generated, total_molecules_to_generate, latest_result_id }
num_molecules_generated: number

Number of molecules generated so far

minimum0
total_molecules_to_generate: number

Total number of molecules requested

minimum1
latest_result_id: optional string

ID of the most recently generated result

started_at: string
formatdate-time
status: "pending" or "running" or "succeeded" or 2 more
One of the following:
"pending"
"running"
"succeeded"
"failed"
"stopped"
stopped_at: string
formatdate-time
workspace_id: string

Workspace ID

idempotency_key: optional string

Client-provided idempotency key

DesignListResponse object { id, completed_at, created_at, 13 more }

Summary of a small molecule design pipeline run (excludes input)

id: string

Unique SmDesignRunSummary identifier

completed_at: string
formatdate-time
created_at: string
formatdate-time
data_deleted_at: string

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

formatdate-time
Deprecatedengine: "boltzmol"
Use pipeline instead.

Deprecated. Use pipeline instead.

Deprecatedengine_version: "1.0"
Use pipeline_version instead.

Deprecated. Use pipeline_version instead.

error: object { code, message, details }
code: string

Machine-readable error code

message: string

Human-readable error message

details: optional unknown

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

livemode: boolean

Whether this resource was created with a live API key.

pipeline: "boltzmol"

Pipeline used for small molecule design

pipeline_version: "1.0"

Pipeline version used for small molecule design

progress: object { num_molecules_generated, total_molecules_to_generate, latest_result_id }
num_molecules_generated: number

Number of molecules generated so far

minimum0
total_molecules_to_generate: number

Total number of molecules requested

minimum1
latest_result_id: optional string

ID of the most recently generated result

started_at: string
formatdate-time
status: "pending" or "running" or "succeeded" or 2 more
One of the following:
"pending"
"running"
"succeeded"
"failed"
"stopped"
stopped_at: string
formatdate-time
workspace_id: string

Workspace ID

idempotency_key: optional string

Client-provided idempotency key

DesignRetrieveResponse object { id, completed_at, created_at, 14 more }

A small molecule design pipeline run that generates novel molecules

id: string

Unique SmDesignRun identifier

completed_at: string
formatdate-time
created_at: string
formatdate-time
data_deleted_at: string

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

formatdate-time
Deprecatedengine: "boltzmol"
Use pipeline instead.

Deprecated. Use pipeline instead.

Deprecatedengine_version: "1.0"
Use pipeline_version instead.

Deprecated. Use pipeline_version instead.

error: object { code, message, details }
code: string

Machine-readable error code

message: string

Human-readable error message

details: optional unknown

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

input: object { num_molecules, target, chemical_space, 3 more }

Pipeline input (null if data deleted)

num_molecules: number

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

minimum10
maximum1000000
target: object { entities, bonds, constraints, 3 more }

Target protein sequences for small molecule design or screening.

entities: array of object { chain_ids, type, value, 2 more }

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

chain_ids: array of string

Chain IDs for this entity

type: "protein"
value: string

Amino acid sequence (one-letter codes)

cyclic: optional boolean

Whether the sequence is cyclic

modifications: optional array of object { residue_index, type, value }

CCD post-translational modifications. Optional; defaults to an empty list when omitted. SMILES modifications are not supported.

residue_index: number

0-based index of the residue to modify

minimum0
type: "ccd"

Modification format. Only CCD polymer modifications are supported.

value: string

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

bonds: optional array of object { atom1, atom2 }

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

atom1: object { atom_name, chain_id, type } or object { atom_name, chain_id, residue_index, type }

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

One of the following:
LigandAtomResponse object { atom_name, chain_id, type }

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

atom_name: string

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

chain_id: string

Chain ID containing the atom

type: "ligand_atom"
PolymerAtomResponse object { atom_name, chain_id, residue_index, type }
atom_name: string

Standardized atom name (verifiable in CIF file on RCSB)

chain_id: string

Chain ID containing the atom

residue_index: number

0-based residue index

minimum0
type: "polymer_atom"
atom2: object { atom_name, chain_id, type } or object { atom_name, chain_id, residue_index, type }

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

One of the following:
LigandAtomResponse object { atom_name, chain_id, type }

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

atom_name: string

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

chain_id: string

Chain ID containing the atom

type: "ligand_atom"
PolymerAtomResponse object { atom_name, chain_id, residue_index, type }
atom_name: string

Standardized atom name (verifiable in CIF file on RCSB)

chain_id: string

Chain ID containing the atom

residue_index: number

0-based residue index

minimum0
type: "polymer_atom"
constraints: optional array of object { binder_chain_id, contact_residues, max_distance_angstrom, 2 more } or object { max_distance_angstrom, token1, token2, 2 more }

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

One of the following:
PocketConstraintResponse object { binder_chain_id, contact_residues, max_distance_angstrom, 2 more }

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

binder_chain_id: string

Chain ID of the binder molecule

contact_residues: map[array of number]

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.

max_distance_angstrom: number

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

type: "pocket"
force: optional boolean

Whether to force the constraint

ContactConstraintResponse object { max_distance_angstrom, token1, token2, 2 more }

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

max_distance_angstrom: number

Maximum distance in Angstroms

token1: object { chain_id, residue_index, type } or object { atom_name, chain_id, type }

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

One of the following:
PolymerContactTokenResponse object { chain_id, residue_index, type }
chain_id: string

Chain ID

residue_index: number

0-based residue index

minimum0
type: "polymer_contact"
LigandContactTokenResponse object { atom_name, chain_id, type }

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

atom_name: string

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

chain_id: string

Chain ID

type: "ligand_contact"
token2: object { chain_id, residue_index, type } or object { atom_name, chain_id, type }

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

One of the following:
PolymerContactTokenResponse object { chain_id, residue_index, type }
chain_id: string

Chain ID

residue_index: number

0-based residue index

minimum0
type: "polymer_contact"
LigandContactTokenResponse object { atom_name, chain_id, type }

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

atom_name: string

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

chain_id: string

Chain ID

type: "ligand_contact"
type: "contact"
force: optional boolean

Whether to force the constraint

pocket_residues: optional map[array of number]

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.

reference_ligands: optional array of string

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.

type: optional "no_template"

Target is defined directly by protein sequences rather than a structure template.

chemical_space: optional "enamine_real"

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

idempotency_key: optional string

Client-provided key to prevent duplicate submissions on retries

maxLength255
molecule_filters: optional object { boltz_smarts_catalog_filter_level, custom_filters }

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

boltz_smarts_catalog_filter_level: optional "recommended" or "extra" or "aggressive" or "disabled"

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.

One of the following:
"recommended"
"extra"
"aggressive"
"disabled"
custom_filters: optional array of object { max_hba, max_hbd, max_logp, 3 more } or object { type, fraction_csp3, mol_logp, 8 more } or object { patterns, type } or 2 more

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

One of the following:
LipinskiFilterResponse object { max_hba, max_hbd, max_logp, 3 more }

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.

max_hba: number

Maximum number of hydrogen bond acceptors. Lipinski threshold: 10

max_hbd: number

Maximum number of hydrogen bond donors. Lipinski threshold: 5

max_logp: number

Maximum LogP. Lipinski threshold: 5

max_mw: number

Maximum molecular weight (Da). Lipinski threshold: 500

type: "lipinski_filter"
allow_single_violation: optional boolean

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

RdkitDescriptorFilterResponse object { type, fraction_csp3, mol_logp, 8 more }

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: "rdkit_descriptor_filter"
fraction_csp3: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

mol_logp: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

mol_wt: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_aromatic_rings: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_h_acceptors: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_h_donors: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_heteroatoms: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_rings: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_rotatable_bonds: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

tpsa: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

SmartsCustomFilterResponse object { patterns, type }

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

patterns: array of string

SMARTS patterns. Molecules matching any pattern are rejected.

type: "smarts_custom_filter"
SmartsCatalogFilterResponse object { catalog, type }

Filter molecules using a predefined SMARTS catalog of structural alerts.

catalog: "PAINS" or "PAINS_A" or "PAINS_B" or 11 more

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

One of the following:
"PAINS"
"PAINS_A"
"PAINS_B"
"PAINS_C"
"BRENK"
"CHEMBL"
"CHEMBL_BMS"
"CHEMBL_Dundee"
"CHEMBL_Glaxo"
"CHEMBL_Inpharmatica"
"CHEMBL_LINT"
"CHEMBL_MLSMR"
"CHEMBL_SureChEMBL"
"NIH"
type: "smarts_catalog_filter"
SmilesRegexFilterResponse object { patterns, type }

Filter molecules by regex patterns on their SMILES representation.

patterns: array of string

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

type: "smiles_regex_filter"
workspace_id: optional string

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

livemode: boolean

Whether this resource was created with a live API key.

pipeline: "boltzmol"

Pipeline used for small molecule design

pipeline_version: "1.0"

Pipeline version used for small molecule design

progress: object { num_molecules_generated, total_molecules_to_generate, latest_result_id }
num_molecules_generated: number

Number of molecules generated so far

minimum0
total_molecules_to_generate: number

Total number of molecules requested

minimum1
latest_result_id: optional string

ID of the most recently generated result

started_at: string
formatdate-time
status: "pending" or "running" or "succeeded" or 2 more
One of the following:
"pending"
"running"
"succeeded"
"failed"
"stopped"
stopped_at: string
formatdate-time
workspace_id: string

Workspace ID

idempotency_key: optional string

Client-provided idempotency key

DesignListResultsResponse object { id, artifacts, created_at, 4 more }

A single designed small molecule result

id: string

Unique result ID

artifacts: object { archive, structure, ligand_structure }
archive: object { url, url_expires_at }
url: string

URL to download the file

formaturi
url_expires_at: string

When the presigned URL expires

formatdate-time
structure: object { url, url_expires_at }
url: string

URL to download the file

formaturi
url_expires_at: string

When the presigned URL expires

formatdate-time
ligand_structure: optional object { url, url_expires_at }
url: string

URL to download the file

formaturi
url_expires_at: string

When the presigned URL expires

formatdate-time
created_at: string
formatdate-time
metrics: object { binding_confidence, complex_iplddt, complex_plddt, 4 more }

Scoring metrics for a designed small molecule

binding_confidence: number

Confidence that the molecule binds the target (0-1). Primary metric for hit discovery.

complex_iplddt: number

Interface pLDDT for the complex (0-1 float). Confidence at the binding interface.

complex_plddt: number

pLDDT for the full complex (0-1 float).

iptm: number

Interface predicted TM score (0-1). Confidence in relative positioning of ligand and protein.

optimization_score: number

Binding strength ranking score for lead optimization. Higher values indicate stronger predicted binding.

ptm: number

Predicted TM score (0-1). Global structure quality metric.

structure_confidence: number

Confidence in the predicted 3D structure (0-1).

smiles: string

SMILES string of the designed molecule

adme: optional object { lipophilicity, permeability, solubility }

Tier 1 ADME summary values for this molecule.

lipophilicity: number

Lipophilicity score from the internal LogD prediction.

permeability: number

Permeability score for this molecule.

solubility: "high-confidence" or "medium-confidence" or "high-risk"

Solubility judgement for this molecule.

One of the following:
"high-confidence"
"medium-confidence"
"high-risk"
warnings: optional array of object { code, message }

Warnings about potential quality issues with this result.

code: string

Machine-readable warning code (e.g. “low_confidence”, “unusual_geometry”)

message: string

Human-readable description of the warning

DesignStopResponse object { id, completed_at, created_at, 14 more }

A small molecule design pipeline run that generates novel molecules

id: string

Unique SmDesignRun identifier

completed_at: string
formatdate-time
created_at: string
formatdate-time
data_deleted_at: string

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

formatdate-time
Deprecatedengine: "boltzmol"
Use pipeline instead.

Deprecated. Use pipeline instead.

Deprecatedengine_version: "1.0"
Use pipeline_version instead.

Deprecated. Use pipeline_version instead.

error: object { code, message, details }
code: string

Machine-readable error code

message: string

Human-readable error message

details: optional unknown

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

input: object { num_molecules, target, chemical_space, 3 more }

Pipeline input (null if data deleted)

num_molecules: number

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

minimum10
maximum1000000
target: object { entities, bonds, constraints, 3 more }

Target protein sequences for small molecule design or screening.

entities: array of object { chain_ids, type, value, 2 more }

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

chain_ids: array of string

Chain IDs for this entity

type: "protein"
value: string

Amino acid sequence (one-letter codes)

cyclic: optional boolean

Whether the sequence is cyclic

modifications: optional array of object { residue_index, type, value }

CCD post-translational modifications. Optional; defaults to an empty list when omitted. SMILES modifications are not supported.

residue_index: number

0-based index of the residue to modify

minimum0
type: "ccd"

Modification format. Only CCD polymer modifications are supported.

value: string

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

bonds: optional array of object { atom1, atom2 }

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

atom1: object { atom_name, chain_id, type } or object { atom_name, chain_id, residue_index, type }

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

One of the following:
LigandAtomResponse object { atom_name, chain_id, type }

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

atom_name: string

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

chain_id: string

Chain ID containing the atom

type: "ligand_atom"
PolymerAtomResponse object { atom_name, chain_id, residue_index, type }
atom_name: string

Standardized atom name (verifiable in CIF file on RCSB)

chain_id: string

Chain ID containing the atom

residue_index: number

0-based residue index

minimum0
type: "polymer_atom"
atom2: object { atom_name, chain_id, type } or object { atom_name, chain_id, residue_index, type }

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

One of the following:
LigandAtomResponse object { atom_name, chain_id, type }

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

atom_name: string

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

chain_id: string

Chain ID containing the atom

type: "ligand_atom"
PolymerAtomResponse object { atom_name, chain_id, residue_index, type }
atom_name: string

Standardized atom name (verifiable in CIF file on RCSB)

chain_id: string

Chain ID containing the atom

residue_index: number

0-based residue index

minimum0
type: "polymer_atom"
constraints: optional array of object { binder_chain_id, contact_residues, max_distance_angstrom, 2 more } or object { max_distance_angstrom, token1, token2, 2 more }

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

One of the following:
PocketConstraintResponse object { binder_chain_id, contact_residues, max_distance_angstrom, 2 more }

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

binder_chain_id: string

Chain ID of the binder molecule

contact_residues: map[array of number]

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.

max_distance_angstrom: number

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

type: "pocket"
force: optional boolean

Whether to force the constraint

ContactConstraintResponse object { max_distance_angstrom, token1, token2, 2 more }

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

max_distance_angstrom: number

Maximum distance in Angstroms

token1: object { chain_id, residue_index, type } or object { atom_name, chain_id, type }

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

One of the following:
PolymerContactTokenResponse object { chain_id, residue_index, type }
chain_id: string

Chain ID

residue_index: number

0-based residue index

minimum0
type: "polymer_contact"
LigandContactTokenResponse object { atom_name, chain_id, type }

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

atom_name: string

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

chain_id: string

Chain ID

type: "ligand_contact"
token2: object { chain_id, residue_index, type } or object { atom_name, chain_id, type }

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

One of the following:
PolymerContactTokenResponse object { chain_id, residue_index, type }
chain_id: string

Chain ID

residue_index: number

0-based residue index

minimum0
type: "polymer_contact"
LigandContactTokenResponse object { atom_name, chain_id, type }

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

atom_name: string

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

chain_id: string

Chain ID

type: "ligand_contact"
type: "contact"
force: optional boolean

Whether to force the constraint

pocket_residues: optional map[array of number]

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.

reference_ligands: optional array of string

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.

type: optional "no_template"

Target is defined directly by protein sequences rather than a structure template.

chemical_space: optional "enamine_real"

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

idempotency_key: optional string

Client-provided key to prevent duplicate submissions on retries

maxLength255
molecule_filters: optional object { boltz_smarts_catalog_filter_level, custom_filters }

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

boltz_smarts_catalog_filter_level: optional "recommended" or "extra" or "aggressive" or "disabled"

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.

One of the following:
"recommended"
"extra"
"aggressive"
"disabled"
custom_filters: optional array of object { max_hba, max_hbd, max_logp, 3 more } or object { type, fraction_csp3, mol_logp, 8 more } or object { patterns, type } or 2 more

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

One of the following:
LipinskiFilterResponse object { max_hba, max_hbd, max_logp, 3 more }

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.

max_hba: number

Maximum number of hydrogen bond acceptors. Lipinski threshold: 10

max_hbd: number

Maximum number of hydrogen bond donors. Lipinski threshold: 5

max_logp: number

Maximum LogP. Lipinski threshold: 5

max_mw: number

Maximum molecular weight (Da). Lipinski threshold: 500

type: "lipinski_filter"
allow_single_violation: optional boolean

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

RdkitDescriptorFilterResponse object { type, fraction_csp3, mol_logp, 8 more }

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: "rdkit_descriptor_filter"
fraction_csp3: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

mol_logp: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

mol_wt: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_aromatic_rings: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_h_acceptors: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_h_donors: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_heteroatoms: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_rings: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_rotatable_bonds: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

tpsa: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

SmartsCustomFilterResponse object { patterns, type }

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

patterns: array of string

SMARTS patterns. Molecules matching any pattern are rejected.

type: "smarts_custom_filter"
SmartsCatalogFilterResponse object { catalog, type }

Filter molecules using a predefined SMARTS catalog of structural alerts.

catalog: "PAINS" or "PAINS_A" or "PAINS_B" or 11 more

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

One of the following:
"PAINS"
"PAINS_A"
"PAINS_B"
"PAINS_C"
"BRENK"
"CHEMBL"
"CHEMBL_BMS"
"CHEMBL_Dundee"
"CHEMBL_Glaxo"
"CHEMBL_Inpharmatica"
"CHEMBL_LINT"
"CHEMBL_MLSMR"
"CHEMBL_SureChEMBL"
"NIH"
type: "smarts_catalog_filter"
SmilesRegexFilterResponse object { patterns, type }

Filter molecules by regex patterns on their SMILES representation.

patterns: array of string

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

type: "smiles_regex_filter"
workspace_id: optional string

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

livemode: boolean

Whether this resource was created with a live API key.

pipeline: "boltzmol"

Pipeline used for small molecule design

pipeline_version: "1.0"

Pipeline version used for small molecule design

progress: object { num_molecules_generated, total_molecules_to_generate, latest_result_id }
num_molecules_generated: number

Number of molecules generated so far

minimum0
total_molecules_to_generate: number

Total number of molecules requested

minimum1
latest_result_id: optional string

ID of the most recently generated result

started_at: string
formatdate-time
status: "pending" or "running" or "succeeded" or 2 more
One of the following:
"pending"
"running"
"succeeded"
"failed"
"stopped"
stopped_at: string
formatdate-time
workspace_id: string

Workspace ID

idempotency_key: optional string

Client-provided idempotency key

DesignDeleteDataResponse object { id, data_deleted, data_deleted_at }
id: string

ID of the resource whose data was deleted

data_deleted: true
data_deleted_at: string

When the data was deleted

formatdate-time
DesignEstimateCostResponse object { breakdown, disclaimer, estimated_cost_usd }

Estimate response with monetary values encoded as decimal strings to preserve precision.

breakdown: object { application, cost_per_unit_usd, num_units }

Cost breakdown for the billed application.

application: "structure_and_binding" or "small_molecule_design" or "small_molecule_library_screen" or 4 more
One of the following:
"structure_and_binding"
"small_molecule_design"
"small_molecule_library_screen"
"protein_design"
"protein_redesign"
"protein_library_screen"
"adme"
cost_per_unit_usd: string

Estimated cost per displayed unit as a decimal string, rounded up to 4 decimal places. This may include token-size multipliers or generation overhead; estimated_cost_usd is the authoritative total.

num_units: number

Number of billable units in the estimate. The unit depends on the endpoint: samples for structure-and-binding, molecules for ADME, and requested proteins or molecules for design/screen endpoints.

disclaimer: string
estimated_cost_usd: string

Estimated total cost as a decimal string

Small MoleculeLibrary Screen

Screen an existing library of small molecules against a protein target. Results are scored by binding confidence (likelihood of binding, for hit discovery), optimization score (binding strength ranking, for lead optimization), and structure confidence.

Start a small molecule library screen
POST/compute/v1/small-molecule/library-screen
List small molecule library screens
GET/compute/v1/small-molecule/library-screen
Get small molecule library screen status
GET/compute/v1/small-molecule/library-screen/{id}
Get screened small molecule candidates
GET/compute/v1/small-molecule/library-screen/{id}/results
Stop a running small molecule library screen
POST/compute/v1/small-molecule/library-screen/{id}/stop
Delete small molecule library screen data
POST/compute/v1/small-molecule/library-screen/{id}/delete-data
Estimate cost for a small molecule library screen
POST/compute/v1/small-molecule/library-screen/estimate-cost
ModelsExpand Collapse
LibraryScreenStartResponse object { id, completed_at, created_at, 14 more }

A small molecule library screening pipeline run

id: string

Unique SmScreen identifier

completed_at: string
formatdate-time
created_at: string
formatdate-time
data_deleted_at: string

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

formatdate-time
Deprecatedengine: "boltzmol"
Use pipeline instead.

Deprecated. Use pipeline instead.

Deprecatedengine_version: "1.0"
Use pipeline_version instead.

Deprecated. Use pipeline_version instead.

error: object { code, message, details }
code: string

Machine-readable error code

message: string

Human-readable error message

details: optional unknown

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

input: object { molecules, target, molecule_filters }

Pipeline input (null if data deleted)

molecules: object { url, url_expires_at }
url: string

URL to download the file

formaturi
url_expires_at: string

When the presigned URL expires

formatdate-time
target: object { entities, bonds, constraints, 3 more }

Target protein sequences for small molecule design or screening.

entities: array of object { chain_ids, type, value, 2 more }

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

chain_ids: array of string

Chain IDs for this entity

type: "protein"
value: string

Amino acid sequence (one-letter codes)

cyclic: optional boolean

Whether the sequence is cyclic

modifications: optional array of object { residue_index, type, value }

CCD post-translational modifications. Optional; defaults to an empty list when omitted. SMILES modifications are not supported.

residue_index: number

0-based index of the residue to modify

minimum0
type: "ccd"

Modification format. Only CCD polymer modifications are supported.

value: string

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

bonds: optional array of object { atom1, atom2 }

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

atom1: object { atom_name, chain_id, type } or object { atom_name, chain_id, residue_index, type }

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

One of the following:
LigandAtomResponse object { atom_name, chain_id, type }

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

atom_name: string

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

chain_id: string

Chain ID containing the atom

type: "ligand_atom"
PolymerAtomResponse object { atom_name, chain_id, residue_index, type }
atom_name: string

Standardized atom name (verifiable in CIF file on RCSB)

chain_id: string

Chain ID containing the atom

residue_index: number

0-based residue index

minimum0
type: "polymer_atom"
atom2: object { atom_name, chain_id, type } or object { atom_name, chain_id, residue_index, type }

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

One of the following:
LigandAtomResponse object { atom_name, chain_id, type }

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

atom_name: string

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

chain_id: string

Chain ID containing the atom

type: "ligand_atom"
PolymerAtomResponse object { atom_name, chain_id, residue_index, type }
atom_name: string

Standardized atom name (verifiable in CIF file on RCSB)

chain_id: string

Chain ID containing the atom

residue_index: number

0-based residue index

minimum0
type: "polymer_atom"
constraints: optional array of object { binder_chain_id, contact_residues, max_distance_angstrom, 2 more } or object { max_distance_angstrom, token1, token2, 2 more }

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

One of the following:
PocketConstraintResponse object { binder_chain_id, contact_residues, max_distance_angstrom, 2 more }

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

binder_chain_id: string

Chain ID of the binder molecule

contact_residues: map[array of number]

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.

max_distance_angstrom: number

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

type: "pocket"
force: optional boolean

Whether to force the constraint

ContactConstraintResponse object { max_distance_angstrom, token1, token2, 2 more }

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

max_distance_angstrom: number

Maximum distance in Angstroms

token1: object { chain_id, residue_index, type } or object { atom_name, chain_id, type }

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

One of the following:
PolymerContactTokenResponse object { chain_id, residue_index, type }
chain_id: string

Chain ID

residue_index: number

0-based residue index

minimum0
type: "polymer_contact"
LigandContactTokenResponse object { atom_name, chain_id, type }

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

atom_name: string

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

chain_id: string

Chain ID

type: "ligand_contact"
token2: object { chain_id, residue_index, type } or object { atom_name, chain_id, type }

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

One of the following:
PolymerContactTokenResponse object { chain_id, residue_index, type }
chain_id: string

Chain ID

residue_index: number

0-based residue index

minimum0
type: "polymer_contact"
LigandContactTokenResponse object { atom_name, chain_id, type }

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

atom_name: string

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

chain_id: string

Chain ID

type: "ligand_contact"
type: "contact"
force: optional boolean

Whether to force the constraint

pocket_residues: optional map[array of number]

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.

reference_ligands: optional array of string

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.

type: optional "no_template"

Target is defined directly by protein sequences rather than a structure template.

molecule_filters: optional object { boltz_smarts_catalog_filter_level, custom_filters }

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

boltz_smarts_catalog_filter_level: optional "recommended" or "extra" or "aggressive" or "disabled"

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.

One of the following:
"recommended"
"extra"
"aggressive"
"disabled"
custom_filters: optional array of object { max_hba, max_hbd, max_logp, 3 more } or object { type, fraction_csp3, mol_logp, 8 more } or object { patterns, type } or 2 more

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

One of the following:
LipinskiFilterResponse object { max_hba, max_hbd, max_logp, 3 more }

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.

max_hba: number

Maximum number of hydrogen bond acceptors. Lipinski threshold: 10

max_hbd: number

Maximum number of hydrogen bond donors. Lipinski threshold: 5

max_logp: number

Maximum LogP. Lipinski threshold: 5

max_mw: number

Maximum molecular weight (Da). Lipinski threshold: 500

type: "lipinski_filter"
allow_single_violation: optional boolean

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

RdkitDescriptorFilterResponse object { type, fraction_csp3, mol_logp, 8 more }

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: "rdkit_descriptor_filter"
fraction_csp3: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

mol_logp: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

mol_wt: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_aromatic_rings: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_h_acceptors: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_h_donors: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_heteroatoms: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_rings: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_rotatable_bonds: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

tpsa: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

SmartsCustomFilterResponse object { patterns, type }

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

patterns: array of string

SMARTS patterns. Molecules matching any pattern are rejected.

type: "smarts_custom_filter"
SmartsCatalogFilterResponse object { catalog, type }

Filter molecules using a predefined SMARTS catalog of structural alerts.

catalog: "PAINS" or "PAINS_A" or "PAINS_B" or 11 more

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

One of the following:
"PAINS"
"PAINS_A"
"PAINS_B"
"PAINS_C"
"BRENK"
"CHEMBL"
"CHEMBL_BMS"
"CHEMBL_Dundee"
"CHEMBL_Glaxo"
"CHEMBL_Inpharmatica"
"CHEMBL_LINT"
"CHEMBL_MLSMR"
"CHEMBL_SureChEMBL"
"NIH"
type: "smarts_catalog_filter"
SmilesRegexFilterResponse object { patterns, type }

Filter molecules by regex patterns on their SMILES representation.

patterns: array of string

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

type: "smiles_regex_filter"
livemode: boolean

Whether this resource was created with a live API key.

pipeline: "boltzmol"

Pipeline used for small molecule library screen

pipeline_version: "1.0"

Pipeline version used for small molecule library screen

progress: object { num_molecules_failed, num_molecules_screened, total_molecules_to_screen, 2 more }
num_molecules_failed: number

Number of accepted molecules that reached terminal failure during screening.

minimum0
num_molecules_screened: number

Number of accepted molecules that produced usable screening results.

minimum0
total_molecules_to_screen: number

Total number of molecules accepted into screening after server-side validation and filtering.

minimum0
latest_result_id: optional string

ID of the most recently screened result

rejection_summary: optional object { filtered_count, invalid_count }
filtered_count: number

Number of submitted molecules removed by server-side filtering rules.

minimum0
invalid_count: number

Number of submitted molecules rejected as invalid input.

minimum0
started_at: string
formatdate-time
status: "pending" or "running" or "succeeded" or 2 more
One of the following:
"pending"
"running"
"succeeded"
"failed"
"stopped"
stopped_at: string
formatdate-time
workspace_id: string

Workspace ID

idempotency_key: optional string

Client-provided idempotency key

LibraryScreenListResponse object { id, completed_at, created_at, 13 more }

Summary of a small molecule library screening pipeline run (excludes input)

id: string

Unique SmScreenSummary identifier

completed_at: string
formatdate-time
created_at: string
formatdate-time
data_deleted_at: string

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

formatdate-time
Deprecatedengine: "boltzmol"
Use pipeline instead.

Deprecated. Use pipeline instead.

Deprecatedengine_version: "1.0"
Use pipeline_version instead.

Deprecated. Use pipeline_version instead.

error: object { code, message, details }
code: string

Machine-readable error code

message: string

Human-readable error message

details: optional unknown

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

livemode: boolean

Whether this resource was created with a live API key.

pipeline: "boltzmol"

Pipeline used for small molecule library screen

pipeline_version: "1.0"

Pipeline version used for small molecule library screen

progress: object { num_molecules_failed, num_molecules_screened, total_molecules_to_screen, 2 more }
num_molecules_failed: number

Number of accepted molecules that reached terminal failure during screening.

minimum0
num_molecules_screened: number

Number of accepted molecules that produced usable screening results.

minimum0
total_molecules_to_screen: number

Total number of molecules accepted into screening after server-side validation and filtering.

minimum0
latest_result_id: optional string

ID of the most recently screened result

rejection_summary: optional object { filtered_count, invalid_count }
filtered_count: number

Number of submitted molecules removed by server-side filtering rules.

minimum0
invalid_count: number

Number of submitted molecules rejected as invalid input.

minimum0
started_at: string
formatdate-time
status: "pending" or "running" or "succeeded" or 2 more
One of the following:
"pending"
"running"
"succeeded"
"failed"
"stopped"
stopped_at: string
formatdate-time
workspace_id: string

Workspace ID

idempotency_key: optional string

Client-provided idempotency key

LibraryScreenRetrieveResponse object { id, completed_at, created_at, 14 more }

A small molecule library screening pipeline run

id: string

Unique SmScreen identifier

completed_at: string
formatdate-time
created_at: string
formatdate-time
data_deleted_at: string

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

formatdate-time
Deprecatedengine: "boltzmol"
Use pipeline instead.

Deprecated. Use pipeline instead.

Deprecatedengine_version: "1.0"
Use pipeline_version instead.

Deprecated. Use pipeline_version instead.

error: object { code, message, details }
code: string

Machine-readable error code

message: string

Human-readable error message

details: optional unknown

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

input: object { molecules, target, molecule_filters }

Pipeline input (null if data deleted)

molecules: object { url, url_expires_at }
url: string

URL to download the file

formaturi
url_expires_at: string

When the presigned URL expires

formatdate-time
target: object { entities, bonds, constraints, 3 more }

Target protein sequences for small molecule design or screening.

entities: array of object { chain_ids, type, value, 2 more }

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

chain_ids: array of string

Chain IDs for this entity

type: "protein"
value: string

Amino acid sequence (one-letter codes)

cyclic: optional boolean

Whether the sequence is cyclic

modifications: optional array of object { residue_index, type, value }

CCD post-translational modifications. Optional; defaults to an empty list when omitted. SMILES modifications are not supported.

residue_index: number

0-based index of the residue to modify

minimum0
type: "ccd"

Modification format. Only CCD polymer modifications are supported.

value: string

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

bonds: optional array of object { atom1, atom2 }

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

atom1: object { atom_name, chain_id, type } or object { atom_name, chain_id, residue_index, type }

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

One of the following:
LigandAtomResponse object { atom_name, chain_id, type }

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

atom_name: string

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

chain_id: string

Chain ID containing the atom

type: "ligand_atom"
PolymerAtomResponse object { atom_name, chain_id, residue_index, type }
atom_name: string

Standardized atom name (verifiable in CIF file on RCSB)

chain_id: string

Chain ID containing the atom

residue_index: number

0-based residue index

minimum0
type: "polymer_atom"
atom2: object { atom_name, chain_id, type } or object { atom_name, chain_id, residue_index, type }

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

One of the following:
LigandAtomResponse object { atom_name, chain_id, type }

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

atom_name: string

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

chain_id: string

Chain ID containing the atom

type: "ligand_atom"
PolymerAtomResponse object { atom_name, chain_id, residue_index, type }
atom_name: string

Standardized atom name (verifiable in CIF file on RCSB)

chain_id: string

Chain ID containing the atom

residue_index: number

0-based residue index

minimum0
type: "polymer_atom"
constraints: optional array of object { binder_chain_id, contact_residues, max_distance_angstrom, 2 more } or object { max_distance_angstrom, token1, token2, 2 more }

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

One of the following:
PocketConstraintResponse object { binder_chain_id, contact_residues, max_distance_angstrom, 2 more }

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

binder_chain_id: string

Chain ID of the binder molecule

contact_residues: map[array of number]

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.

max_distance_angstrom: number

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

type: "pocket"
force: optional boolean

Whether to force the constraint

ContactConstraintResponse object { max_distance_angstrom, token1, token2, 2 more }

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

max_distance_angstrom: number

Maximum distance in Angstroms

token1: object { chain_id, residue_index, type } or object { atom_name, chain_id, type }

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

One of the following:
PolymerContactTokenResponse object { chain_id, residue_index, type }
chain_id: string

Chain ID

residue_index: number

0-based residue index

minimum0
type: "polymer_contact"
LigandContactTokenResponse object { atom_name, chain_id, type }

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

atom_name: string

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

chain_id: string

Chain ID

type: "ligand_contact"
token2: object { chain_id, residue_index, type } or object { atom_name, chain_id, type }

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

One of the following:
PolymerContactTokenResponse object { chain_id, residue_index, type }
chain_id: string

Chain ID

residue_index: number

0-based residue index

minimum0
type: "polymer_contact"
LigandContactTokenResponse object { atom_name, chain_id, type }

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

atom_name: string

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

chain_id: string

Chain ID

type: "ligand_contact"
type: "contact"
force: optional boolean

Whether to force the constraint

pocket_residues: optional map[array of number]

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.

reference_ligands: optional array of string

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.

type: optional "no_template"

Target is defined directly by protein sequences rather than a structure template.

molecule_filters: optional object { boltz_smarts_catalog_filter_level, custom_filters }

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

boltz_smarts_catalog_filter_level: optional "recommended" or "extra" or "aggressive" or "disabled"

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.

One of the following:
"recommended"
"extra"
"aggressive"
"disabled"
custom_filters: optional array of object { max_hba, max_hbd, max_logp, 3 more } or object { type, fraction_csp3, mol_logp, 8 more } or object { patterns, type } or 2 more

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

One of the following:
LipinskiFilterResponse object { max_hba, max_hbd, max_logp, 3 more }

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.

max_hba: number

Maximum number of hydrogen bond acceptors. Lipinski threshold: 10

max_hbd: number

Maximum number of hydrogen bond donors. Lipinski threshold: 5

max_logp: number

Maximum LogP. Lipinski threshold: 5

max_mw: number

Maximum molecular weight (Da). Lipinski threshold: 500

type: "lipinski_filter"
allow_single_violation: optional boolean

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

RdkitDescriptorFilterResponse object { type, fraction_csp3, mol_logp, 8 more }

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: "rdkit_descriptor_filter"
fraction_csp3: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

mol_logp: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

mol_wt: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_aromatic_rings: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_h_acceptors: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_h_donors: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_heteroatoms: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_rings: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_rotatable_bonds: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

tpsa: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

SmartsCustomFilterResponse object { patterns, type }

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

patterns: array of string

SMARTS patterns. Molecules matching any pattern are rejected.

type: "smarts_custom_filter"
SmartsCatalogFilterResponse object { catalog, type }

Filter molecules using a predefined SMARTS catalog of structural alerts.

catalog: "PAINS" or "PAINS_A" or "PAINS_B" or 11 more

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

One of the following:
"PAINS"
"PAINS_A"
"PAINS_B"
"PAINS_C"
"BRENK"
"CHEMBL"
"CHEMBL_BMS"
"CHEMBL_Dundee"
"CHEMBL_Glaxo"
"CHEMBL_Inpharmatica"
"CHEMBL_LINT"
"CHEMBL_MLSMR"
"CHEMBL_SureChEMBL"
"NIH"
type: "smarts_catalog_filter"
SmilesRegexFilterResponse object { patterns, type }

Filter molecules by regex patterns on their SMILES representation.

patterns: array of string

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

type: "smiles_regex_filter"
livemode: boolean

Whether this resource was created with a live API key.

pipeline: "boltzmol"

Pipeline used for small molecule library screen

pipeline_version: "1.0"

Pipeline version used for small molecule library screen

progress: object { num_molecules_failed, num_molecules_screened, total_molecules_to_screen, 2 more }
num_molecules_failed: number

Number of accepted molecules that reached terminal failure during screening.

minimum0
num_molecules_screened: number

Number of accepted molecules that produced usable screening results.

minimum0
total_molecules_to_screen: number

Total number of molecules accepted into screening after server-side validation and filtering.

minimum0
latest_result_id: optional string

ID of the most recently screened result

rejection_summary: optional object { filtered_count, invalid_count }
filtered_count: number

Number of submitted molecules removed by server-side filtering rules.

minimum0
invalid_count: number

Number of submitted molecules rejected as invalid input.

minimum0
started_at: string
formatdate-time
status: "pending" or "running" or "succeeded" or 2 more
One of the following:
"pending"
"running"
"succeeded"
"failed"
"stopped"
stopped_at: string
formatdate-time
workspace_id: string

Workspace ID

idempotency_key: optional string

Client-provided idempotency key

LibraryScreenListResultsResponse object { id, artifacts, created_at, 5 more }

Result for a single screened small molecule

id: string

Unique result ID

artifacts: object { archive, structure, ligand_structure }
archive: object { url, url_expires_at }
url: string

URL to download the file

formaturi
url_expires_at: string

When the presigned URL expires

formatdate-time
structure: object { url, url_expires_at }
url: string

URL to download the file

formaturi
url_expires_at: string

When the presigned URL expires

formatdate-time
ligand_structure: optional object { url, url_expires_at }
url: string

URL to download the file

formaturi
url_expires_at: string

When the presigned URL expires

formatdate-time
created_at: string
formatdate-time
metrics: object { binding_confidence, complex_iplddt, complex_plddt, 4 more }

Scoring metrics for a screened small molecule

binding_confidence: number

Confidence that the molecule binds the target (0-1). Primary metric for hit discovery.

complex_iplddt: number

Interface pLDDT for the complex (0-1 float). Confidence at the binding interface.

complex_plddt: number

pLDDT for the full complex (0-1 float).

iptm: number

Interface predicted TM score (0-1). Confidence in relative positioning of ligand and protein.

optimization_score: number

Binding strength ranking score for lead optimization. Higher values indicate stronger predicted binding.

ptm: number

Predicted TM score (0-1). Global structure quality metric.

structure_confidence: number

Confidence in the predicted 3D structure (0-1).

smiles: string

SMILES string of the screened molecule

adme: optional object { lipophilicity, permeability, solubility }

Tier 1 ADME summary values for this molecule.

lipophilicity: number

Lipophilicity score from the internal LogD prediction.

permeability: number

Permeability score for this molecule.

solubility: "high-confidence" or "medium-confidence" or "high-risk"

Solubility judgement for this molecule.

One of the following:
"high-confidence"
"medium-confidence"
"high-risk"
external_id: optional string

Client-provided identifier for this molecule, if provided

warnings: optional array of object { code, message }

Warnings about potential quality issues with this result.

code: string

Machine-readable warning code (e.g. “low_confidence”, “unusual_geometry”)

message: string

Human-readable description of the warning

LibraryScreenStopResponse object { id, completed_at, created_at, 14 more }

A small molecule library screening pipeline run

id: string

Unique SmScreen identifier

completed_at: string
formatdate-time
created_at: string
formatdate-time
data_deleted_at: string

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

formatdate-time
Deprecatedengine: "boltzmol"
Use pipeline instead.

Deprecated. Use pipeline instead.

Deprecatedengine_version: "1.0"
Use pipeline_version instead.

Deprecated. Use pipeline_version instead.

error: object { code, message, details }
code: string

Machine-readable error code

message: string

Human-readable error message

details: optional unknown

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

input: object { molecules, target, molecule_filters }

Pipeline input (null if data deleted)

molecules: object { url, url_expires_at }
url: string

URL to download the file

formaturi
url_expires_at: string

When the presigned URL expires

formatdate-time
target: object { entities, bonds, constraints, 3 more }

Target protein sequences for small molecule design or screening.

entities: array of object { chain_ids, type, value, 2 more }

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

chain_ids: array of string

Chain IDs for this entity

type: "protein"
value: string

Amino acid sequence (one-letter codes)

cyclic: optional boolean

Whether the sequence is cyclic

modifications: optional array of object { residue_index, type, value }

CCD post-translational modifications. Optional; defaults to an empty list when omitted. SMILES modifications are not supported.

residue_index: number

0-based index of the residue to modify

minimum0
type: "ccd"

Modification format. Only CCD polymer modifications are supported.

value: string

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

bonds: optional array of object { atom1, atom2 }

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

atom1: object { atom_name, chain_id, type } or object { atom_name, chain_id, residue_index, type }

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

One of the following:
LigandAtomResponse object { atom_name, chain_id, type }

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

atom_name: string

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

chain_id: string

Chain ID containing the atom

type: "ligand_atom"
PolymerAtomResponse object { atom_name, chain_id, residue_index, type }
atom_name: string

Standardized atom name (verifiable in CIF file on RCSB)

chain_id: string

Chain ID containing the atom

residue_index: number

0-based residue index

minimum0
type: "polymer_atom"
atom2: object { atom_name, chain_id, type } or object { atom_name, chain_id, residue_index, type }

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

One of the following:
LigandAtomResponse object { atom_name, chain_id, type }

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

atom_name: string

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

chain_id: string

Chain ID containing the atom

type: "ligand_atom"
PolymerAtomResponse object { atom_name, chain_id, residue_index, type }
atom_name: string

Standardized atom name (verifiable in CIF file on RCSB)

chain_id: string

Chain ID containing the atom

residue_index: number

0-based residue index

minimum0
type: "polymer_atom"
constraints: optional array of object { binder_chain_id, contact_residues, max_distance_angstrom, 2 more } or object { max_distance_angstrom, token1, token2, 2 more }

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

One of the following:
PocketConstraintResponse object { binder_chain_id, contact_residues, max_distance_angstrom, 2 more }

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

binder_chain_id: string

Chain ID of the binder molecule

contact_residues: map[array of number]

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.

max_distance_angstrom: number

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

type: "pocket"
force: optional boolean

Whether to force the constraint

ContactConstraintResponse object { max_distance_angstrom, token1, token2, 2 more }

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

max_distance_angstrom: number

Maximum distance in Angstroms

token1: object { chain_id, residue_index, type } or object { atom_name, chain_id, type }

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

One of the following:
PolymerContactTokenResponse object { chain_id, residue_index, type }
chain_id: string

Chain ID

residue_index: number

0-based residue index

minimum0
type: "polymer_contact"
LigandContactTokenResponse object { atom_name, chain_id, type }

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

atom_name: string

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

chain_id: string

Chain ID

type: "ligand_contact"
token2: object { chain_id, residue_index, type } or object { atom_name, chain_id, type }

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

One of the following:
PolymerContactTokenResponse object { chain_id, residue_index, type }
chain_id: string

Chain ID

residue_index: number

0-based residue index

minimum0
type: "polymer_contact"
LigandContactTokenResponse object { atom_name, chain_id, type }

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

atom_name: string

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

chain_id: string

Chain ID

type: "ligand_contact"
type: "contact"
force: optional boolean

Whether to force the constraint

pocket_residues: optional map[array of number]

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.

reference_ligands: optional array of string

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.

type: optional "no_template"

Target is defined directly by protein sequences rather than a structure template.

molecule_filters: optional object { boltz_smarts_catalog_filter_level, custom_filters }

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

boltz_smarts_catalog_filter_level: optional "recommended" or "extra" or "aggressive" or "disabled"

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.

One of the following:
"recommended"
"extra"
"aggressive"
"disabled"
custom_filters: optional array of object { max_hba, max_hbd, max_logp, 3 more } or object { type, fraction_csp3, mol_logp, 8 more } or object { patterns, type } or 2 more

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

One of the following:
LipinskiFilterResponse object { max_hba, max_hbd, max_logp, 3 more }

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.

max_hba: number

Maximum number of hydrogen bond acceptors. Lipinski threshold: 10

max_hbd: number

Maximum number of hydrogen bond donors. Lipinski threshold: 5

max_logp: number

Maximum LogP. Lipinski threshold: 5

max_mw: number

Maximum molecular weight (Da). Lipinski threshold: 500

type: "lipinski_filter"
allow_single_violation: optional boolean

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

RdkitDescriptorFilterResponse object { type, fraction_csp3, mol_logp, 8 more }

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: "rdkit_descriptor_filter"
fraction_csp3: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

mol_logp: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

mol_wt: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_aromatic_rings: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_h_acceptors: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_h_donors: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_heteroatoms: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_rings: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

num_rotatable_bonds: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

tpsa: optional object { max, min }

Min/max range constraint for an RDKit molecular descriptor

max: optional number

Maximum allowed value (inclusive)

min: optional number

Minimum allowed value (inclusive)

SmartsCustomFilterResponse object { patterns, type }

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

patterns: array of string

SMARTS patterns. Molecules matching any pattern are rejected.

type: "smarts_custom_filter"
SmartsCatalogFilterResponse object { catalog, type }

Filter molecules using a predefined SMARTS catalog of structural alerts.

catalog: "PAINS" or "PAINS_A" or "PAINS_B" or 11 more

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

One of the following:
"PAINS"
"PAINS_A"
"PAINS_B"
"PAINS_C"
"BRENK"
"CHEMBL"
"CHEMBL_BMS"
"CHEMBL_Dundee"
"CHEMBL_Glaxo"
"CHEMBL_Inpharmatica"
"CHEMBL_LINT"
"CHEMBL_MLSMR"
"CHEMBL_SureChEMBL"
"NIH"
type: "smarts_catalog_filter"
SmilesRegexFilterResponse object { patterns, type }

Filter molecules by regex patterns on their SMILES representation.

patterns: array of string

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

type: "smiles_regex_filter"
livemode: boolean

Whether this resource was created with a live API key.

pipeline: "boltzmol"

Pipeline used for small molecule library screen

pipeline_version: "1.0"

Pipeline version used for small molecule library screen

progress: object { num_molecules_failed, num_molecules_screened, total_molecules_to_screen, 2 more }
num_molecules_failed: number

Number of accepted molecules that reached terminal failure during screening.

minimum0
num_molecules_screened: number

Number of accepted molecules that produced usable screening results.

minimum0
total_molecules_to_screen: number

Total number of molecules accepted into screening after server-side validation and filtering.

minimum0
latest_result_id: optional string

ID of the most recently screened result

rejection_summary: optional object { filtered_count, invalid_count }
filtered_count: number

Number of submitted molecules removed by server-side filtering rules.

minimum0
invalid_count: number

Number of submitted molecules rejected as invalid input.

minimum0
started_at: string
formatdate-time
status: "pending" or "running" or "succeeded" or 2 more
One of the following:
"pending"
"running"
"succeeded"
"failed"
"stopped"
stopped_at: string
formatdate-time
workspace_id: string

Workspace ID

idempotency_key: optional string

Client-provided idempotency key

LibraryScreenDeleteDataResponse object { id, data_deleted, data_deleted_at }
id: string

ID of the resource whose data was deleted

data_deleted: true
data_deleted_at: string

When the data was deleted

formatdate-time
LibraryScreenEstimateCostResponse object { breakdown, disclaimer, estimated_cost_usd }

Estimate response with monetary values encoded as decimal strings to preserve precision.

breakdown: object { application, cost_per_unit_usd, num_units }

Cost breakdown for the billed application.

application: "structure_and_binding" or "small_molecule_design" or "small_molecule_library_screen" or 4 more
One of the following:
"structure_and_binding"
"small_molecule_design"
"small_molecule_library_screen"
"protein_design"
"protein_redesign"
"protein_library_screen"
"adme"
cost_per_unit_usd: string

Estimated cost per displayed unit as a decimal string, rounded up to 4 decimal places. This may include token-size multipliers or generation overhead; estimated_cost_usd is the authoritative total.

num_units: number

Number of billable units in the estimate. The unit depends on the endpoint: samples for structure-and-binding, molecules for ADME, and requested proteins or molecules for design/screen endpoints.

disclaimer: string
estimated_cost_usd: string

Estimated total cost as a decimal string