Live Demo

5-Minute Drug Discovery Loop

From a target sequence to 3 ranked binder candidates — in under 5 minutes, using a single chained API call.

The 5 steps

1

Pick a target

< 10 seconds

Pick a famous target (PD-L1, HER2, SARS-CoV-2 spike, GLP-1R) or paste your own amino acid sequence. The demo pre-populates with PD-L1 for speed.

(no API call)

2

Fold the target

20-40 seconds5 credits

ESMFold predicts the 3D structure from sequence alone — no MSA required. Returns PDB file + per-residue pLDDT scores.

POST /v1/proteins/fold

3

Generate binder candidates

60-90 seconds15 credits

BoltzGen generates 5 candidate binder sequences against the folded target. Returns ranked designs with predicted ΔG.

POST /v1/design/binder/boltzgen

4

Score each binder

30-60 seconds20 credits

Boltz-2 computes the protein-protein complex structure for each candidate and returns ipTM and pLDDT scores. Top 3 are ranked.

POST /v1/proteins/complex (Boltz-2)

5

Download + celebrate

< 5 seconds

Download the top 3 PDB files, the ranking JSON, and a PyMOL session. Post the best one on Twitter.

(client-side download)

Total time

< 5 min

Total credits

40

Ranked binders

3

Free tier users get 500 credits/month — enough for 12 complete drug discovery loops.

The entire pipeline as one Python script

import requests

API_KEY = "sk-sci-your-key-here"
BASE = "https://scirouter.ai"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}

# Step 1-2: fold the target
target_sequence = "FTVTVPKDLYVVEYGSNMTIECKFPVEKQLDLAALIVYWEMED..."
fold = requests.post(
    f"{BASE}/v1/proteins/fold",
    json={"sequence": target_sequence},
    headers=HEADERS
).json()

# Step 3: generate binders
binders = requests.post(
    f"{BASE}/v1/design/binder/boltzgen",
    json={
        "target_sequence": target_sequence,
        "hotspots": [42, 67, 89],
        "num_designs": 5,
    },
    headers=HEADERS
).json()["data"]["result"]["designs"]

# Step 4: score each with Boltz-2 complex prediction
for binder in binders[:3]:
    complex_score = requests.post(
        f"{BASE}/v1/proteins/complex",
        json={
            "chains": [
                {"sequence": target_sequence},
                {"sequence": binder["sequence"]},
            ],
        },
        headers=HEADERS
    ).json()
    binder["complex_ipTM"] = complex_score["data"]["ipTM"]

# Step 5: rank and save
binders.sort(key=lambda b: -b.get("complex_ipTM", 0))
for i, b in enumerate(binders[:3]):
    print(f"#{i+1}: len={b['length']} ipTM={b['complex_ipTM']:.3f}")

Ready to design a drug?

Create a free account, get 500 credits (enough for 12 complete pipelines), and start designing. No credit card required.