← API reference
Structure prediction

Protenix-v2 API

Predict protein or protein-ligand complex structures with Protenix.

Builds Protenix's AlphaFold3-style JSON input and runs the official `protenix pred` CLI, with MSA and PDB template search off by default.

Tasks

Pick a mode with task

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

taskMode
sequence default Sequence
list Chain list
molecules Molecules (JSON)
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
job_name string text no protenix-demo Job name
sequence_molecules sequence string (JSON array) molecule_builder yes [{"type": "protein", "sequence": "MSTNPKPQRKTKRNTNRRPQDVKFPGG", "cyclic": false, "modifica … Molecules Add one box per chain: Protein, DNA, RNA, Ligand, or Ion. Ligands take a SMILES string or a CCD_ code (e.g. CCD_ATP); ions take a CCD ion code (e.g. NA, MG, ZN). A modification applies a CCD residue code at a given position; "Cyclic" bonds the chain's first and last residue. One of: protein, dna, rna, ligand, ion. A JSON array, sent as a string. See molecule entries.
proteins list string textarea yes MSTNPKPQRKTKRNTNRRPQDVKFPGG Protein chains One protein chain sequence per line.
dnas list string textarea no DNA chains (optional) One DNA chain sequence per line.
rnas list string textarea no RNA chains (optional) One RNA chain sequence per line.
molecules molecules string textarea yes [{"type": "protein", "chain": "A", "sequence": "MSTNPKPQRKTKRNTNRRPQDVKFPGG"}] Molecules JSON list of {"type": "protein"|"dna"|"rna", "chain": "A", "sequence": "..."}.
ligands list molecules string textarea no Ligands (optional) One ligand per line: a CCD code such as CCD_ATP, or a SMILES string.
model string select no protenix-v2 Model Use protenix_base_constraint_v0.5.0 for pocket/contact restraints to have any effect on the prediction. One of: protenix-v2, protenix_base_20250630_v1.0.0, protenix_base_constraint_v0.5.0, protenix_base_default_v0.5.0, protenix_base_default_v1.0.0.
num_samples number number no 5 Samples minimum 1, maximum 25.
num_seeds number number no 1 Consecutive seeds Runs this many seeds (MSA computed once); total predictions = seeds x samples. minimum 1, maximum 10.
seed number number no 101 Starting random seed minimum 0, maximum 2147483647.
num_recycles number number no 10 Recycles minimum 1, maximum 30.
diffusion_steps number number no 200 Diffusion steps minimum 10, maximum 500.
use_msa_server boolean checkbox no false Use the public MSA server Opt in to a network call for better accuracy; off keeps the run local.
use_template boolean checkbox no false Search PDB for templates Network search; only supported by protenix-v2 and the v1.0.0 base models.
use_rna_msa boolean checkbox no false Use RNA MSA search Network search; only supported by protenix-v2 and the v1.0.0 base models.
use_guidance boolean checkbox no false Use physics-aware guidance Training-free guidance for improved ligand plausibility (chirality, planarity, stereochemistry); increases compute time.
bonds string textarea no Covalent bonds (optional) JSON list, e.g. [{"atom1Chain":"A","atom1Idx":32,"atom1Atom":"C","atom2Chain":"B","atom2Idx":1,"atom2Atom":"N"}].
pocket_restraints string textarea no Pocket restraint (optional) At most one, as a JSON list, e.g. [{"binderChain":"A","pocketChain":"B","pocketContacts":"5 6 7","maxDistance":6}].
contact_restraints string textarea no Contact restraints (optional) JSON list, e.g. [{"chainA":"A","res_idxA":1,"chainB":"B","res_idxB":1,"max_distance_angstrom":6,"min_distance_angstrom":3}].

Molecule entry keys

KeyMeaning
type Which of the field's molecule types this entry is.
sequence The residues, for a protein, dna, or rna entry.
ligand A SMILES string or a CCD_ code, for a ligand entry.
ion An ion code, for an ion entry.
cyclic Whether a polymer chain is cyclic. Tools that cannot model one reject it rather than ignoring it.
modifications Substitutions, as {"position": <1-indexed integer>, "residue": "<CCD code>"} objects.
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/protenix/ \
  -H 'Content-Type: application/json' \
  -d '{
  "task": "sequence",
  "job_name": "protenix-demo",
  "sequence_molecules": "[{\"type\": \"protein\", \"sequence\": \"MSTNPKPQRKTKRNTNRRPQDVKFPGG\", \"cyclic\": false, \"modifications\": []}]",
  "model": "protenix-v2",
  "num_samples": 5,
  "num_seeds": 1,
  "seed": 101,
  "num_recycles": 10,
  "diffusion_steps": 200,
  "use_msa_server": false,
  "use_template": false,
  "use_rna_msa": false,
  "use_guidance": false,
  "bonds": "",
  "pocket_restraints": "",
  "contact_restraints": ""
}'

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.