Skip to content
Go to Boltz API

Estimate cost for a protein design run

POST/compute/v1/protein/design/estimate-cost

Estimate the cost of a protein design run without creating any resource or consuming GPU.

Body ParametersJSONExpand Collapse
binder_specification: object { chain_selection, modality, structure, 2 more } or object { entities, modality, type, 2 more } or object { binder, type, rules } or object { binder_specifications, type }

Binder specification for protein design. Use no_template for sequence-defined binders, structure_template for uploaded binder structures, boltz_curated for Boltz-managed nanobody and antibody defaults, or uniformly_sampled_specifications to sample uniformly across multiple binder specifications.

One of the following:
StructureTemplateBinderSpec object { chain_selection, modality, structure, 2 more }

Binder specification starting from an existing 3D structure. Upload a CIF/PDB file and select which chains to include, which residues to keep, and which regions to redesign. Only chains included in chain_selection are part of the pipeline run.

chain_selection: map[object { chain_type, crop_residues, design_motifs } or object { chain_type } ]

Chains selected from the uploaded binder structure, keyed by chain ID. Only chains listed here are included in the pipeline run — any chains omitted from this mapping are ignored. Each value defines which residues to keep (crop_residues). Omit design_motifs to include the chain as fixed scaffold context.

One of the following:
StructureTemplatePolymerChainSpec object { chain_type, crop_residues, design_motifs }

Per-chain crop and design specification for a polymer chain in structure_template mode.

chain_type: "polymer"
crop_residues: array of number or "all"

0-indexed residue indices to retain from this chain, or ‘all’ to keep all residues. Residues not listed are removed before design.

One of the following:
array of number
"all"
design_motifs: optional array of object { design_length_range, end_index, start_index, type } or object { after_residue_index, design_length_range, type }

Optional motifs (replacement or insertion) defining which regions to redesign on this chain. Omit this field to include the chain as fixed scaffold context.

One of the following:
ReplacementMotif object { design_length_range, end_index, start_index, type }

Replace a contiguous region of the sequence with a designed segment. Residues from start_index to end_index (inclusive) are replaced with a new sequence of the specified length.

design_length_range: object { max, min }

Allowed sequence length range for designed regions

max: number

Maximum sequence length in residues. Must be >= min.

minimum0
min: number

Minimum sequence length in residues

minimum0
end_index: number

0-indexed end residue (inclusive)

minimum0
start_index: number

0-indexed start residue (inclusive)

minimum0
type: "replacement"
InsertionMotif object { after_residue_index, design_length_range, type }

Insert a designed segment at a specific position in the sequence.

after_residue_index: number

0-indexed position after which to insert. Use -1 to insert before the first residue.

minimum-1
design_length_range: object { max, min }

Allowed sequence length range for designed regions

max: number

Maximum sequence length in residues. Must be >= min.

minimum0
min: number

Minimum sequence length in residues

minimum0
type: "insertion"
StructureTemplateLigandChainSpec object { chain_type }

Per-chain specification for a ligand chain in structure_template mode. The full ligand is always included.

chain_type: "ligand"
modality: "peptide" or "antibody" or "nanobody" or "custom_protein"
One of the following:
"peptide"
"antibody"
"nanobody"
"custom_protein"
structure: object { type, url } or object { data, media_type, type }

How to provide a CIF structure file. URLs are auto-detected; base64 uploads must use chemical/x-cif media type.

One of the following:
URLSource object { type, url }
type: "url"
url: string
formaturi
CifBase64Source object { data, media_type, type }
data: string

Base64-encoded CIF file contents

media_type: "chemical/x-cif"

Must be chemical/x-cif for CIF files

type: "base64"
type: "structure_template"
rules: optional object { excluded_amino_acids, excluded_sequence_motifs, max_hydrophobic_fraction }

Constraints applied during sequence design

excluded_amino_acids: optional array of string

Single-letter amino acid codes to exclude from design (e.g. [‘C’, ‘P’] to exclude cysteine and proline)

excluded_sequence_motifs: optional array of string

Sequence motifs to exclude from designed regions. Designs containing any of these motifs are filtered out before scoring. Use X as a single-residue wildcard (e.g. “NGS”, “NXS”).

max_hydrophobic_fraction: optional number

Maximum allowed fraction of hydrophobic residues (I, L, V, M, F, W, Y) in designed regions. Designs exceeding this threshold are filtered out before scoring. Leave empty to disable.

minimum0
maximum1
NoTemplateBinderSpec object { entities, modality, type, 2 more }

Binder specification without a structural template. Define the binder from sequence components (fixed and designed segments) without providing a starting 3D structure.

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

Binder entities composing the design. At least one must be a designed_protein entity. Additional fixed entities (RNA, DNA, ligands) can be included as part of the complex.

One of the following:
DesignedProteinEntity object { chain_ids, type, value, 2 more }

