COREDesignerAPI

Platform

onepot API

Search make-on-demand molecules, run feasibility scoring, design analogs, and place synthesis orders from your own pipeline — all available from a convenient Python client.

Similarity & substructure

Tanimoto similarity and SMILES/SMARTS substructure searching over the full onepot CORE compound space.

Retrosynthesis decomposition

Optional retrosynthetic decomposition with building-block filters, price thresholds, and synthesis risk caps.

Streaming progress

Server-sent events stream real-time progress and results as the search runs.

Order in one call

Send selected compounds back through the same client to get a synthesis quote.

Install

A small Python client wraps the REST API. Requires Python 3.11 or later.

shell
pip install onepot
# or, with uv
uv add onepot

Quickstart

Similarity search returns ranked analogs with similarity scores and instant prices.

python
from onepot import Client

client = Client(api_key="your-api-key")

resp = client.search(
    smiles_list=["c1ccc(NC(=O)c2ccccc2)cc1"],
    max_results=10,
)

for r in resp["queries"][0]["results"]:
    print(r["smiles"], r["similarity"], r["price_usd"])

Stream results

For long-running queries, stream progress events and results as they arrive.

python
from onepot import Client

client = Client(api_key="your-api-key")

# Live progress events as the search runs
for event in client.search_stream(
    smiles="c1ccc(NC(=O)c2ccccc2)cc1",
    max_results=50,
):
    if event["type"] == "progress":
        print(event["stage"], event["pct"])
    elif event["type"] == "result":
        r = event["compound"]
        print(r["smiles"], r["similarity"])

Retrosynthesis + filters

Decompose a target and filter the resulting hits by price, building-block availability, and route risk.

python
from onepot import Client

client = Client(api_key="your-api-key")

# Retrosynthetic decomposition + building-block filters
resp = client.search(
    smiles_list=["O=C(Nc1ccc(F)cc1)c1cccnc1"],
    decompose=True,
    max_results=25,
    max_price_usd=200,
    max_risk=0.3,
)

for r in resp["queries"][0]["results"]:
    print(r["smiles"], "from", len(r["building_blocks"]), "BBs")

Place an order

Pass a list of SMILES back through the same client to get a synthesis quote and a tracked order id.

python
from onepot import Client

client = Client(api_key="your-api-key")

# Submit selected compounds for synthesis quoting
order = client.order(
    smiles_list=[
        "Cc1ccc2c(C(=O)Nc3ncc(F)c(Cl)c3F)cc(-c3cccnc3)nc2c1C",
        "Fc1cc(CNc2ccnc(Oc3ccccc3)c2)c(F)cc1Br",
    ],
    email="you@example.com",
)
print(order["id"], order["status"])
Request API access