Molecule Fulfillment
Search OnePot-backed availability, quote provider-backed Molecule Fulfillment, create invoice-backed orders, and inspect fulfillment orders through the Om API.
Molecule Fulfillment routes are OnePot-backed and user-scoped. Search is for availability exploration; quote and invoice creation perform strict provider validation before any payment state is created. Provider-backed availability, pricing, quote, and status information can change. Om facilitates these workflows and strives to work with reputable providers, but Om does not guarantee provider availability, exact match, synthesis success, identity, purity, yield, delivery timing, regulatory suitability, fitness for intended use, or downstream experimental results. Consult the applicable provider's documentation, specifications, terms, and compliance guidance for provider-specific claims.
/v2/molecules/fulfillment/pricingFulfillment Pricing
Return the current plan-specific Molecule Fulfillment price and provider policy.
curl -G https://api.omtx.ai/v2/molecules/fulfillment/pricing \
-H "x-api-key: YOUR_API_KEY"{
"usage_type": "molecule_fulfillment_standard",
"plan_key": "team",
"fulfillment_type": "standard",
"provider": "onepot",
"unit_price_cents": 100,
"base_unit_price_cents": 100,
"currency": "usd",
"max_provider_price_usd": 25.0,
"max_supplier_risk": "medium",
"max_chemistry_risk": "medium"
}/v2/molecules/searchSearch Molecules
Search OnePot for candidate molecule matches. Quote and invoice creation still decide final orderability.
curl -X POST https://api.omtx.ai/v2/molecules/search \
-H "x-api-key: YOUR_API_KEY" \
-H "Idempotency-Key: molecule-search-demo-001" \
-H "Content-Type: application/json" \
-d '{
"smiles_list": ["CC(=O)Oc1ccccc1C(=O)O"],
"max_results": 5,
"substructure_search": false,
"max_depth": 1,
"include_chemistry_risk": true,
"include_chemistry_risk_score": true,
"max_price": 25.0,
"max_supplier_risk": "medium",
"max_chemistry_risk": "medium"
}'{
"provider": "onepot",
"response": {
"results": []
}
}smiles_listaccepts 1 to 100 SMILES strings.max_resultsaccepts 1 to 100.max_depthis currently fixed to1.max_supplier_riskandmax_chemistry_riskacceptlow,medium, orhigh.- Search results are availability exploration only; quote and order workflows decide final orderability.
/v2/molecules/quoteQuote Molecules
Quote exact-match Molecule Fulfillment after strict provider validation.
curl -X POST https://api.omtx.ai/v2/molecules/quote \
-H "x-api-key: YOUR_API_KEY" \
-H "Idempotency-Key: molecule-quote-demo-001" \
-H "Content-Type: application/json" \
-d '{
"items": [
{
"smiles": "CC(=O)Oc1ccccc1C(=O)O",
"quantity": 1,
"name": "aspirin"
}
]
}'{
"usage_type": "molecule_fulfillment_standard",
"plan_key": "team",
"fulfillment_type": "standard",
"provider": "onepot",
"unit_price_cents": 100,
"base_unit_price_cents": 100,
"currency": "usd",
"molecule_count": 1,
"total_amount_cents": 100,
"items": [],
"provider_search_response": {}
}itemsaccepts 1 to 1000 line items.- Each item requires
smiles;quantitydefaults to1and accepts 1 to 1000. nameis optional and limited to 200 characters.
/v2/molecules/fulfillment/checkoutInvoice Molecules
Create an invoice for exact-match Molecule Fulfillment.
curl -X POST https://api.omtx.ai/v2/molecules/fulfillment/checkout \
-H "x-api-key: YOUR_API_KEY" \
-H "Idempotency-Key: molecule-checkout-demo-001" \
-H "Content-Type: application/json" \
-d '{
"items": [
{
"smiles": "CC(=O)Oc1ccccc1C(=O)O",
"quantity": 1,
"name": "aspirin"
}
],
"shipping_address_id": "addr_123"
}'{
"url": "https://app.omtx.ai/?molecule_fulfillment=invoice-sent&session_id=mf_invoice_123",
"session_id": "mf_invoice_123",
"order_number": "MF-20260527-ABC123EF",
"payment_mode": "pay_invoice",
"invoice_id": "in_123",
"hosted_invoice_url": "https://invoice.stripe.com/i/acct_123/inv_123",
"molecule_count": 1,
"total_amount_cents": 100,
"provider": "onepot"
}- Public API Molecule Fulfillment is invoice-only. Card checkout is not exposed through API keys, MCP, or SDK.
shipping_address_idmust reference a saved shipping address for the user.
/v2/molecules/fulfillment/ordersList Orders
List recent Molecule Fulfillment orders for the authenticated user.
curl -G https://api.omtx.ai/v2/molecules/fulfillment/orders \
-H "x-api-key: YOUR_API_KEY" \
--data-urlencode "limit=20"{
"orders": [],
"count": 0
}limitaccepts 1 to 100 and defaults to 20.
/v2/molecules/fulfillment/order-statusOrder Status
Retrieve one Molecule Fulfillment order with provider and billing history.
curl -G https://api.omtx.ai/v2/molecules/fulfillment/order-status \
-H "x-api-key: YOUR_API_KEY" \
--data-urlencode "order_number=MF-20260527-ABC123EF"{
"order": {
"order_number": "MF-20260527-ABC123EF",
"status": "pending_provider_submission",
"provider": "onepot"
}
}Python SDK
from omtx import OmClient
with OmClient(api_key="YOUR_API_KEY") as client:
pricing = client.molecules.pricing()
hits = client.molecules.search(
smiles_list=["CC(=O)Oc1ccccc1C(=O)O"],
max_results=5,
)
quote = client.molecules.quote(
items=[{"smiles": "CC(=O)Oc1ccccc1C(=O)O", "quantity": 1}],
)
invoice = client.molecules.checkout(
items=[{"smiles": "CC(=O)Oc1ccccc1C(=O)O", "quantity": 1}],
shipping_address_id="addr_123",
)
print(pricing["provider"], quote["total_amount_cents"], invoice["order_number"])Access and data boundaries
- Molecule Fulfillment does not expose Generated Data shards.
- Provider matching and orderability checks are performed by Gateway and Wallet services.
- Provider-backed fulfillment does not grant raw Om Data, Generated Data, model weights, or broader platform rights.
- The SDK molecule namespace is a thin wrapper over the canonical
/v2/molecules/*routes.