← API reference
Binder design · Protein Design

BindCraft API

Design de novo protein or peptide binders against a target structure.

Builds a BindCraft target/advanced/filter settings trio and runs the official pipeline end to end (hallucination, ProteinMPNN redesign, AlphaFold2 validation, and filtering).

Tasks

Pick a mode with task

Fields belonging to another task are ignored, so send only the ones for the task you chose.

taskMode
default default Default (protein binder)
peptide Peptide
Request body

Fields

The same names the web form posts. See the field type table for what each kind means over HTTP.

Name Type Required Default Description
binder_name string text no demo-binder Binder name
target_pdb string file yes HEADER PASTE A TRIMMED TARGET PDB HERE Target PDB file types .pdb,.ent.
target_chains string text yes A Target chain IDs Comma-separated chain IDs.
hotspot_residues string textarea no Hotspot residues (optional) One "chain: residues" per line, e.g. "A: 54,56,58" or "A: 1-10". Leave blank to let AF2 pick a binding site.
minimum_length number number no 65 Minimum binder length BindCraft's own default range is 65-150 for protein binders, 10-20 for peptides. minimum 5, maximum 500.
maximum_length number number no 150 Maximum binder length minimum 5, maximum 500.
final_designs number number no 1 Accepted designs requested minimum 1, maximum 1000.
filter_type string select no default Filter set One of: default, relaxed, no_filters, peptide, peptide_relaxed.
omit_amino_acids string text no C Omit amino acids One-letter amino-acid codes ProteinMPNN redesign must not sample.
predict_bigbang boolean checkbox no false Use BigBang initialization
weights_helicity number number no -0.3 Helicity weight Negative biases toward helical binders, positive toward non-helical, 0 is neutral. minimum -5, maximum 5, step 0.1.
betasheet_advanced default boolean checkbox no false Bias toward beta-sheet designs
mpnn_advanced boolean checkbox no false Use ProteinMPNN-biased trajectory design
flexible_advanced boolean checkbox no false Allow a flexible target interface
hardtarget_advanced default boolean checkbox no false Treat the target as a hard (rigid) target
filter_plddt number number no 0.8 Average pLDDT threshold minimum 0, maximum 1, step 0.01.
filter_ptm number number no 0.55 Average pTM threshold minimum 0, maximum 1, step 0.01.
filter_iptm number number no 0.5 Average interface pTM threshold minimum 0, maximum 1, step 0.01.
filter_i_pae number number no 0.35 Average interface PAE threshold minimum 0, maximum 1, step 0.01.
filter_surface_hydrophobicity number number no 0.35 Average surface hydrophobicity threshold minimum 0, maximum 1, step 0.01.
filter_n_interface_residues number number no 7 Minimum interface residues minimum 0, maximum 100.
filter_n_interface_hbonds number number no 3 Minimum interface H-bonds minimum 0, maximum 100.
filter_hotspot_rmsd number number no 6 Maximum hotspot RMSD, angstrom minimum 0, maximum 50, step 0.1.
filter_binder_plddt number number no 0.8 Average binder pLDDT threshold minimum 0, maximum 1, step 0.01.
filter_binder_rmsd number number no 3.5 Maximum binder RMSD, angstrom minimum 0, maximum 50, step 0.1.
max_run_time number number no 16 Maximum run time, minutes Bounds this request's own subprocess; BindCraft itself has no built-in time limit. minimum 1, maximum 1440.
Example

A request that runs

These are the defaults, exactly as the web form would post them.

curl -X POST https://www.athanortools.com/api/bindcraft/ \
  -H 'Content-Type: application/json' \
  -d '{
  "task": "default",
  "binder_name": "demo-binder",
  "target_pdb": "HEADER    PASTE A TRIMMED TARGET PDB HERE",
  "target_chains": "A",
  "hotspot_residues": "",
  "minimum_length": 65,
  "maximum_length": 150,
  "final_designs": 1,
  "filter_type": "default",
  "omit_amino_acids": "C",
  "predict_bigbang": false,
  "weights_helicity": -0.3,
  "betasheet_advanced": false,
  "mpnn_advanced": false,
  "flexible_advanced": false,
  "hardtarget_advanced": false,
  "filter_plddt": 0.8,
  "filter_ptm": 0.55,
  "filter_iptm": 0.5,
  "filter_i_pae": 0.35,
  "filter_surface_hydrophobicity": 0.35,
  "filter_n_interface_residues": 7,
  "filter_n_interface_hbonds": 3,
  "filter_hotspot_rmsd": 6,
  "filter_binder_plddt": 0.8,
  "filter_binder_rmsd": 3.5,
  "max_run_time": 16
}'

The reply is 202 with a queued job; poll its status_url until status is succeeded or failed. See the quick start for the whole exchange.

Responses

What comes back

statusMeaning
queued Accepted, waiting for the jobs ahead of it. `position` counts how many those are.
running The tool is executing now.
succeeded Finished; `result` holds the tool's output and `license` the terms it came under.
failed Finished; `error` holds a code and a message.

Errors

codeMeaning
invalid_input The client supplied invalid or incomplete input.
tool_unavailable The requested third-party dependency is not available on this host.
execution_failed A configured third-party process exited unsuccessfully.
internal_error An adapter failed in a way it does not describe. The detail is in the server log, not the response.
not_found No job has that id. Finished jobs are dropped eventually.