Protein binder entity with designed and/or fixed segments.

chain_ids: array of string

Chain IDs to assign to this entity

type: "designed_protein"
value: string

Binder sequence specification. Fixed amino acids are written as literal single-letter codes. Designed regions are written as a length (fixed) or a length range (min..max). Example: “MKTAYI5..10VKSHFSRQ” means fixed MKTAYI, then 5-10 designed residues, then fixed VKSHFSRQ. “20” means 20 fully designed residues. “ACDE8GHI” means fixed ACDE, then 8 designed residues, then fixed GHI.

cyclic: optional boolean

Whether the sequence is cyclic

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

Optional CCD polymer modifications. Defaults to [] 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)

FixedProteinEntity object { chain_ids, type, value, 2 more }

A fixed protein entity whose sequence is not redesigned.

chain_ids: array of string

Chain IDs to assign to 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 }

Optional CCD polymer modifications. Defaults to [] 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)

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

Chain IDs to assign to this entity

type: "rna"
value: string

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

cyclic: optional boolean

Whether the sequence is cyclic

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

Optional CCD polymer modifications. Defaults to [] 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)

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

Chain IDs to assign to this entity

type: "dna"
value: string

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

cyclic: optional boolean

Whether the sequence is cyclic

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

Optional CCD polymer modifications. Defaults to [] 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)

FixedLigandSmilesEntity object { chain_ids, type, value }
chain_ids: array of string

Chain IDs to assign to this entity

type: "ligand_smiles"
value: string

SMILES string representing the ligand

FixedLigandCcdEntity object { chain_ids, type, value }
chain_ids: array of string

Chain IDs to assign to this entity

type: "ligand_ccd"
value: string

CCD code from RCSB PDB (e.g. ‘ATP’, ‘ADP’)

GlycanEntity object { bonds, chain_ids, residues, type }

Branched glycan represented as an explicit graph of CCD monosaccharide residues.

bonds: array of object { atom1, atom2 }

Covalent bonds connecting the glycan residues. A single-residue glycan uses an empty array.

atom1: object { atom_id, residue_id }
atom_id: string

Exact atom identifier from the residue CCD entry (_chem_comp_atom.atom_id)

minLength1
maxLength4
residue_id: string

Request-local ID of the glycan residue containing the atom

minLength1
atom2: object { atom_id, residue_id }
atom_id: string

Exact atom identifier from the residue CCD entry (_chem_comp_atom.atom_id)

minLength1
maxLength4
residue_id: string

Request-local ID of the glycan residue containing the atom

minLength1
chain_ids: array of string

Chain IDs for identical copies of this glycan

residues: array of object { id, ccd }

CCD residues in the glycan. Array order is not part of the public residue identity; bonds reference residue IDs.

id: string

Request-local residue ID used by glycan bonds and external atom references

minLength1
ccd: string

CCD code for this monosaccharide residue (for example NAG, BMA, or FUC)

minLength1
type: "glycan"
modality: "peptide" or "antibody" or "nanobody" or "custom_protein"
One of the following:
"peptide"
"antibody"
"nanobody"
"custom_protein"
type: "no_template"
bonds: optional array of object { atom1, atom2 }

Covalent bond constraints between atoms in the binder complex. If defining bonds where an atom is part of a designed protein chain, assume residue indices count designed regions as the minimum length. Example: designed protein “1..3C1..2”, “C” is residue 1 (0-indexed) of the designed protein.

atom1: object { atom_name, chain_id, residue_index, type } or object { atom_id, chain_id, residue_id, type } or object { atom_map, chain_id, type } or object { atom_name, chain_id, type }

Atom reference for a specific CCD residue in a glycan graph.

One of the following:
PolymerAtom 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"
CcdAtom object { atom_id, chain_id, residue_id, type }

Atom reference for a specific CCD residue in a glycan graph.

atom_id: string

Exact atom identifier from the residue CCD entry (_chem_comp_atom.atom_id)

minLength1
maxLength4
chain_id: string

Chain ID containing the CCD residue

residue_id: string

Request-local residue ID declared by the graph entity

minLength1
type: "ccd_atom"
SmilesAtom object { atom_map, chain_id, type }

Atom reference using an explicit numeric atom-map in the input SMILES.

atom_map: number

Numeric atom-map identifier from the input SMILES (for example 7 for [C:7])

minimum1
chain_id: string

Chain ID containing the SMILES ligand

type: "smiles_atom"
LigandAtom object { atom_name, chain_id, type }

Atom reference for a single-residue ligand_ccd or an explicitly atom-mapped SMILES ligand. Glycan bonds use ccd_atom; new SMILES bonds should use smiles_atom.

atom_name: string

Atom name. For ligand_ccd, use the standardized CIF atom name. For ligand_smiles, explicitly label the atom with numeric atom-map notation: [C:1] is referenced as C1 and [O:2] as O2. The resulting name must be unique within the molecule and at most four characters.

