Skip to content
Go to Boltz API

Predictions

Run prediction models on molecular inputs. Each application is available as its own endpoint with application-specific inputs and outputs.

PredictionsStructure And Binding

Predict 3D structure coordinates, per-residue confidence scores, and binding metrics for a molecular complex. Supports optional template-guided folding and per-protein MSA control.

Start a structure and binding prediction
client.predictions.structureAndBinding.start(StructureAndBindingStartParams { input, model, idempotency_key, workspace_id } body, RequestOptionsoptions?): StructureAndBindingStartResponse { id, completed_at, created_at, 12 more }
POST/compute/v1/predictions/structure-and-binding
List structure and binding predictions
client.predictions.structureAndBinding.list(StructureAndBindingListParams { after_id, before_id, limit, workspace_id } query?, RequestOptionsoptions?): CursorPage<StructureAndBindingListResponse { id, completed_at, created_at, 10 more } >
GET/compute/v1/predictions/structure-and-binding
Retrieve a structure and binding prediction
client.predictions.structureAndBinding.retrieve(stringid, StructureAndBindingRetrieveParams { workspace_id } query?, RequestOptionsoptions?): StructureAndBindingRetrieveResponse { id, completed_at, created_at, 12 more }
GET/compute/v1/predictions/structure-and-binding/{id}
Delete prediction data
client.predictions.structureAndBinding.deleteData(stringid, RequestOptionsoptions?): StructureAndBindingDeleteDataResponse { id, data_deleted, data_deleted_at }
POST/compute/v1/predictions/structure-and-binding/{id}/delete-data
Estimate cost for a structure and binding prediction
client.predictions.structureAndBinding.estimateCost(StructureAndBindingEstimateCostParams { input, model, idempotency_key, workspace_id } body, RequestOptionsoptions?): StructureAndBindingEstimateCostResponse { breakdown, disclaimer, estimated_cost_usd }
POST/compute/v1/predictions/structure-and-binding/estimate-cost
ModelsExpand Collapse
StructureAndBindingStartResponse { id, completed_at, created_at, 12 more }
id: string

Unique prediction identifier

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

When the input/output data was deleted, or null if still available

formatdate-time
error: Error | null

Error details when failed

code: string

Machine-readable error code

message: string

Human-readable error message

details?: unknown

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

expires_at: string | null

When this resource and its associated data will be permanently deleted. Null while still in progress.

formatdate-time
input: Input | null

Prediction input (null if data deleted)

entities: Array<Boltz2ProteinEntityResponse { chain_ids, type, value, 3 more } | RnaEntityResponse { chain_ids, type, value, 2 more } | DnaEntityResponse { chain_ids, type, value, 2 more } | 2 more>

Entities (proteins, RNA, DNA, ligands) forming the complex to predict. Order determines chain assignment.

One of the following:
Boltz2ProteinEntityResponse { chain_ids, type, value, 3 more }
chain_ids: Array<string>

Chain IDs for this entity

type: "protein"
value: string

Amino acid sequence (one-letter codes)

cyclic?: boolean

Whether the sequence is cyclic

modifications?: Array<Modification>

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)

msa?: Boltz2CustomMsaResponse { format, source, type } | Boltz2EmptyMsaResponse { type }

Optional protein MSA control. Omit msa on all protein entities to use automatic MSA generation. Use custom for user-provided A3M/CSV files, or empty for single-sequence mode. Custom MSA and automatic MSA cannot be mixed in one request.

One of the following:
Boltz2CustomMsaResponse { format, source, type }

Use a user-provided MSA for this protein entity. If any protein entity uses a custom MSA, every other protein entity must use either custom or empty MSA; automatic MSA generation cannot be mixed with custom MSAs in the same request.

format: "a3m" | "csv"

Custom MSA file format. Base64 uploads must use media_type text/x-a3m for A3M or text/csv for CSV.

One of the following:
"a3m"
"csv"
source: Source { url, url_expires_at }
url: string

URL to download the file

formaturi
url_expires_at: string

When the presigned URL expires

formatdate-time
type: "custom"
Boltz2EmptyMsaResponse { type }

Run this protein entity in single-sequence mode without an MSA. Use this for chains that should not use automatic MSA generation, including non-homologous chains in a request that also includes custom MSAs.

