Science API Guide
Cheminformatics endpoints for validation, normalization, similarity scoring, and substructure matching — built for pipelines and AI agents.
https://api.creatornode.io/scienceWhat is the Science API?
The Science API focuses on cheminformatics: parsing and normalizing chemical notation, validating inputs, and comparing molecules with RDKit.
- Chemistry Validate — validate SMILES, InChI, or Molfile and return canonical outputs.
- Chemistry Compare — identity checks, similarity scoring (Tanimoto), and substructure relationships.
🧬 RDKit-powered
Canonical SMILES, Morgan fingerprints, Tanimoto similarity, and substructure matching — without installing RDKit locally.
⚡ Fast + deterministic
Designed for pipelines: stable outputs, predictable error handling, and millisecond-scale parsing/compare for typical molecules.
🧱 Pipeline-safe errors
Invalid molecules return HTTP 200 with structured parse/validation info — no crashes for expected bad inputs.
🔑 Free Tier
20 requests/day with no API key required. Add an API key to unlock higher limits and premium modes.
Endpoints
Click an endpoint to see the full guide — examples, tips & tricks, and limits.
Credit Costs
Science APICheminformatics endpoints (RDKit)
| Endpoint | Cost | Description | |
|---|---|---|---|
/science/v1/chemistry/validate | 1 credit | Validate chemical notation (SMILES, InChI, Molfile) and return normalized outputs. | Full guide → |
/science/v1/chemistry/compare | 3 credits | Compare two molecules for identity, similarity, and substructure matching. | Full guide → |
See the Pricing page for credit packages and tier comparison.
Usage Example
Validate → Compare workflow
Validate both molecules first, then compare for identity or similarity:
// Node.js example
const headers = {
'Content-Type': 'application/json',
'X-API-Key': process.env.CREATORNODE_KEY,
};
// Step 1: Validate each molecule
const a = await fetch('https://api.creatornode.io/science/v1/chemistry/validate', {
method: 'POST', headers,
body: JSON.stringify({ input: 'CC(=O)Oc1ccccc1C(=O)O' }),
}).then(r => r.json());
const b = await fetch('https://api.creatornode.io/science/v1/chemistry/validate', {
method: 'POST', headers,
body: JSON.stringify({ input: 'OC(=O)c1ccccc1O' }),
}).then(r => r.json());
if (!a.data?.valid || !b.data?.valid) {
throw new Error('One molecule is invalid');
}
// Step 2: Compare
const cmp = await fetch('https://api.creatornode.io/science/v1/chemistry/compare', {
method: 'POST', headers,
body: JSON.stringify({
molecules: [{ input: a.data.canonicalSmiles }, { input: b.data.canonicalSmiles }],
mode: 'similarity',
}),
}).then(r => r.json());
console.log('Tanimoto:', cmp.data?.similarity?.tanimoto);
console.log('Interpretation:', cmp.data?.similarity?.interpretation);