← API reference
Antibody design · Sequence prediction · Protein Design

IgDesign API

Design antibody CDRs against a target antigen by inverse folding.

Runs IgDesign, which conditions on an antigen-antibody complex structure plus the antibody framework sequence and samples new sequences for the CDRs it is given explicit position ranges for. IgDesign's own configuration format takes those ranges directly rather than a numbering scheme, so this does too.

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 igdesign-demo Job name
complex_pdb string file yes HEADER PASTE AN ANTIGEN-ANTIBODY COMPLEX PDB HERE Antigen-antibody complex PDB The framework and antigen are read from this structure; the designed loops are resampled. file types .pdb,.ent,.cif.
antigen_chain string text yes A Antigen chain up to 4 characters.
heavy_chain string text yes H Heavy-chain ID up to 4 characters.
light_chain string text yes L Light-chain ID up to 4 characters.
regions string textarea yes hcdr3:heavy:96-108 Regions to design One per line, as region:chain:start-end using 1-indexed positions within that chain, for example hcdr3:heavy:96-108. Designed in the order listed. IgDesign's own example configs are the reference for picking these ranges.
num_sequences number number no 10 Sequences to sample minimum 1, maximum 1000.
temperature number number no 0.5 Sampling temperature minimum 0.01, maximum 2, step 0.05.
seed number number no 0 Random seed minimum 0, maximum 2147483647.
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/igdesign/ \
  -H 'Content-Type: application/json' \
  -d '{
  "job_name": "igdesign-demo",
  "complex_pdb": "HEADER    PASTE AN ANTIGEN-ANTIBODY COMPLEX PDB HERE",
  "antigen_chain": "A",
  "heavy_chain": "H",
  "light_chain": "L",
  "regions": "hcdr3:heavy:96-108",
  "num_sequences": 10,
  "temperature": 0.5,
  "seed": 0
}'

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.