type: "empty"
RnaEntityResponse { chain_ids, type, value, 2 more }
chain_ids: Array<string>

Chain IDs for this entity

type: "rna"
value: string

RNA nucleotide sequence (A, C, G, U, N)

cyclic?: boolean

Whether the sequence is cyclic

modifications?: Array<Modification>

CCD chemical 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)

DnaEntityResponse { chain_ids, type, value, 2 more }
chain_ids: Array<string>

Chain IDs for this entity

type: "dna"
value: string

DNA nucleotide sequence (A, C, G, T, N)

cyclic?: boolean

Whether the sequence is cyclic

modifications?: Array<Modification>

CCD chemical 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)

LigandCcdEntityResponse { chain_ids, type, value }
chain_ids: Array<string>

Chain IDs for this ligand

type: "ligand_ccd"
value: string

CCD code (e.g., ATP, ADP)

LigandSmilesEntityResponse { chain_ids, type, value }
chain_ids: Array<string>

Chain IDs for this ligand

type: "ligand_smiles"
value: string

SMILES string representing the ligand

binding?: LigandProteinBindingResponse { binder_chain_id, type } | ProteinProteinBindingResponse { binder_chain_ids, type }
One of the following:
LigandProteinBindingResponse { binder_chain_id, type }
binder_chain_id: string

Chain ID of the ligand binder (must have exactly 1 copy, <50 atoms, and only ligands+proteins in entities)

type: "ligand_protein_binding"
ProteinProteinBindingResponse { binder_chain_ids, type }
binder_chain_ids: Array<string>

Chain IDs of the protein binders

type: "protein_protein_binding"
bonds?: Array<Bond>

Bond constraints between atoms. Atom-level ligand references currently support ligand_ccd only; ligand_smiles is unsupported.