chain_id: string

Chain ID containing the atom

type: "ligand_atom"
atom2: object { atom_name, chain_id, residue_index, type } or object { atom_id, chain_id, residue_id, type } or object { atom_map, chain_id, type } or object { atom_name, chain_id, type }

Atom reference for a specific CCD residue in a glycan graph.

One of the following:
PolymerAtom 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"
CcdAtom object { atom_id, chain_id, residue_id, type }

Atom reference for a specific CCD residue in a glycan graph.

atom_id: string

Exact atom identifier from the residue CCD entry (_chem_comp_atom.atom_id)

minLength1
maxLength4
chain_id: string

Chain ID containing the CCD residue

residue_id: string

Request-local residue ID declared by the graph entity

minLength1
type: "ccd_atom"
SmilesAtom object { atom_map, chain_id, type }

Atom reference using an explicit numeric atom-map in the input SMILES.

atom_map: number

Numeric atom-map identifier from the input SMILES (for example 7 for [C:7])

minimum1
chain_id: string

Chain ID containing the SMILES ligand

type: "smiles_atom"
LigandAtom object { atom_name, chain_id, type }

Atom reference for a single-residue ligand_ccd or an explicitly atom-mapped SMILES ligand. Glycan bonds use ccd_atom; new SMILES bonds should use smiles_atom.

atom_name: string

Atom name. For ligand_ccd, use the standardized CIF atom name. For ligand_smiles, explicitly label the atom with numeric atom-map notation: [C:1] is referenced as C1 and [O:2] as O2. The resulting name must be unique within the molecule and at most four characters.

chain_id: string

Chain ID containing the atom

type: "ligand_atom"
rules: optional object { excluded_amino_acids, excluded_sequence_motifs, max_hydrophobic_fraction }

Constraints applied during sequence design

excluded_amino_acids: optional array of string

Single-letter amino acid codes to exclude from design (e.g. [‘C’, ‘P’] to exclude cysteine and proline)

excluded_sequence_motifs: optional array of string

Sequence motifs to exclude from designed regions. Designs containing any of these motifs are filtered out before scoring. Use X as a single-residue wildcard (e.g. “NGS”, “NXS”).

max_hydrophobic_fraction: optional number

Maximum allowed fraction of hydrophobic residues (I, L, V, M, F, W, Y) in designed regions. Designs exceeding this threshold are filtered out before scoring. Leave empty to disable.

minimum0
maximum1
BoltzCuratedBinderSpec object { binder, type, rules }

Boltz-managed curated binder specification. Choose a curated nanobody or antibody family and Boltz will select from maintained template lists during design. The curated lists are managed by Boltz and may be updated over time to improve quality and coverage.

binder: "boltz_nanobody" or "boltz_antibody"

Boltz-managed curated binder family. Boltz maintains and may update the underlying template lists on behalf of customers.

One of the following:
"boltz_nanobody"
"boltz_antibody"
type: "boltz_curated"
rules: optional object { excluded_amino_acids, excluded_sequence_motifs, max_hydrophobic_fraction }

Constraints applied during sequence design

excluded_amino_acids: optional array of string

Single-letter amino acid codes to exclude from design (e.g. [‘C’, ‘P’] to exclude cysteine and proline)

excluded_sequence_motifs: optional array of string

Sequence motifs to exclude from designed regions. Designs containing any of these motifs are filtered out before scoring. Use X as a single-residue wildcard (e.g. “NGS”, “NXS”).

max_hydrophobic_fraction: optional number

Maximum allowed fraction of hydrophobic residues (I, L, V, M, F, W, Y) in designed regions. Designs exceeding this threshold are filtered out before scoring. Leave empty to disable.

minimum0
maximum1
UniformlySampledBinderSpec object { binder_specifications, type }

A collection of binder specifications sampled uniformly during protein design. This lets one run explore multiple binder definitions while keeping each generation request shape unchanged.

binder_specifications: array of object { chain_selection, modality, structure, 2 more } or object { entities, modality, type, 2 more } or object { binder, type, rules }

Binder specifications to sample uniformly when generating designs. Each generation samples one specification from this list; over larger runs this gives roughly equal representation.

One of the following:
StructureTemplateBinderSpec object { chain_selection, modality, structure, 2 more }

Binder specification starting from an existing 3D structure. Upload a CIF/PDB file and select which chains to include, which residues to keep, and which regions to redesign. Only chains included in chain_selection are part of the pipeline run.

chain_selection: map[object { chain_type, crop_residues, design_motifs } or object { chain_type } ]

Chains selected from the uploaded binder structure, keyed by chain ID. Only chains listed here are included in the pipeline run — any chains omitted from this mapping are ignored. Each value defines which residues to keep (crop_residues). Omit design_motifs to include the chain as fixed scaffold context.

