GraphiteGraphite by Augsidius
Get started

Quickstart

Make your first calls in about five minutes.

1. Create an account and a key

Sign up in Graphite. We create an organisation, a Default project and a sandbox key for you. The key is shown once — copy it into a secret manager or environment variable.

cURL
export AUGSIDIUS_API_KEY="aug_test_..."

Sandbox keys start with aug_test_, production keys with aug_live_. Sandbox is free and rate-limited; production needs a paid plan. When creating a key, tick the scopes for the models you want: agents:evidence_qa, agents:extract, agents:care_model, cds_hooks. See Authentication & keys.

2. Ask a clinical question

cURL
curl https://api.augsidius.care/v1/chat/completions \
  -H "Authorization: Bearer $AUGSIDIUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "aug-evidence-qa",
       "messages": [{"role": "user", "content": "Can metformin be continued at eGFR 25?"}]}'

The answer is in choices[0].message.content, with [n] markers; the sources are in choices[0].message.augsidius.citations. See Evidence Q&A.

3. Get decision cards for a case

cURL
curl https://api.augsidius.care/v1/chat/completions \
  -H "Authorization: Bearer $AUGSIDIUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "aug-cds",
       "messages": [{"role": "user", "content": "58M, T2DM on metformin. Fever 39.2, severe headache, neck stiffness, no rash. eGFR 25. Plan: ibuprofen 400 mg TDS."}]}'

message.content is JSONL — one card per line. Each card has a summary, an indicator (critical, warning, info), a markdown detail, suggestions and its sources. See Decision cards.

4. Follow the case with the care model

Stream the care model and print each line as it arrives:

Python
import json, os
from openai import OpenAI

client = OpenAI(base_url="https://api.augsidius.care/v1", api_key=os.environ["AUGSIDIUS_API_KEY"])

def run(text, session_id=None):
    stream = client.chat.completions.create(
        model="aug-care-model", stream=True,
        messages=[{"role": "user", "content": text}],
        extra_body={"augsidius": {"session_id": session_id}} if session_id else None,
    )
    for chunk in stream:
        if chunk.choices and chunk.choices[0].delta.content and chunk.choices[0].delta.content.strip():
            item = json.loads(chunk.choices[0].delta.content)
            if item["object"] == "care_model.session":
                session_id = item["session_id"]
            elif item["object"] == "care_model.action":
                print(item["rank"], item["label"], "(rules out emergency)" if item["rules_out_emergency"] else "")
    return session_id

sid = run("58M, fever 39.2 for 2 days, severe headache, neck stiffness, no rash.")
# ... the clinician asks and examines ...
run("Photophobia present. Kernig's sign negative.", sid)

The second call adds to the same session, so conditions and next best actions re-rank. See Care models.

5. Structure a note

cURL
curl https://api.augsidius.care/v1/chat/completions \
  -H "Authorization: Bearer $AUGSIDIUS_API_KEY" -H "Content-Type: application/json" \
  -d '{"model": "aug-extract", "messages": [{"role": "user", "content": "K/c/o HTN on amlodipine 5 OD. C/o burning micturition x 2 days, no fever."}]}'

Each line is an entity with its text span, present / absent, values, concept and codes. See Clinical entity extraction.

Where next