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
Pick a target
< 10 secondsPick 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)
Fold the target
20-40 seconds5 creditsESMFold predicts the 3D structure from sequence alone — no MSA required. Returns PDB file + per-residue pLDDT scores.
POST /v1/proteins/fold
Generate binder candidates
60-90 seconds15 creditsBoltzGen generates 5 candidate binder sequences against the folded target. Returns ranked designs with predicted ΔG.
POST /v1/design/binder/boltzgen
Score each binder
30-60 seconds20 creditsBoltz-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)
Download + celebrate
< 5 secondsDownload 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.