One of the following:
StructureTemplatePolymerChainSpec object { chain_type, crop_residues, design_motifs }

Per-chain crop and design specification for a polymer chain in structure_template mode.

chain_type: "polymer"
crop_residues: array of number or "all"

0-indexed residue indices to retain from this chain, or ‘all’ to keep all residues. Residues not listed are removed before design.

One of the following:
array of number
"all"
design_motifs: optional array of object { design_length_range, end_index, start_index, type } or object { after_residue_index, design_length_range, type }

Optional motifs (replacement or insertion) defining which regions to redesign on this chain. Omit this field to include the chain as fixed scaffold context.

One of the following:
ReplacementMotif object { design_length_range, end_index, start_index, type }

Replace a contiguous region of the sequence with a designed segment. Residues from start_index to end_index (inclusive) are replaced with a new sequence of the specified length.

design_length_range: object { max, min }

Allowed sequence length range for designed regions

max: number

Maximum sequence length in residues. Must be >= min.

minimum0
min: number

Minimum sequence length in residues

minimum0
end_index: number

0-indexed end residue (inclusive)

minimum0
start_index: number

0-indexed start residue (inclusive)

minimum0
type: "replacement"
InsertionMotif object { after_residue_index, design_length_range, type }

Insert a designed segment at a specific position in the sequence.

after_residue_index: number

0-indexed position after which to insert. Use -1 to insert before the first residue.

minimum-1
design_length_range: object { max, min }

Allowed sequence length range for designed regions

max: number

Maximum sequence length in residues. Must be >= min.

minimum0
min: number

Minimum sequence length in residues

minimum0
type: "insertion"
StructureTemplateLigandChainSpec object { chain_type }

Per-chain specification for a ligand chain in structure_template mode. The full ligand is always included.

chain_type: "ligand"
modality: "peptide" or "antibody" or "nanobody" or "custom_protein"
One of the following:
"peptide"
"antibody"
"nanobody"
"custom_protein"
structure: object { type, url } or object { data, media_type, type }

How to provide a CIF structure file. URLs are auto-detected; base64 uploads must use chemical/x-cif media type.

One of the following:
URLSource object { type, url }
type: "url"
url: string
formaturi
CifBase64Source object { data, media_type, type }
data: string

Base64-encoded CIF file contents

media_type: "chemical/x-cif"

Must be chemical/x-cif for CIF files

type: "base64"
type: "structure_template"
rules: optional object { excluded_amino_acids, excluded_sequence_motifs, max_hydrophobic_fraction }

Constraints applied during sequence design

excluded_amino_acids: optional array of string

Single-letter amino acid codes to exclude from design (e.g. [‘C’, ‘P’] to exclude cysteine and proline)

excluded_sequence_motifs: optional array of string

Sequence motifs to exclude from designed regions. Designs containing any of these motifs are filtered out before scoring. Use X as a single-residue wildcard (e.g. “NGS”, “NXS”).

max_hydrophobic_fraction: optional number

Maximum allowed fraction of hydrophobic residues (I, L, V, M, F, W, Y) in designed regions. Designs exceeding this threshold are filtered out before scoring. Leave empty to disable.

minimum0
maximum1
NoTemplateBinderSpec object { entities, modality, type, 2 more }

Binder specification without a structural template. Define the binder from sequence components (fixed and designed segments) without providing a starting 3D structure.

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

Binder entities composing the design. At least one must be a designed_protein entity. Additional fixed entities (RNA, DNA, ligands) can be included as part of the complex.

One of the following:
DesignedProteinEntity object { chain_ids, type, value, 2 more }

Protein binder entity with designed and/or fixed segments.

chain_ids: array of string

Chain IDs to assign to this entity

type: "designed_protein"
value: string

Binder sequence specification. Fixed amino acids are written as literal single-letter codes. Designed regions are written as a length (fixed) or a length range (min..max). Example: “MKTAYI5..10VKSHFSRQ” means fixed MKTAYI, then 5-10 designed residues, then fixed VKSHFSRQ. “20” means 20 fully designed residues. “ACDE8GHI” means fixed ACDE, then 8 designed residues, then fixed GHI.

cyclic: optional boolean

Whether the sequence is cyclic

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

Optional CCD polymer modifications. Defaults to [] 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)

FixedProteinEntity object { chain_ids, type, value, 2 more }

A fixed protein entity whose sequence is not redesigned.

chain_ids: array of string

Chain IDs to assign to 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 }

Optional CCD polymer modifications. Defaults to [] 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)

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

Chain IDs to assign to this entity

type: "rna"
value: string

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

cyclic: optional boolean

Whether the sequence is cyclic

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

Optional CCD polymer modifications. Defaults to [] 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)

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

Chain IDs to assign to this entity

type: "dna"
value: string

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

cyclic: optional boolean

