AI binder design agents are now competent end to end on the computational side. They pull a target, generate thousands of backbones with RFdiffusion, design sequences with ProteinMPNN, filter on ESMFold self-consistency, and rank by complex prediction. Then they stop. The validation step is still a forms-and-email handoff.
The Ranomics Platform API closes that loop. Agents POST shortlisted candidates to one endpoint and receive back enriched hits, NGS counts, and called binders. Bearer auth, async polling, signed webhook callbacks, an OpenAPI spec, and three experiment types: yeast surface display, mammalian display, and deep mutational scanning.
This post walks through one end-to-end run.
Where this fits in the agent pipeline
A typical de novo binder campaign generates 10,000 to 30,000 backbones from RFdiffusion against a target hotspot, runs each through ProteinMPNN at two temperatures, and converges to 5,000 to 20,000 candidate sequences after self-consistency and complex-prediction filters. That set is too large for per-sequence kinetics. It is the right size for library-scale display.
Yeast surface display is the workhorse for triaging a pool of that size against a single target. A library of 10^4 to 10^8 variants is constructed, displayed on the yeast cell surface, sorted via FACS or MACS against the antigen, and read out by NGS. The signal is enrichment, not affinity. Variants that survive the gates are real binders worth advancing to kinetics; variants that wash out can be dropped.
The Platform API exposes this loop as one HTTP call.
The submission, end to end
The request body mirrors the shape an agent already produces.
curl -X POST https://tools.ranomics.com/api/v1/experiments \
-H "Authorization: Bearer rk_live_..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: campaign-her2-2026-06-08" \
-d '{
"name": "HER2 binders, round 1",
"webhook_url": "https://agent.example.com/ranomics/events",
"experiment_spec": {
"experiment_type": "yeast_display",
"target": {
"custom": {
"name": "HER2 ECD subdomain IV",
"antigen_sequence": "MELAALCRWGLLLALLPPGAAS...",
"notes": "Use surface-biotinylated ECD; sort against the 7C2 epitope patch."
}
},
"library_design": {
"mode": "designed_panel",
"diversity_estimate": 8421,
"notes": "RFdiffusion plus ProteinMPNN; ESMFold RMSD below 2.0 angstrom; PAE_int below 12."
},
"sequences": {
"des_00001": "DIQMTQSPSSLSASVGDRVTITCRASQSISSYLNWYQQKPGKAPKLLIYAASSLQSGVPSRFSGSGSGTDFTLTISSLQPEDFATYYCQQSYSTPLTFGGGTKVEIK",
"des_00002": "QVQLVQSGAEVKKPGASVKVSCKASGYTFTSYAMHWVRQAPGQRLEWMGWINAGNGNTKYSQKFQGRVTITRDTSASTAYMELSSLRSEDTAVYYCAR",
"des_00003": "EVQLVESGGGLVKPGGSLRLSCAASGFTFSDYYMSWIRQAPGKGLEWVSYISSSGSTIYYADSVKGRFTISRDNAKNSLYLQMNSLRAEDTAVYYCAR"
}
}
}'
The response returns { "experiment_id": "...", "status": "WaitingForConfirmation", "results_status": "none", "webhook_url": "...", "created_at": "...", "last_transition_at": "...", "status_log": [ ... ] }. The agent now has two paths to results: poll GET /api/v1/experiments/{id} for status, or wait for a signed webhook POST at every transition.
Signatures follow the Stripe convention: X-Ranomics-Signature: t=<timestamp>,v1=<hex hmac-sha256> over the raw payload, using a per-tenant secret revealed once at /account/api-keys. The payload also carries owner_user_id so receivers can cross-check the source on the way in.
The status machine
Each experiment moves through a documented lifecycle. The states map to actual wet-lab milestones, not arbitrary tags.
Draft
WaitingForConfirmation
QuoteSent
WaitingForMaterials
LibraryConstruction
Sorting
NGS
DataAnalysis
InReview
Done
Every submission lands in WaitingForConfirmation. For calibrated targets in the catalog, a price band is available without a human round-trip via POST /api/v1/experiments/cost-estimate (requires_human_quote: false), and scoping is fast. Custom targets get a human quote, usually within 24 hours. Either way, the agent confirms via POST /api/v1/quotes/{id}/confirm and the experiment advances.
A separate orthogonal field, results_status, tracks data availability without coupling it to lifecycle position. It takes three values: none, partial, all. Agents poll the status endpoint cheaply, then fetch the full results bundle only when results_status advances. The convention is borrowed from the Adaptyv Foundry API so agents trained on that interface work with Ranomics with no re-learning.
What comes back
Results from a yeast display run return as structured JSON with signed download URLs for the bulky pieces.
{
"rounds": [
{
"round_id": "r1",
"sort_gate": "anti-HER2 PE positive, top 1 percent",
"input_diversity": 8421,
"output_diversity": 312
},
{
"round_id": "r2",
"sort_gate": "anti-HER2 PE positive, top 0.5 percent",
"input_diversity": 312,
"output_diversity": 47
}
],
"sequences": [
{
"user_key": "des_00417",
"sequence": "DIQMTQSPSSLSAS...",
"pre_count": 142,
"post_count": 8910,
"log2_enrichment": 5.97,
"percentile": 99.4,
"called_hit": true
}
],
"downloads": {
"enrichment_table_csv": "https://signed-url...",
"hits_fasta": "https://signed-url...",
"raw_reads_fastq": "https://signed-url..."
}
}
The agent now has a ranked, filtered shortlist. The natural next step is per-sequence biophysics on the top 50 to 200 hits. That step is well served by per-sequence kinetics vendors. Ranomics is upstream of that work, not in competition with it.
Where Ranomics sits in the agentic stack
The funnel an agent should run, in order:
- Computational design: RFdiffusion, ProteinMPNN, ESMFold, complex prediction.
- Library-scale wet-lab triage: Ranomics Platform API. Yeast or mammalian display, NGS readout. Input 10^3 to 10^5 candidates, output 50 to 200 enriched hits.
- Per-sequence kinetics: BLI, SPR, MST on the enriched hits. Output 5 to 20 candidates with full kinetic constants.
- In vivo or developability assessment as a separate downstream step.
Step 2 is where the order-of-magnitude reduction in candidate count happens. Per-sequence kinetics on 10,000 sequences is infeasible at reasonable cost. Library-scale triage at the same step is routine and economic. The unit economics differ because the cost components are different: library synthesis, sort gate time, NGS run, not per-sequence assay.
Access
The Platform API is in private alpha. The fastest path to a working integration is to request an API key at tools.ranomics.com/account/api-keys and read the full reference at /platform and /platform/reference. Quickstart at /platform/quickstart walks through a complete curl and Python session.
For agents driving custom targets, the workflow is: submit, hold for human scoping, accept the quote, then poll or wait for the webhook. For agents driving high-volume work against the calibrated catalog (HER2, PD-L1, CD3 ECD, and a small starting set), expect instant cost estimates and direct progression to library construction.
Submit candidates now: request an API key at tools.ranomics.com/account/api-keys, then call /platform/quickstart end to end.
Related Ranomics services
- Platform API: Full overview of the API surface, what it accepts, and what it returns.
- Yeast display platform: Detail on the library-scale display tier the API is built on top of.
- ProteinMPNN tool: Web tool for sequence design, the most common upstream step before submitting to the Platform API.