CHEESESearch API

Legacy public endpoints

Existing-customer reference for the legacy CHEESE API; use API v2 for new integrations.

Suggest an edit

All examples assume the setup from the overview (MY_URL, API_KEY, headers). Every request must include the X-API-Key: your_api_key_here header.

GET /test — Health Check

Verify the API is running and accessible.

response = requests.get(MY_URL + "/test", headers=headers)
# {"message": "Health check successful !!"}

GET /available_dbs — List Available Databases

Returns the list of searchable molecular databases.

response = requests.get(MY_URL + "/available_dbs", headers=headers)

Available databases: ZINC15, ENAMINE-REAL, MCULE-FULL, MCULE-IN-STOCK, SYNPLE, ENAMINE-CARBOXYLIC, EXPLORE-ENUMERATED, EXPLORE-DIVERSE, CHEMRIYA.

GET /random_molecule — Random Molecules

Returns random molecules in SMILES format from available databases.

params = {"n_mols": 5}
response = requests.get(MY_URL + "/random_molecule",
    headers=headers, params=params)

Basic molecular similarity search. Returns a list of SMILES strings and database IDs of similar molecules.

params = {
    "search_input": "CC(=O)Oc1ccccc1C(=O)O",
    "search_type": "espsim_shape",
    "n_neighbors": 5,
    "search_quality": "fast",
    "db_names": ["ENAMINE-REAL"],
}

response = requests.get(MY_URL + "/molsearch_simple",
    params=params, headers=headers)

GET /molsearch_array — Search Multiple Molecules

Search for multiple query molecules at once. Returns results keyed by input SMILES.

params = {
    "search_input": ["CC1=CN(C)N=C1", "CNC1=CC=CC=C1"],
    "search_type": "espsim_shape",
    "n_neighbors": 5,
    "search_quality": "fast",
    "db_names": "ZINC15",
}

response = requests.get(MY_URL + "/molsearch_array",
    params=params, headers=headers)

Search multiple molecules in batch or centroid mode for consensus results.

params = {
    "search_input": ["SMILES1", "SMILES2", "SMILES3"],
    "search_type": "espsim_shape",
    "n_neighbors": 10,
    "search_mode": "batch",  # or "centroid"
}

response = requests.get(MY_URL + "/batch_search",
    params=params, headers=headers)

GET /molsearch — Advanced Search (Main Endpoint)

Full-featured molecular search with descriptors, predicted properties, and Morgan Tanimoto similarities.

Parameters

ParameterTypeDescription
search_inputstrSMILES string of the query molecule
db_namesList[str]Databases to search (e.g. ["ZINC15", "ENAMINE-REAL"])
search_typestrmorgan, espsim_electrostatic, espsim_shape, active_pairs
search_qualitystrfast, accurate, very_accurate
n_neighborsintNumber of neighbors to retrieve
descriptorsboolWhether to include molecular descriptors
propertiesboolWhether to include predicted ADMET properties
filter_moleculesboolApply molecular filters (e.g. 'No solvents')
order_moleculesboolWhether to order results
filteringList[str]Filters: 'PAINS', 'Murcko scaffold hop' (optional)
orderingList[str]Ordering: 'Morgan Tanimoto' (optional)
params = {
    "search_input": "CC(=O)Oc1ccccc1C(=O)O",
    "search_type": "espsim_shape",
    "n_neighbors": 5,
    "search_quality": "fast",
    "db_names": ["ZINC15"],
    "descriptors": True,
    "properties": True,
    "filter_molecules": False,
    "order_molecules": False,
}

response = requests.get(MY_URL + "/molsearch",
    params=params, headers=headers)

Response structure

The response JSON contains:

  • neighbors — List of similar molecules with SMILES, database IDs, embedding distances, properties
  • query_properties — Descriptors and predicted properties of the query molecule
  • search_info — Timing details (embedding, search, filter, sorting, total time)

Predicted properties

CategoryProperties
Absorptioncaco2_wang, lipophilicity, solubility, bioavailability, HIA, Pgp, cLogP
DistributionPPBR, VDss, BBB penetration
MetabolismCYP2C9, CYP2D6, CYP3A4 inhibition
ExcretionHepatocyte clearance, microsome clearance, half-life
ToxicityLD50, AMES mutagenicity, DILI, hERG liability
BasicsMW, formal charge, heavy atoms, HBA, HBD, rotatable bonds, rings, TPSA

GET /molsearch — With Filtering & Ordering

Filter out PAINS, enforce scaffold hops, and sort results by Morgan Tanimoto similarity.

params = {
    "search_input": "CC(=O)Oc1ccccc1C(=O)O",
    "search_type": "espsim_shape",
    "n_neighbors": 10,
    "search_quality": "fast",
    "db_names": ["ZINC15"],
    "descriptors": True, "properties": True,
    "filter_molecules": True,
    "order_molecules": True,
    "filtering": ["PAINS", "Murcko scaffold hop"],
    "ordering": ["Morgan Tanimoto"],
}

response = requests.get(MY_URL + "/molsearch",
    params=params, headers=headers)

Filtering may reduce the number of results. Increase n_neighbors to compensate.

On this page