OHMOHM Studio

Quickstart

Your first OHM extraction in five minutes.

View as Markdown

Quickstart

By the end of this page you'll have a published Studio API, a test-mode API key, and a working curl and JavaScript call returning structured clinical JSON.

Time: ~5 minutes.

Sign in to Studio

Open studio.ohm.doctor and log in with your OHM admin account. Studio uses the same JWT auth as the rest of OHM — no extra setup.

Create a project

A project groups related APIs and keys. Click + New project, name it (triage-demo), and pick a slug.

Create your first API

Click + New API. Pick a starter — OPD Prescription is a good baseline. The Builder opens with seven tabs: Builder, Prompt, Inputs, Insights, Playground, API call, Logs, Versions, Settings.

Click Publish. The status pill flips to PUBLISHED — your API is now callable.

Mint a key

From the sidebar pick All keys+ New key. Choose:

  • Test mode (ohms_test_*) — safe in mobile bundles, allowed for local dev.
  • Live mode (ohms_live_*) — server-side only.

The key is shown ONCE

The plaintext key appears in a reveal modal exactly once — there is no "show again" button afterwards (we only store the bcrypt hash). Copy it immediately to your password manager and save it to a .env file in the project you're about to call from. If you close the modal without copying, the key is unrecoverable — mint a new one.

Save it to your project's .env. Add the hospital's API URL too — OHM is hospital-deployed (see Versions) so the API URL is per-customer, not a single global SaaS endpoint:

# .env (add to .gitignore)
OHM_API_KEY=ohms_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
OHM_API_URL=https://api.ohm.doctor          # OHM's demo hospital
# Or for a production hospital integration:
# OHM_API_URL=https://api.<hospital>.example

Then load it in your shell so the cURL example below picks it up:

export $(grep -v '^#' .env | xargs)
echo $OHM_API_KEY                               # should print your key
echo $OHM_API_URL                               # should print the hospital URL

Call your API

curl -X POST "$OHM_API_URL/api/studio/v1/extract/triage-demo" \
  -H "Authorization: Bearer $OHM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Patient is 35yo male, fever 3 days, BP 130/85, HR 92, temp 38.6°C. Started on paracetamol 650mg TDS for 5 days."
  }'

If you see { "error": "...", "code": "..." }, jump to Troubleshooting — the page maps every status code to the most likely fix.

npm install @ohm_studio/sdk
import { OHM } from "@ohm_studio/sdk";

const ohm = new OHM({ apiKey: process.env.OHM_API_KEY! });
const { data } = await ohm.extract({
  apiSlug: "triage-demo",
  text: transcript,
});
npm install @ohm_studio/sdk-react-native
import { OHM } from "@ohm_studio/sdk-react-native";

const ohm = new OHM({
  apiKey: TEST_KEY,                   // ohms_test_*
  acknowledgeBundledKey: true,         // dev-only override
});

const { transcript, data } = await ohm.audio.extract({
  apiSlug: "triage-demo",
  file: { uri: localUri, name: "rec.m4a", type: "audio/mp4" },
});

You should get back JSON like:

{
  "data": {
    "vitals": { "bp": { "systolic": 130, "diastolic": 85 }, "hr": 92, "temp": 38.6 },
    "diagnoses": [{ "name": "Fever", "status": "active" }],
    "medications": [
      { "name": "Paracetamol", "dosage": "650mg", "frequency": "TDS", "duration": "5 days" }
    ]
  },
  "apiSlug": "triage-demo"
}

Live keys never ship in mobile bundles

ohms_live_* keys must stay on your backend. The RN SDK refuses to initialise with a live key unless you pass acknowledgeBundledKey: true, and that's a dev-only escape hatch. Read API key handling.

What's next