📖Looking for the full technical specification? Science API Reference →

Science API Guide

Cheminformatics endpoints for validation, normalization, similarity scoring, and substructure matching — built for pipelines and AI agents.

Base URLhttps://api.creatornode.io/science

What is the Science API?

The Science API focuses on cheminformatics: parsing and normalizing chemical notation, validating inputs, and comparing molecules with RDKit.

  1. Chemistry Validate — validate SMILES, InChI, or Molfile and return canonical outputs.
  2. 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)
EndpointCostDescription
/science/v1/chemistry/validate1 creditValidate chemical notation (SMILES, InChI, Molfile) and return normalized outputs.Full guide →
/science/v1/chemistry/compare3 creditsCompare 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);