Whether the sequence is cyclic

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

Optional CCD polymer modifications. Defaults to [] 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)

FixedLigandSmilesEntity object { chain_ids, type, value }
chain_ids: array of string

Chain IDs to assign to this entity

type: "ligand_smiles"
value: string

SMILES string representing the ligand

FixedLigandCcdEntity object { chain_ids, type, value }
chain_ids: array of string

Chain IDs to assign to this entity

type: "ligand_ccd"
value: string

CCD code from RCSB PDB (e.g. ‘ATP’, ‘ADP’)

GlycanEntity object { bonds, chain_ids, residues, type }

Branched glycan represented as an explicit graph of CCD monosaccharide residues.

bonds: array of object { atom1, atom2 }

Covalent bonds connecting the glycan residues. A single-residue glycan uses an empty array.

atom1: object { atom_id, residue_id }
atom_id: string

Exact atom identifier from the residue CCD entry (_chem_comp_atom.atom_id)

minLength1
maxLength4
residue_id: string

Request-local ID of the glycan residue containing the atom

minLength1
atom2: object { atom_id, residue_id }
atom_id: string

Exact atom identifier from the residue CCD entry (_chem_comp_atom.atom_id)

minLength1
maxLength4
residue_id: string

Request-local ID of the glycan residue containing the atom

minLength1
chain_ids: array of string

Chain IDs for identical copies of this glycan

residues: array of object { id, ccd }

CCD residues in the glycan. Array order is not part of the public residue identity; bonds reference residue IDs.

id: string

Request-local residue ID used by glycan bonds and external atom references

minLength1
ccd: string

CCD code for this monosaccharide residue (for example NAG, BMA, or FUC)

minLength1
type: "glycan"
modality: "peptide" or "antibody" or "nanobody" or "custom_protein"
One of the following:
"peptide"
"antibody"
"nanobody"
"custom_protein"
type: "no_template"
bonds: optional array of object { atom1, atom2 }

Covalent bond constraints between atoms in the binder complex. If defining bonds where an atom is part of a designed protein chain, assume residue indices count designed regions as the minimum length. Example: designed protein “1..3C1..2”, “C” is residue 1 (0-indexed) of the designed protein.

atom1: object { atom_name, chain_id, residue_index, type } or object { atom_id, chain_id, residue_id, type } or object { atom_map, chain_id, type } or object { atom_name, chain_id, type }

Atom reference for a specific CCD residue in a glycan graph.

One of the following:
PolymerAtom 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"
CcdAtom object { atom_id, chain_id, residue_id, type }

Atom reference for a specific CCD residue in a glycan graph.

atom_id: string

Exact atom identifier from the residue CCD entry (_chem_comp_atom.atom_id)

minLength1
maxLength4
chain_id: string

Chain ID containing the CCD residue

residue_id: string

Request-local residue ID declared by the graph entity

minLength1
type: "ccd_atom"
SmilesAtom object { atom_map, chain_id, type }

Atom reference using an explicit numeric atom-map in the input SMILES.

atom_map: number

Numeric atom-map identifier from the input SMILES (for example 7 for [C:7])

minimum1
chain_id: string

Chain ID containing the SMILES ligand

type: "smiles_atom"
LigandAtom object { atom_name, chain_id, type }

Atom reference for a single-residue ligand_ccd or an explicitly atom-mapped SMILES ligand. Glycan bonds use ccd_atom; new SMILES bonds should use smiles_atom.

atom_name: string

Atom name. For ligand_ccd, use the standardized CIF atom name. For ligand_smiles, explicitly label the atom with numeric atom-map notation: [C:1] is referenced as C1 and [O:2] as O2. The resulting name must be unique within the molecule and at most four characters.

chain_id: string

Chain ID containing the atom

type: "ligand_atom"
atom2: object { atom_name, chain_id, residue_index, type } or object { atom_id, chain_id, residue_id, type } or object { atom_map, chain_id, type } or object { atom_name, chain_id, type }

Atom reference for a specific CCD residue in a glycan graph.

One of the following:
PolymerAtom 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"
CcdAtom object { atom_id, chain_id, residue_id, type }

Atom reference for a specific CCD residue in a glycan graph.

atom_id: string

Exact atom identifier from the residue CCD entry (_chem_comp_atom.atom_id)

minLength1
maxLength4
chain_id: string

Chain ID containing the CCD residue

residue_id: string

Request-local residue ID declared by the graph entity

minLength1
type: "ccd_atom"
SmilesAtom object { atom_map, chain_id, type }

Atom reference using an explicit numeric atom-map in the input SMILES.

atom_map: number

Numeric atom-map identifier from the input SMILES (for example 7 for [C:7])

minimum1
chain_id: string

Chain ID containing the SMILES ligand

type: "smiles_atom"
LigandAtom object { atom_name, chain_id, type }

