Getting Started
Bring a protein sequence, score Om Accessible Space, and order selected molecules with Wallet Credits.
2-Step Setup
1
Get your API key
Open your dashboard and create an API key.
# Keep secrets out of git
export OMTX_API_KEY="omtx_..."2
Make your first request
Verify the key works by listing Generated Data available to your account.
curl https://api.omtx.ai/v2/datasets/catalog \
-H "x-api-key: YOUR_API_KEY"First molecule workflow
Score Om Accessible Space and order hitsPython
from pathlib import Path
from uuid import uuid4
import polars as pl
from omtx import OmClient
JAK2_V617F_SEQUENCE = "YOUR_JAK2_V617F_PROTEIN_SEQUENCE"
with OmClient(api_key="YOUR_API_KEY") as client:
job = client.lula2.score(
protein_sequence=JAK2_V617F_SEQUENCE,
source="om",
tier=50,
n=50_000,
top_k=10_000,
idempotency_key="jak2-v617f-lula2-r1",
)
artifact_paths = []
result_dir = Path("outputs/jak2-v617f-lula2-r1")
for job_id in job["job_ids"]:
client.jobs.wait(job_id, poll_interval=5, timeout=3600)
artifact_paths.extend(
client.jobs.download_all_artifacts(
job_id,
output_dir=result_dir / job_id,
overwrite=True,
)
)
score_tables = [
pl.read_parquet(path)
for path in artifact_paths
if path.name == "top_hits.parquet"
]
score_rows = pl.concat(score_tables).sort("score", descending=True)
selected_hits = score_rows.head(100).to_dicts()
addresses = client.molecules.shipping_addresses()
order = client.molecules.order(
items=selected_hits,
shipping_address_id=addresses["default_shipping_address_id"],
idempotency_key=f"jak2-v617f-round-1-{uuid4()}",
)
print("Selected hits:", len(selected_hits))
print("Molecule order:", order["order_number"])Fund Wallet Credits before placing molecule orders. For Om Accessible Space, selected LULA score rows already include fixed Wallet Credit costs and order metadata, so you can order the rows directly without choosing a vendor or requesting a quote.
Use /v2/health for a public smoke check, and add idempotency keys on POST requests (see Idempotency) to safely retry without duplicate launches.