MolDyn Documentation
AI-accelerated virtual screening for protease and hydrolase targets. 2.6M ChEMBL compounds, ~17 ms core search time, ~103 ms end-to-end per HTTPS call.
Getting Started
- Register at cellswave.com → get your API key
- Make your first query:
curl -X POST https://api.cellswave.com/v1/screen \
-H "X-API-Key: your-key" \
-H "Content-Type: application/json" \
-d '{"smiles": "CC(=O)Oc1ccccc1C(=O)O", "top_k": 10}'
Requirements: HTTPS client only. No GPU, no Docker needed.
Health check
No key required; confirms the service is reachable:
curl https://api.cellswave.com/v1/health
Expected response:
{
"status": "ok",
"library_size": 2609637,
"encoder_version": "enc_v1",
"api_version": "1.0.0"
}
Dock against a protein pocket
curl -X POST https://api.cellswave.com/v1/dock \
-H "X-API-Key: your-key" \
-H "Content-Type: application/json" \
-d '{"pdb_id": "6LU7", "top_k": 100}'
Data Privacy
- SMILES processed in memory, never written to disk
- Logged as SHA-256 hash only (non-reversible)
- No compound data retained after query
- Protected by DPA (GDPR/HIPAA) and NDA
- Transmitted over TLS 1.3
Data Architecture
- SMILES are transmitted over HTTPS, processed in memory, and discarded after the query completes.
- Only non-reversible metadata is retained for abuse detection and billing: SHA-256 hash of the query, timestamp, API-key identifier, response latency, and the number of hits returned.
- No compound library, molecule names, or research targets are retained on CellsWave infrastructure.
API Reference
Base URL: https://api.cellswave.com. Auth: X-API-Key header on every request except /health and /proteins.
| Method | Path | Auth | Description |
|---|---|---|---|
| GET | /v1/health | — | Service, GPU, library readiness |
| GET | /v1/proteins | — | List cached PDB IDs |
| POST | /v1/screen | yes | Rank library by SMILES similarity (~103 ms) |
| POST | /v1/dock | yes | Rank library against a binding pocket |
POST /v1/screen
Client sends SMILES over HTTPS to api.cellswave.com. The query is processed in memory on CellsWave GPU infrastructure; only a SHA-256 hash is retained for abuse detection. End-to-end latency is ~103 ms per call.
| Field | Type | Required | Notes |
|---|---|---|---|
| smiles | string | yes | Query ligand as SMILES |
| top_k | integer | no (10) | Number of hits. Capped by plan. |
| method | string | no ("gre") | One of gre, boosted, hybrid, pharmacophore |
POST /v1/dock
| Field | Type | Required | Notes |
|---|---|---|---|
| pdb_id | string | yes | 4-character PDB code. Auto-downloaded if not cached. |
| top_k | integer | no (100) | Number of hits. Capped by plan. |
| method | string | no ("boosted") | Same options as /screen |
Plans
| Plan | Requests / month | top_k max |
|---|---|---|
| Free | 100 | 10 |
| Starter | 1,000 | 50 |
| Pro | 10,000 | 100 |
| Enterprise | unlimited | 500 |
Exceeding the request cap returns HTTP 429. Exceeding the top_k cap returns HTTP 422.
Error Codes
Every error has the same shape: {"error": "<slug>", "message": "<human>"}.
| HTTP | Slug | Condition |
|---|---|---|
| 400 | invalid_smiles | Input preprocessing failed |
| 400 | invalid_input | Malformed / unresolvable PDB ID |
| 401 | invalid_api_key | Missing or unknown X-API-Key |
| 422 | invalid_input | top_k out of range for plan |
| 429 | rate_limit | Monthly request limit reached |
| 500 | server_error | Unhandled internal error |
| 503 | service_unavailable | Library cache / encoder version mismatch |
Examples
Python
import os, requests
headers = {"X-API-Key": os.environ["MOLDYN_KEY"]}
r = requests.post(
"https://api.cellswave.com/v1/screen",
json={"smiles": "CC(=O)Oc1ccccc1C(=O)O", "top_k": 10},
headers=headers,
)
for hit in r.json()["results"]:
print(hit["rank"], hit["chembl_id"], hit["score"])
JavaScript
const r = await fetch("https://api.cellswave.com/v1/screen", {
method: "POST",
headers: {
"X-API-Key": process.env.MOLDYN_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({ smiles: "CC(=O)Oc1ccccc1C(=O)O", top_k: 10 }),
});
const data = await r.json();
Support
Email [email protected] for:
- Trial access and plan upgrades
- Benchmark report (sent after short review)
- Integration help and custom targets
- Bug reports and feature requests