atom1: LigandAtomResponse { atom_name, chain_id, type } | PolymerAtomResponse { 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 { 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 { 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: LigandAtomResponse { atom_name, chain_id, type } | PolymerAtomResponse { 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 { 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 { 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?: Array<PocketConstraintResponse { binder_chain_id, contact_residues, max_distance_angstrom, 2 more } | ContactConstraintResponse { 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 { 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: Record<string, Array<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?: boolean

Whether to force the constraint

ContactConstraintResponse { 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: PolymerContactTokenResponse { chain_id, residue_index, type } | LigandContactTokenResponse { 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 { chain_id, residue_index, type }
chain_id: string

Chain ID

residue_index: number

0-based residue index

minimum0
type: "polymer_contact"
LigandContactTokenResponse { 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: PolymerContactTokenResponse { chain_id, residue_index, type } | LigandContactTokenResponse { 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 { chain_id, residue_index, type }
chain_id: string

Chain ID

residue_index: number

0-based residue index

minimum0
type: "polymer_contact"
LigandContactTokenResponse { 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?: boolean

Whether to force the constraint

model_options?: ModelOptions { recycling_steps, sampling_steps, step_scale }
recycling_steps?: number

The number of recycling steps to use for prediction. Default is 3.

minimum1
sampling_steps?: number

The number of sampling steps to use for prediction. Default is 200.

minimum50
step_scale?: number

Diffusion step scale (temperature). Controls sampling diversity — higher values produce more varied structures. Default is 1.638.

minimum1.3
maximum2
num_samples?: number

Number of structure samples to generate (1-10)

minimum1
maximum10
templates?: Array<Template>

Template structure files to guide protein-chain prediction. Supports up to 4 CIF or PDB templates from HTTPS URLs or base64 uploads. Use template_chains to map request chains to template-file chains.

template_chains: Array<TemplateChain>

Request-to-template chain mappings. Each input_chain_id and template_chain_id must be unique within this template.

input_chain_id: string

Chain ID in this prediction request

template_chain_id: string

Corresponding chain ID in the template structure file

template_structure: TemplateStructure { url, url_expires_at }
url: string

URL to download the file

formaturi
url_expires_at: string

When the presigned URL expires

formatdate-time
force_threshold_angstroms?: number

Force the template reference potential with this distance threshold in angstroms. Omit to use the template without force.

minimum0
livemode: boolean

Whether this resource was created with a live API key.

model: "boltz-2.1"

Model used for prediction

output: Output | null

Prediction output when succeeded

all_sample_results: Array<AllSampleResult>

Per-sample structure results

metrics: Metrics { complex_ipde, complex_iplddt, complex_pde, 6 more }
complex_ipde: number

Complex interface predicted distance error. Lower is better.

complex_iplddt: number

Complex interface pLDDT (0-1 float). Confidence at inter-chain interfaces.

complex_pde: number

Complex predicted distance error. Lower is better.

complex_plddt: number

Complex pLDDT (0-1 float). Per-residue confidence averaged over the complex.

iptm: number

Interface predicted TM score (0-1). Confidence in domain interfaces.

ligand_iptm: number

Ligand interface pTM (0-1). Only present when ligands are included.

protein_iptm: number

Protein-protein interface pTM (0-1). Only present for multi-protein complexes.

ptm: number

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

structure_confidence: number

Overall structure confidence (0-1).

structure: Structure { 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?: LigandStructure { url, url_expires_at }
url: string

URL to download the file

formaturi
url_expires_at: string

When the presigned URL expires

formatdate-time
best_sample: BestSample { metrics, structure, ligand_structure }
metrics: Metrics { complex_ipde, complex_iplddt, complex_pde, 6 more }
complex_ipde: number

Complex interface predicted distance error. Lower is better.

complex_iplddt: number

Complex interface pLDDT (0-1 float). Confidence at inter-chain interfaces.

complex_pde: number

Complex predicted distance error. Lower is better.

complex_plddt: number

Complex pLDDT (0-1 float). Per-residue confidence averaged over the complex.

iptm: number

Interface predicted TM score (0-1). Confidence in domain interfaces.

ligand_iptm: number

Ligand interface pTM (0-1). Only present when ligands are included.

protein_iptm: number

Protein-protein interface pTM (0-1). Only present for multi-protein complexes.

ptm: number

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

structure_confidence: number

Overall structure confidence (0-1).

structure: Structure { 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?: LigandStructure { url, url_expires_at }
url: string

URL to download the file

formaturi
url_expires_at: string

When the presigned URL expires

formatdate-time
archive?: Archive { url, url_expires_at }
url: string

URL to download the file

formaturi
url_expires_at: string

When the presigned URL expires

formatdate-time
binding_metrics?: LigandProteinBindingMetrics { binding_confidence, optimization_score, type } | ProteinProteinBindingMetrics { binding_confidence, type }
One of the following:
LigandProteinBindingMetrics { binding_confidence, optimization_score, type }
binding_confidence: number

Confidence that binding occurs (0-1). Primary metric for hit discovery.

optimization_score: number

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

type: "ligand_protein_binding_metrics"
ProteinProteinBindingMetrics { binding_confidence, type }
binding_confidence: number

Confidence that binding occurs (0-1). Primary metric for hit discovery.

type: "protein_protein_binding_metrics"
started_at: string | null
formatdate-time
status: "pending" | "running" | "succeeded" | "failed"
One of the following:
"pending"
"running"
"succeeded"
"failed"
version: string

Model version used for prediction

workspace_id: string

Workspace ID

idempotency_key?: string

Client-provided idempotency key

StructureAndBindingListResponse { id, completed_at, created_at, 10 more }
id: string

Unique prediction identifier

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

When the input/output data was deleted, or null if still available

formatdate-time
error: Error | null

Error details when failed

code: string

Machine-readable error code

message: string

Human-readable error message

details?: unknown

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

expires_at: string | null

When this resource and its associated data will be permanently deleted. Null while still in progress.

formatdate-time
livemode: boolean

Whether this resource was created with a live API key.

model: "boltz-2.1"

Model used for prediction

started_at: string | null
formatdate-time
status: "pending" | "running" | "succeeded" | "failed"
One of the following:
"pending"
"running"
"succeeded"
"failed"
version: string

Model version used for prediction

workspace_id: string

Workspace ID

idempotency_key?: string

Client-provided idempotency key

StructureAndBindingRetrieveResponse { id, completed_at, created_at, 12 more }
id: string

Unique prediction identifier

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

When the input/output data was deleted, or null if still available

formatdate-time
error: Error | null

Error details when failed

code: string

Machine-readable error code

message: string

Human-readable error message

details?: unknown

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

expires_at: string | null

When this resource and its associated data will be permanently deleted. Null while still in progress.

formatdate-time
input: Input | null

Prediction input (null if data deleted)

entities: Array<Boltz2ProteinEntityResponse { chain_ids, type, value, 3 more } | RnaEntityResponse { chain_ids, type, value, 2 more } | DnaEntityResponse { chain_ids, type, value, 2 more } | 2 more>

Entities (proteins, RNA, DNA, ligands) forming the complex to predict. Order determines chain assignment.

One of the following:
Boltz2ProteinEntityResponse { chain_ids, type, value, 3 more }
chain_ids: Array<string>

Chain IDs for this entity

type: "protein"
value: string

Amino acid sequence (one-letter codes)

cyclic?: boolean

Whether the sequence is cyclic

modifications?: Array<Modification>

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)

msa?: Boltz2CustomMsaResponse { format, source, type } | Boltz2EmptyMsaResponse { type }

Optional protein MSA control. Omit msa on all protein entities to use automatic MSA generation. Use custom for user-provided A3M/CSV files, or empty for single-sequence mode. Custom MSA and automatic MSA cannot be mixed in one request.

One of the following:
Boltz2CustomMsaResponse { format, source, type }

Use a user-provided MSA for this protein entity. If any protein entity uses a custom MSA, every other protein entity must use either custom or empty MSA; automatic MSA generation cannot be mixed with custom MSAs in the same request.

format: "a3m" | "csv"

Custom MSA file format. Base64 uploads must use media_type text/x-a3m for A3M or text/csv for CSV.

One of the following:
"a3m"
"csv"
source: Source { url, url_expires_at }
url: string

URL to download the file

formaturi
url_expires_at: string

When the presigned URL expires

formatdate-time
type: "custom"
Boltz2EmptyMsaResponse { type }

Run this protein entity in single-sequence mode without an MSA. Use this for chains that should not use automatic MSA generation, including non-homologous chains in a request that also includes custom MSAs.

type: "empty"
RnaEntityResponse { chain_ids, type, value, 2 more }
chain_ids: Array<string>

Chain IDs for this entity

type: "rna"
value: string

RNA nucleotide sequence (A, C, G, U, N)

cyclic?: boolean

Whether the sequence is cyclic

modifications?: Array<Modification>

CCD chemical 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)

DnaEntityResponse { chain_ids, type, value, 2 more }
chain_ids: Array<string>

Chain IDs for this entity

type: "dna"
value: string

DNA nucleotide sequence (A, C, G, T, N)

cyclic?: boolean

Whether the sequence is cyclic

modifications?: Array<Modification>

CCD chemical 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)

LigandCcdEntityResponse { chain_ids, type, value }
chain_ids: Array<string>

Chain IDs for this ligand

type: "ligand_ccd"
value: string

CCD code (e.g., ATP, ADP)

LigandSmilesEntityResponse { chain_ids, type, value }
chain_ids: Array<string>

Chain IDs for this ligand

type: "ligand_smiles"
value: string

SMILES string representing the ligand

binding?: LigandProteinBindingResponse { binder_chain_id, type } | ProteinProteinBindingResponse { binder_chain_ids, type }
One of the following:
LigandProteinBindingResponse { binder_chain_id, type }
binder_chain_id: string

Chain ID of the ligand binder (must have exactly 1 copy, <50 atoms, and only ligands+proteins in entities)

type: "ligand_protein_binding"
ProteinProteinBindingResponse { binder_chain_ids, type }
binder_chain_ids: Array<string>

Chain IDs of the protein binders

type: "protein_protein_binding"
bonds?: Array<Bond>

Bond constraints between atoms. Atom-level ligand references currently support ligand_ccd only; ligand_smiles is unsupported.

atom1: LigandAtomResponse { atom_name, chain_id, type } | PolymerAtomResponse { 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 { 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 { 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: LigandAtomResponse { atom_name, chain_id, type } | PolymerAtomResponse { 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 { 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 { 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?: Array<PocketConstraintResponse { binder_chain_id, contact_residues, max_distance_angstrom, 2 more } | ContactConstraintResponse { 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 { 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: Record<string, Array<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?: boolean

Whether to force the constraint

ContactConstraintResponse { 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: PolymerContactTokenResponse { chain_id, residue_index, type } | LigandContactTokenResponse { 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 { chain_id, residue_index, type }
chain_id: string

Chain ID

residue_index: number

0-based residue index

minimum0
type: "polymer_contact"
LigandContactTokenResponse { 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: PolymerContactTokenResponse { chain_id, residue_index, type } | LigandContactTokenResponse { 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 { chain_id, residue_index, type }
chain_id: string

Chain ID

residue_index: number

0-based residue index

minimum0
type: "polymer_contact"
LigandContactTokenResponse { 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?: boolean

Whether to force the constraint

model_options?: ModelOptions { recycling_steps, sampling_steps, step_scale }
recycling_steps?: number

The number of recycling steps to use for prediction. Default is 3.

minimum1
sampling_steps?: number

The number of sampling steps to use for prediction. Default is 200.

minimum50
step_scale?: number

Diffusion step scale (temperature). Controls sampling diversity — higher values produce more varied structures. Default is 1.638.

minimum1.3
maximum2
num_samples?: number

Number of structure samples to generate (1-10)

minimum1
maximum10
templates?: Array<Template>

Template structure files to guide protein-chain prediction. Supports up to 4 CIF or PDB templates from HTTPS URLs or base64 uploads. Use template_chains to map request chains to template-file chains.

template_chains: Array<TemplateChain>

Request-to-template chain mappings. Each input_chain_id and template_chain_id must be unique within this template.

input_chain_id: string

Chain ID in this prediction request

template_chain_id: string

Corresponding chain ID in the template structure file

template_structure: TemplateStructure { url, url_expires_at }
url: string

URL to download the file

formaturi
url_expires_at: string

When the presigned URL expires

formatdate-time
force_threshold_angstroms?: number

Force the template reference potential with this distance threshold in angstroms. Omit to use the template without force.

minimum0
livemode: boolean

Whether this resource was created with a live API key.

model: "boltz-2.1"

Model used for prediction

output: Output | null

Prediction output when succeeded

all_sample_results: Array<AllSampleResult>

Per-sample structure results

metrics: Metrics { complex_ipde, complex_iplddt, complex_pde, 6 more }
complex_ipde: number

Complex interface predicted distance error. Lower is better.

complex_iplddt: number

Complex interface pLDDT (0-1 float). Confidence at inter-chain interfaces.

complex_pde: number

Complex predicted distance error. Lower is better.

complex_plddt: number

Complex pLDDT (0-1 float). Per-residue confidence averaged over the complex.

iptm: number

Interface predicted TM score (0-1). Confidence in domain interfaces.

ligand_iptm: number

Ligand interface pTM (0-1). Only present when ligands are included.

protein_iptm: number

Protein-protein interface pTM (0-1). Only present for multi-protein complexes.

ptm: number

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

structure_confidence: number

Overall structure confidence (0-1).

structure: Structure { 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?: LigandStructure { url, url_expires_at }
url: string

URL to download the file

formaturi
url_expires_at: string

When the presigned URL expires

formatdate-time
best_sample: BestSample { metrics, structure, ligand_structure }
metrics: Metrics { complex_ipde, complex_iplddt, complex_pde, 6 more }
complex_ipde: number

Complex interface predicted distance error. Lower is better.

complex_iplddt: number

Complex interface pLDDT (0-1 float). Confidence at inter-chain interfaces.

complex_pde: number

Complex predicted distance error. Lower is better.

complex_plddt: number

Complex pLDDT (0-1 float). Per-residue confidence averaged over the complex.

iptm: number

Interface predicted TM score (0-1). Confidence in domain interfaces.

ligand_iptm: number

Ligand interface pTM (0-1). Only present when ligands are included.

protein_iptm: number

Protein-protein interface pTM (0-1). Only present for multi-protein complexes.

ptm: number

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

structure_confidence: number

Overall structure confidence (0-1).

structure: Structure { 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?: LigandStructure { url, url_expires_at }
url: string

URL to download the file

formaturi
url_expires_at: string

When the presigned URL expires

formatdate-time
archive?: Archive { url, url_expires_at }
url: string

URL to download the file

formaturi
url_expires_at: string

When the presigned URL expires

formatdate-time
binding_metrics?: LigandProteinBindingMetrics { binding_confidence, optimization_score, type } | ProteinProteinBindingMetrics { binding_confidence, type }
One of the following:
LigandProteinBindingMetrics { binding_confidence, optimization_score, type }
binding_confidence: number

Confidence that binding occurs (0-1). Primary metric for hit discovery.

optimization_score: number

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

type: "ligand_protein_binding_metrics"
ProteinProteinBindingMetrics { binding_confidence, type }
binding_confidence: number

Confidence that binding occurs (0-1). Primary metric for hit discovery.

type: "protein_protein_binding_metrics"
started_at: string | null
formatdate-time
status: "pending" | "running" | "succeeded" | "failed"
One of the following:
"pending"
"running"
"succeeded"
"failed"
version: string

Model version used for prediction

workspace_id: string

Workspace ID

idempotency_key?: string

Client-provided idempotency key

StructureAndBindingDeleteDataResponse { 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
StructureAndBindingEstimateCostResponse { breakdown, disclaimer, estimated_cost_usd }

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

breakdown: Breakdown { application, cost_per_unit_usd, num_units }

Cost breakdown for the billed application.

application: "structure_and_binding" | "small_molecule_design" | "small_molecule_library_screen" | 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

PredictionsAdme

Predict Tier 1 ADME summary values for a batch of small molecules specified by SMILES.

Start an ADME prediction
client.predictions.adme.start(AdmeStartParams { input, model, idempotency_key, workspace_id } body, RequestOptionsoptions?): AdmeStartResponse { id, completed_at, created_at, 12 more }
POST/compute/v1/predictions/adme
List ADME predictions
client.predictions.adme.list(AdmeListParams { after_id, before_id, limit, workspace_id } query?, RequestOptionsoptions?): CursorPage<AdmeListResponse { id, completed_at, created_at, 10 more } >
GET/compute/v1/predictions/adme
Retrieve an ADME prediction
client.predictions.adme.retrieve(stringid, AdmeRetrieveParams { workspace_id } query?, RequestOptionsoptions?): AdmeRetrieveResponse { id, completed_at, created_at, 12 more }
GET/compute/v1/predictions/adme/{id}
Delete ADME prediction data
client.predictions.adme.deleteData(stringid, RequestOptionsoptions?): AdmeDeleteDataResponse { id, data_deleted, data_deleted_at }
POST/compute/v1/predictions/adme/{id}/delete-data
Estimate cost for an ADME prediction
client.predictions.adme.estimateCost(AdmeEstimateCostParams { input, model, idempotency_key, workspace_id } body, RequestOptionsoptions?): AdmeEstimateCostResponse { breakdown, disclaimer, estimated_cost_usd }
POST/compute/v1/predictions/adme/estimate-cost
ModelsExpand Collapse
AdmeStartResponse { id, completed_at, created_at, 12 more }
id: string

Unique prediction identifier

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

When the input/output data was deleted, or null if still available

formatdate-time
error: Error | null

Error details when failed

code: string

Machine-readable error code

message: string

Human-readable error message

details?: unknown

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

expires_at: string | null

When this resource and its associated data will be permanently deleted. Null while still in progress.

formatdate-time
input: Input | null

Prediction input (null if data deleted)

molecules: Array<Molecule>

Molecules to score (1-128 per request). Results are returned in the same order as this list.

smiles: string

SMILES string of the molecule to predict ADME properties for.

minLength1
id?: string

Optional client-provided identifier. Returned as external_id in the matching output item.

minLength1
maxLength128
livemode: boolean

Whether this resource was created with a live API key.

model: "adme-v1"

Model used for prediction

output: Output | null

Prediction output when succeeded

molecules: Array<AdmeMoleculeSucceeded { id, adme, error, 3 more } | AdmeMoleculeFailed { id, adme, error, 3 more } >

Per-molecule results in the same order as the request. Successful molecules carry an adme summary. Failed molecules carry status: "failed" and a non-null error.

One of the following:
AdmeMoleculeSucceeded { id, adme, error, 3 more }
id: string

Internally generated molecule identifier.

adme: Adme { 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" | "medium-confidence" | "high-risk"

Solubility judgement for this molecule.

One of the following:
"high-confidence"
"medium-confidence"
"high-risk"
error: unknown
smiles: string

Echoed SMILES from the request.

status: "succeeded"
external_id?: string

Client-provided molecule identifier, if one was supplied.

AdmeMoleculeFailed { id, adme, error, 3 more }
id: string

Internally generated molecule identifier.

adme: unknown
error: Error { code, message, details }
code: string

Machine-readable error code

message: string

Human-readable error message

details?: unknown

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

smiles: string

Echoed SMILES from the request.

status: "failed"
external_id?: string

Client-provided molecule identifier, if one was supplied.

started_at: string | null
formatdate-time
status: "pending" | "running" | "succeeded" | "failed"
One of the following:
"pending"
"running"
"succeeded"
"failed"
version: string

Model version used for prediction

workspace_id: string

Workspace ID

idempotency_key?: string

Client-provided idempotency key

AdmeListResponse { id, completed_at, created_at, 10 more }
id: string

Unique prediction identifier

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

When the input/output data was deleted, or null if still available

formatdate-time
error: Error | null

Error details when failed

code: string

Machine-readable error code

message: string

Human-readable error message

details?: unknown

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

expires_at: string | null

When this resource and its associated data will be permanently deleted. Null while still in progress.

formatdate-time
livemode: boolean

Whether this resource was created with a live API key.

model: "adme-v1"

Model used for prediction

started_at: string | null
formatdate-time
status: "pending" | "running" | "succeeded" | "failed"
One of the following:
"pending"
"running"
"succeeded"
"failed"
version: string

Model version used for prediction

workspace_id: string

Workspace ID

idempotency_key?: string

Client-provided idempotency key

AdmeRetrieveResponse { id, completed_at, created_at, 12 more }
id: string

Unique prediction identifier

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

When the input/output data was deleted, or null if still available

formatdate-time
error: Error | null

Error details when failed

code: string

Machine-readable error code

message: string

Human-readable error message

details?: unknown

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

expires_at: string | null

When this resource and its associated data will be permanently deleted. Null while still in progress.

formatdate-time
input: Input | null

Prediction input (null if data deleted)

molecules: Array<Molecule>

Molecules to score (1-128 per request). Results are returned in the same order as this list.

smiles: string

SMILES string of the molecule to predict ADME properties for.

minLength1
id?: string

Optional client-provided identifier. Returned as external_id in the matching output item.

minLength1
maxLength128
livemode: boolean

Whether this resource was created with a live API key.

model: "adme-v1"

Model used for prediction

output: Output | null

Prediction output when succeeded

molecules: Array<AdmeMoleculeSucceeded { id, adme, error, 3 more } | AdmeMoleculeFailed { id, adme, error, 3 more } >

Per-molecule results in the same order as the request. Successful molecules carry an adme summary. Failed molecules carry status: "failed" and a non-null error.

One of the following:
AdmeMoleculeSucceeded { id, adme, error, 3 more }
id: string

Internally generated molecule identifier.

adme: Adme { 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" | "medium-confidence" | "high-risk"

Solubility judgement for this molecule.

One of the following:
"high-confidence"
"medium-confidence"
"high-risk"
error: unknown
smiles: string

Echoed SMILES from the request.

status: "succeeded"
external_id?: string

Client-provided molecule identifier, if one was supplied.

AdmeMoleculeFailed { id, adme, error, 3 more }
id: string

Internally generated molecule identifier.

adme: unknown
error: Error { code, message, details }
code: string

Machine-readable error code

message: string

Human-readable error message

details?: unknown

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

smiles: string

Echoed SMILES from the request.

status: "failed"
external_id?: string

Client-provided molecule identifier, if one was supplied.

started_at: string | null
formatdate-time
status: "pending" | "running" | "succeeded" | "failed"
One of the following:
"pending"
"running"
"succeeded"
"failed"
version: string

Model version used for prediction

workspace_id: string

Workspace ID

idempotency_key?: string

Client-provided idempotency key

AdmeDeleteDataResponse { 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
AdmeEstimateCostResponse { breakdown, disclaimer, estimated_cost_usd }

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

breakdown: Breakdown { application, cost_per_unit_usd, num_units }

Cost breakdown for the billed application.

application: "structure_and_binding" | "small_molecule_design" | "small_molecule_library_screen" | 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