Atom reference for a single-residue ligand_ccd or an explicitly atom-mapped SMILES ligand. Glycan bonds use ccd_atom; new SMILES bonds should use smiles_atom.

atom_name: string

Atom name. For ligand_ccd, use the standardized CIF atom name. For ligand_smiles, explicitly label the atom with numeric atom-map notation: [C:1] is referenced as C1 and [O:2] as O2. The resulting name must be unique within the molecule and at most four characters.

chain_id: string

Chain ID containing the atom

type: "ligand_atom"
rules: optional object { excluded_amino_acids, excluded_sequence_motifs, max_hydrophobic_fraction }

Constraints applied during sequence design

excluded_amino_acids: optional array of string

Single-letter amino acid codes to exclude from design (e.g. [‘C’, ‘P’] to exclude cysteine and proline)

excluded_sequence_motifs: optional array of string

Sequence motifs to exclude from designed regions. Designs containing any of these motifs are filtered out before scoring. Use X as a single-residue wildcard (e.g. “NGS”, “NXS”).

max_hydrophobic_fraction: optional number

Maximum allowed fraction of hydrophobic residues (I, L, V, M, F, W, Y) in designed regions. Designs exceeding this threshold are filtered out before scoring. Leave empty to disable.

minimum0
maximum1
BoltzCuratedBinderSpec object { binder, type, rules }

Boltz-managed curated binder specification. Choose a curated nanobody or antibody family and Boltz will select from maintained template lists during design. The curated lists are managed by Boltz and may be updated over time to improve quality and coverage.

binder: "boltz_nanobody" or "boltz_antibody"

Boltz-managed curated binder family. Boltz maintains and may update the underlying template lists on behalf of customers.

One of the following:
"boltz_nanobody"
"boltz_antibody"
type: "boltz_curated"
rules: optional object { excluded_amino_acids, excluded_sequence_motifs, max_hydrophobic_fraction }

Constraints applied during sequence design

excluded_amino_acids: optional array of string

Single-letter amino acid codes to exclude from design (e.g. [‘C’, ‘P’] to exclude cysteine and proline)

excluded_sequence_motifs: optional array of string

Sequence motifs to exclude from designed regions. Designs containing any of these motifs are filtered out before scoring. Use X as a single-residue wildcard (e.g. “NGS”, “NXS”).

max_hydrophobic_fraction: optional number

Maximum allowed fraction of hydrophobic residues (I, L, V, M, F, W, Y) in designed regions. Designs exceeding this threshold are filtered out before scoring. Leave empty to disable.

minimum0
maximum1
type: "uniformly_sampled_specifications"
num_proteins: number

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

minimum10
maximum1000000
target: object { chain_selection, structure, type } or object { entities, type, bonds, 4 more }

Target specification (structure template or template-free)

One of the following:
StructureTemplateTarget object { chain_selection, structure, type }

Target defined by an uploaded 3D structure (CIF or PDB file). Only chains included in chain_selection are used.

chain_selection: map[object { chain_type, crop_residues, epitope_residues, 2 more } or object { chain_type } ]

Chains selected from the uploaded structure, keyed by chain ID. Only chains listed here are included in the pipeline run — any chains omitted from this mapping are ignored. Each value defines which residues to keep, which are epitope residues, which are non-binding residues, and which are flexible.

One of the following:
StructureTemplateTargetPolymerChainSpec object { chain_type, crop_residues, epitope_residues, 2 more }

Per-chain specification for a polymer (protein/RNA/DNA) chain in a structure template target.

chain_type: "polymer"
crop_residues: array of number or "all"

0-indexed residue indices to retain from this chain, or ‘all’ to keep all residues. Residues not listed are excluded from the pipeline run.

One of the following:
array of number

0-indexed residue indices to keep

"all"
epitope_residues: optional array of number

0-indexed residue indices where binder contact is desired (the epitope). All indices must be present in crop_residues and must not overlap non_binding_residues.

flexible_residues: optional array of number

0-indexed residue indices allowed to move during design (e.g. flexible loop regions). All indices must be present in crop_residues.

non_binding_residues: optional array of number

0-indexed residue indices where binder contact should be discouraged. All indices must be present in crop_residues and must not overlap epitope_residues.

StructureTemplateTargetLigandChainSpec object { chain_type }

Per-chain specification for a ligand chain in a structure template target. The full ligand is always included.

chain_type: "ligand"
structure: object { type, url } or object { data, media_type, type }

How to provide a CIF structure file. URLs are auto-detected; base64 uploads must use chemical/x-cif media type.

One of the following:
URLSource object { type, url }
type: "url"
url: string
formaturi
CifBase64Source object { data, media_type, type }
data: string

Base64-encoded CIF file contents

media_type: "chemical/x-cif"

Must be chemical/x-cif for CIF files

type: "base64"
type: "structure_template"
NoTemplateTarget object { entities, type, bonds, 4 more }

