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.

GET/v2/molecules/fulfillment/pricing

Fulfillment Pricing

Return the current plan-specific Molecule Fulfillment price and provider policy.

cURL
curl -G https://api.omtx.ai/v2/molecules/fulfillment/pricing \
  -H "x-api-key: YOUR_API_KEY"
Response
{
  "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"
}
POST/v2/molecules/search

Search Molecules

Search OnePot for candidate molecule matches. Quote and invoice creation still decide final orderability.

cURL
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"
  }'
Response
{
  "provider": "onepot",
  "response": {
    "results": []
  }
}
  • smiles_list accepts 1 to 100 SMILES strings.
  • max_results accepts 1 to 100.
  • max_depth is currently fixed to 1.
  • max_supplier_risk and max_chemistry_risk accept low, medium, or high.
  • Search results are availability exploration only; quote and order workflows decide final orderability.
POST/v2/molecules/quote

Quote Molecules

Quote exact-match Molecule Fulfillment after strict provider validation.

cURL
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"
      }
    ]
  }'
Response
{
  "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": {}
}
  • items accepts 1 to 1000 line items.
  • Each item requires smiles; quantity defaults to 1 and accepts 1 to 1000.
  • name is optional and limited to 200 characters.
POST/v2/molecules/fulfillment/checkout

Invoice Molecules

Create an invoice for exact-match Molecule Fulfillment.

cURL
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"
  }'
Response
{
  "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_id must reference a saved shipping address for the user.
GET/v2/molecules/fulfillment/orders

List Orders

List recent Molecule Fulfillment orders for the authenticated user.

cURL
curl -G https://api.omtx.ai/v2/molecules/fulfillment/orders \
  -H "x-api-key: YOUR_API_KEY" \
  --data-urlencode "limit=20"
Response
{
  "orders": [],
  "count": 0
}
  • limit accepts 1 to 100 and defaults to 20.
GET/v2/molecules/fulfillment/order-status

Order Status

Retrieve one Molecule Fulfillment order with provider and billing history.

cURL
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"
Response
{
  "order": {
    "order_number": "MF-20260527-ABC123EF",
    "status": "pending_provider_submission",
    "provider": "onepot"
  }
}

Python SDK

Python
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.