OpenDDE API
Structure prediction for proteins, DNA/RNA, ligands, and ions. Supports co-folding.
OpenDDE is an all-atom biomolecular foundation model that turns co-folding into a scalable engine for structure prediction, design, and optimization in drug discovery. It models proteins, nucleic acids, and small molecules in one all-atom system.
Input method
Set input_mode to choose how inputs are supplied. Only fields for the selected method are used.
parameters: Set parameters heretext: Enter YAML or JSONupload: Upload YAML or JSON
Example presets
Send {"preset": "minimal_protein"} to load an example and its bundled inputs. Add other request fields to override its settings. The schema includes all presets under tool.presets.
| preset | Description |
|---|---|
minimal_protein | Official minimal input shape: one 20-residue protein, one seed, and no external MSA or template search. Source ↗ |
synthetic_protein_200 | Official 200-residue single-chain example, reduced to one sample for an economical ready-to-run preset. Runs without MSAs, since a synthetic repeat has no natural relatives to align. Source ↗ |
protein_dna_ligand_7pzb | Official co-folding example with a protein dimer, two DNA duplex components, and CCD ligand PCG. Its JSON carries no MSA paths, so OpenDDE searches for the protein MSA on the public ColabFold server. Source ↗ |
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 | opendde-job |
Job name Names the single OpenDDE job generated from these parameters. up to 80 characters. |
sequence_molecules
|
string (JSON array) molecule_builder | yes | [{"type": "protein", "id": "A", "count": 1, "sequence": "ACDEFGHIKLMNPQRSTVWY", "modificat … |
Molecules
Add one box per unique OpenDDE entity. Set count and an optional matching list of comma-separated IDs, plus the sequence/ligand/ion, type-specific modifications, and optional MSA or template paths.
One of:
protein, ligand, dna, rna, ion.
A JSON array, sent as a string. See
molecule entries.
|
covalent_bonds
|
string textarea | no | — |
Covalent bonds (JSON, optional) Native OpenDDE covalent_bonds array. Entity references are 1-based sequence indexes; copy references are 1-based within count. up to 500000 characters. |
input_json
|
string textarea | yes | [
{
"name": "opendde-demo",
"modelSeeds": [101],
"sequences": [
{ … |
OpenDDE inference jobs (JSON) Complete native OpenDDE input: a non-empty top-level list of named jobs using proteinChain, dnaSequence, rnaSequence, ligand, or ion entities. In this form: Bio Web writes this text to input.json. Any MSA, template, or ligand-file paths inside it must be absolute paths available to the runner. up to 1000000 characters. |
inputs_file
|
string file | no | — |
Inference jobs file (JSON) The JSON file defining this run's jobs, in OpenDDE's own input format. In this form: Choose a file. Its contents are read here and sent as the input document. file types .json. |
seeds
|
string text | no | — |
Override model seeds (optional) Comma-separated integers. When set, --seeds overrides every job's modelSeeds; otherwise OpenDDE uses modelSeeds from the JSON or samples a random seed. up to 200 characters. |
samples
|
number number | no | 5 |
Samples Number of structure samples per seed. The OpenDDE CLI default is 5. minimum 1, maximum 64, step 1. |
steps
|
number number | no | 200 |
Diffusion steps Number of diffusion steps. The OpenDDE CLI default is 200. minimum 1, maximum 1000, step 1. |
cycles
|
number number | no | 10 |
Pairformer cycles Number of Pairformer recycling cycles. The OpenDDE CLI default is 10. minimum 1, maximum 100, step 1. |
dtype
|
string select | no | fp32 |
Inference precision
OpenDDE defaults to FP32; BF16 can reduce memory use on supported devices.
One of:
fp32, bf16.
|
device
|
string select | no | auto |
Device
Auto selects CUDA when available and otherwise CPU.
One of:
auto, cuda, cpu.
|
use_msa
|
boolean checkbox | no | true |
Use or generate protein MSAs Use protein MSA features. A protein without paired or unpaired MSA paths has its sequence sent to the public ColabFold MMseqs2 server (https://api.colabfold.com; set MMSEQS_SERVICE_HOST_URL on the runner to use your own). If that search fails, OpenDDE continues with a query-only MSA and the result lists a warning. Turn off for private sequences or offline runs, at a significant cost in accuracy. |
use_template
|
boolean checkbox | no | false |
Use protein templates Use template features from each protein's templatesPath. A protein without one gets a local template search instead, which needs protein MSAs, HMMER (hmmsearch and hmmbuild) on the runner's PATH, and downloads the ~220 MB PDB seqres database on first use. |
use_rna_msa
|
boolean checkbox | no | false |
Use RNA MSAs Use RNA MSA features from each RNA's unpaired MSA path. An RNA without one gets a local nhmmer search instead, which needs HMMER on the runner's PATH and downloads roughly 90 GB of RNA databases on first use. Requires protein MSAs to be on. |
use_guidance
|
boolean checkbox | no | false |
Use training-free guidance Apply OpenDDE's geometry-based Training-Free Guidance to protein-ligand sampling. |
need_atom_confidence
|
boolean checkbox | no | true |
Write atom-level confidence data Write OpenDDE's full per-atom confidence JSON in addition to summary confidence. |
deterministic
|
boolean checkbox | no | false |
Deterministic PyTorch algorithms Ask OpenDDE to use deterministic PyTorch algorithms for reproducible inference. |
Molecule entry keys
| Key | Meaning |
|---|---|
type |
Which of the field's molecule types this entry is. |
id |
A chain/entity ID, or a list of IDs for identical copies. Tools with configurable IDs expose this inside each molecule box. CatPred, whose boxes are not chains of one structure, uses it for the enzyme's sequence ID (its pdbpath, which must name exactly one sequence) and for a substrate's optional label. |
count |
The number of identical copies. Used by tools whose native schema represents copy count separately from IDs. |
sequence |
The residues, for a protein, dna, or rna entry. |
ligand |
A SMILES string or a CCD_ code, for a ligand entry. CatPred resolves no CCD codes and takes SMILES only. |
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": <integer>, "residue": "<CCD code>"} objects. Position indexing follows the tool: ESMFold2 uses zero-based positions; the other molecule-builder tools use one-based positions. |
msa |
A tool-native MSA for supported protein/RNA entities. Boltz-2: an absolute .a3m/.csv path, or empty for single-sequence; omit it to generate one with the MSA server. ESMFold2: an absolute .a3m path, a serialized MSA, or a {"sequences": [...]} object. |
paired_msa_path |
An OpenDDE or Protenix protein paired-MSA path. |
unpaired_msa_path |
An OpenDDE or Protenix protein or RNA unpaired-MSA path. |
templates_path |
An OpenDDE or Protenix protein template-hits path. |
A request that runs
These are the defaults, exactly as the web form would post them.
curl -X POST https://athanortools.com/api/opendde/ \
-H 'Content-Type: application/json' \
-d '{
"input_mode": "parameters",
"job_name": "opendde-job",
"sequence_molecules": "[{\"type\": \"protein\", \"id\": \"A\", \"count\": 1, \"sequence\": \"ACDEFGHIKLMNPQRSTVWY\", \"modifications\": []}]",
"covalent_bonds": "",
"seeds": "",
"samples": 5,
"steps": 200,
"cycles": 10,
"dtype": "fp32",
"device": "auto",
"use_msa": true,
"use_template": false,
"use_rna_msa": false,
"use_guidance": false,
"need_atom_confidence": true,
"deterministic": false
}'
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.
What comes back
| status | Meaning |
|---|---|
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. |
cancelled |
Abandoned at the submitter's request; there is no result. A job cancelled before its turn never ran at all. |
Errors
| code | Meaning |
|---|---|
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 tool 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. |