---
title: Boltz-2 inputs and parameters
description: 'Chain entries, recycling and sampling steps, MSA and affinity options.'
---

A Boltz-2 job is a list of chain entries plus a few sampling parameters. There is no receptor-structure input and no pocket definition: every entity goes in as a sequence (or, for a ligand, a SMILES string), and the model folds them together.

## Chain entries

`sequences` is required: an array of 1 to 20 entries. Each entry carries three fields, all required.

- `chain_id` (string) —
  Single-character chain identifier, for example `A`, `B`, `C`.

- `sequence_type` ("protein" | "dna" | "rna" | "ligand") —
  What the entry is. `protein` takes an amino-acid sequence, `dna` and `rna` take a nucleotide sequence, and `ligand` takes a SMILES string.

- `sequence` (string) —
  The amino-acid sequence, nucleotide sequence, or SMILES — matching `sequence_type`.

A protein–ligand job is therefore two entries: one `protein` chain with the receptor sequence, and one `ligand` chain whose `sequence` is the ligand SMILES.

## Sampling parameters

- `num_recycling_steps` (integer) —
  Recycling iterations for structure refinement. Accepted range 1–10.

- `sampling_steps` (integer) —
  Diffusion sampling steps. Accepted range 1–500. Below about 50 the structures are low quality — that range exists for plumbing and probe runs, not for science.

- `output_format` ("pdb" | "mmcif") —
  Structure format for the returned file. Both a PDB and an mmCIF artifact URI come back in the result regardless; this selects which one the run writes first. The backend's own default is `mmcif`, and the platform submits `pdb` unless you ask for `mmcif`.

## MSA generation

- `use_msa_server` (boolean) —
  Generate MSAs through the public ColabFold MMseqs2 server for any protein chain that supplies no MSA of its own.

This is opt-in for two reasons, both worth weighing:

- It **transmits your sequences to a third-party service**.
- It can **add 30 seconds to 10 minutes** of latency, depending on sequence length and the server's queue.

Left off, protein chains run in explicit single-sequence mode (`msa: empty`) and the result sets `single_sequence_mode: true`. Upstream notes that predictions are suboptimal without an MSA, so read that flag before comparing two runs.

## Affinity prediction

- `predict_affinity` (boolean) —
  Also predict binding affinity for the complex.

Three conditions apply:

1. The complex must have **more than one chain** and at least one `ligand` entry. The first ligand chain is used as the binder.
2. The ligand must be at most **128 heavy atoms**. Above that, Boltz refuses affinity prediction, so the platform submits the job with `predict_affinity=false` and returns a note saying affinity was skipped and why — the structure is still produced. Do not resubmit the same ligand with affinity on.
3. The output is a **predicted** log10(IC50 [µM]). See [results](/docs/boltz2/results).

## Example chain list

```json
{
  "sequences": [
    { "chain_id": "A", "sequence_type": "protein", "sequence": "MKFLILLFNILCLFPVLAADNHGVSMQAYSALRHYP" },
    { "chain_id": "B", "sequence_type": "ligand", "sequence": "CC(=O)Oc1ccccc1C(=O)O" }
  ],
  "num_recycling_steps": 3,
  "sampling_steps": 200,
  "output_format": "pdb",
  "predict_affinity": true
}
```

## Read next