Target defined by sequences only, without a 3D structure template

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

Entities (proteins, RNA, DNA, ligands) defining the target complex.

One of the following:
ProteinEntity object { chain_ids, type, value, 2 more }
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)

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

Chain IDs for this entity

type: "rna"
value: string

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

cyclic: optional boolean

Whether the sequence is cyclic

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

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)

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

Chain IDs for this entity

type: "dna"
value: string

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

cyclic: optional boolean

Whether the sequence is cyclic

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

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)

LigandCcdEntity object { chain_ids, type, value }
chain_ids: array of string

Chain IDs for this ligand

type: "ligand_ccd"
value: string

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

LigandSmilesEntity object { chain_ids, type, value }
chain_ids: array of string

Chain IDs for this ligand

type: "ligand_smiles"
value: string

SMILES string representing the ligand

GlycanEntity object { bonds, chain_ids, residues, type }

Branched glycan represented as an explicit graph of CCD monosaccharide residues.

bonds: array of object { atom1, atom2 }

Covalent bonds connecting the glycan residues. A single-residue glycan uses an empty array.

atom1: object { atom_id, residue_id }
atom_id: string

Exact atom identifier from the residue CCD entry (_chem_comp_atom.atom_id)

minLength1
maxLength4
residue_id: string

Request-local ID of the glycan residue containing the atom

minLength1
atom2: object { atom_id, residue_id }
atom_id: string

Exact atom identifier from the residue CCD entry (_chem_comp_atom.atom_id)

minLength1
maxLength4
residue_id: string

Request-local ID of the glycan residue containing the atom

minLength1
chain_ids: array of string

Chain IDs for identical copies of this glycan

residues: array of object { id, ccd }

CCD residues in the glycan. Array order is not part of the public residue identity; bonds reference residue IDs.

id: string

Request-local residue ID used by glycan bonds and external atom references

minLength1
ccd: string

CCD code for this monosaccharide residue (for example NAG, BMA, or FUC)

minLength1
type: "glycan"
type: "no_template"
bonds: optional array of object { atom1, atom2 }

Covalent bond constraints between atoms in the target complex. Ligand atom references support CCD atom names and explicitly atom-mapped SMILES atoms.

atom1: object { atom_name, chain_id, residue_index, type } or object { atom_id, chain_id, residue_id, type } or object { atom_map, chain_id, type } or object { atom_name, chain_id, type }

Atom reference for a specific CCD residue in a glycan graph.

One of the following:
PolymerAtom 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"
CcdAtom object { atom_id, chain_id, residue_id, type }

Atom reference for a specific CCD residue in a glycan graph.

atom_id: string

Exact atom identifier from the residue CCD entry (_chem_comp_atom.atom_id)

minLength1
maxLength4
chain_id: string

Chain ID containing the CCD residue

residue_id: string

Request-local residue ID declared by the graph entity

minLength1
type: "ccd_atom"
SmilesAtom object { atom_map, chain_id, type }

Atom reference using an explicit numeric atom-map in the input SMILES.

atom_map: number

Numeric atom-map identifier from the input SMILES (for example 7 for [C:7])

minimum1
chain_id: string

Chain ID containing the SMILES ligand

type: "smiles_atom"
LigandAtom object { atom_name, chain_id, type }

Atom reference for a single-residue ligand_ccd or an explicitly atom-mapped SMILES ligand. Glycan bonds use ccd_atom; new SMILES bonds should use smiles_atom.

atom_name: string

Atom name. For ligand_ccd, use the standardized CIF atom name. For ligand_smiles, explicitly label the atom with numeric atom-map notation: [C:1] is referenced as C1 and [O:2] as O2. The resulting name must be unique within the molecule and at most four characters.

chain_id: string

Chain ID containing the atom

type: "ligand_atom"
atom2: object { atom_name, chain_id, residue_index, type } or object { atom_id, chain_id, residue_id, type } or object { atom_map, chain_id, type } or object { atom_name, chain_id, type }

Atom reference for a specific CCD residue in a glycan graph.

One of the following:
PolymerAtom 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"
CcdAtom object { atom_id, chain_id, residue_id, type }

Atom reference for a specific CCD residue in a glycan graph.

atom_id: string

Exact atom identifier from the residue CCD entry (_chem_comp_atom.atom_id)

minLength1
maxLength4
chain_id: string

Chain ID containing the CCD residue

residue_id: string

Request-local residue ID declared by the graph entity

minLength1
type: "ccd_atom"
SmilesAtom object { atom_map, chain_id, type }

Atom reference using an explicit numeric atom-map in the input SMILES.

atom_map: number

Numeric atom-map identifier from the input SMILES (for example 7 for [C:7])

minimum1
chain_id: string

Chain ID containing the SMILES ligand

type: "smiles_atom"
LigandAtom object { atom_name, chain_id, type }

Atom reference for a single-residue ligand_ccd or an explicitly atom-mapped SMILES ligand. Glycan bonds use ccd_atom; new SMILES bonds should use smiles_atom.

atom_name: string

Atom name. For ligand_ccd, use the standardized CIF atom name. For ligand_smiles, explicitly label the atom with numeric atom-map notation: [C:1] is referenced as C1 and [O:2] as O2. The resulting name must be unique within the molecule and at most four characters.

chain_id: string

Chain ID containing the atom

type: "ligand_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). Ligand atom references support CCD atom names and explicitly atom-mapped SMILES atoms.

One of the following:
PocketConstraint 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

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

Maximum-distance contact constraint between two polymer residues or ligand atoms.

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 for a CCD atom or an explicitly atom-mapped SMILES atom.

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

Chain ID

residue_index: number

0-based residue index

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

Ligand contact token for a CCD atom or an explicitly atom-mapped SMILES atom.

atom_name: string

Atom name. For ligand_ccd, use the standardized CIF atom name. For ligand_smiles, explicitly label the atom with numeric atom-map notation: [C:1] is referenced as C1 and [O:2] as O2. The resulting name must be unique within the molecule and at most four characters.

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 for a CCD atom or an explicitly atom-mapped SMILES atom.

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

Chain ID

residue_index: number

0-based residue index

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

Ligand contact token for a CCD atom or an explicitly atom-mapped SMILES atom.

atom_name: string

Atom name. For ligand_ccd, use the standardized CIF atom name. For ligand_smiles, explicitly label the atom with numeric atom-map notation: [C:1] is referenced as C1 and [O:2] as O2. The resulting name must be unique within the molecule and at most four characters.

chain_id: string

Chain ID

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

Whether to force the constraint

epitope_ligand_chains: optional array of string

Chain IDs of ligand entities that are part of the binding epitope. Ligands are marked as epitope in full (no residue-level selection).

epitope_residues: optional map[array of number]

Polymer chain residues where binder contact is desired (the epitope). Each key is a chain ID of a polymer entity, each value is an array of 0-indexed residue indices. Residues must not overlap non_binding_residues on the same chain.

non_binding_residues: optional map[array of number]

Polymer chain residues where binder contact should be discouraged. Each key is a chain ID of a polymer entity, each value is an array of 0-indexed residue indices. Residues must not overlap epitope_residues on the same chain.

idempotency_key: optional string

Client-provided key to prevent duplicate submissions on retries

maxLength255
workspace_id: optional string

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

ReturnsExpand Collapse
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

Estimate cost for a protein design run

curl https://api.boltz.bio/compute/v1/protein/design/estimate-cost \
    -H 'Content-Type: application/json' \
    -H "x-api-key: $BOLTZ_API_KEY" \
    -d '{
          "binder_specification": {
            "chain_selection": {
              "B": {
                "chain_type": "polymer",
                "crop_residues": [
                  0,
                  1,
                  2,
                  3,
                  4,
                  5,
                  6,
                  7,
                  8,
                  9
                ],
                "design_motifs": [
                  {
                    "design_length_range": {
                      "max": 8,
                      "min": 4
                    },
                    "end_index": 5,
                    "start_index": 0,
                    "type": "replacement"
                  }
                ]
              }
            },
            "modality": "peptide",
            "structure": {
              "type": "url",
              "url": "https://example.com"
            },
            "type": "structure_template"
          },
          "num_proteins": 10,
          "target": {
            "chain_selection": {
              "A": {
                "chain_type": "polymer",
                "crop_residues": [
                  0,
                  1,
                  2,
                  3,
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12
                ],
                "epitope_residues": [
                  10,
                  11,
                  12
                ],
                "flexible_residues": [
                  5,
                  6,
                  7
                ],
                "non_binding_residues": [
                  0,
                  1,
                  2
                ]
              }
            },
            "structure": {
              "type": "url",
              "url": "https://example.com"
            },
            "type": "structure_template"
          }
        }'
{
  "breakdown": {
    "application": "structure_and_binding",
    "cost_per_unit_usd": "0.0500",
    "num_units": 1
  },
  "disclaimer": "This is an estimate only and may differ from your actual charges. Final billing is based on exact token counts computed at run time. For large library screens, the estimate is extrapolated from a sample and may be less accurate for highly variable inputs.",
  "estimated_cost_usd": "0.0500"
}
Returns Examples
{
  "breakdown": {
    "application": "structure_and_binding",
    "cost_per_unit_usd": "0.0500",
    "num_units": 1
  },
  "disclaimer": "This is an estimate only and may differ from your actual charges. Final billing is based on exact token counts computed at run time. For large library screens, the estimate is extrapolated from a sample and may be less accurate for highly variable inputs.",
  "estimated_cost_usd": "0.0500"
}