GraphiteGraphite by Augsidius
Using the API

Chat completions

POST /v1/chat/completions is the single entry point for every model. It follows the OpenAI Chat Completions format, so any OpenAI-compatible SDK works by changing the base URL and key. Augsidius-specific options go in one extra object, augsidius.

Models served today

Model What you send What you get back message.content Sessions
aug-evidence-qa A clinical question A cited answer Text with [n] citation markers No
aug-extract Clinical text Coded clinical entities JSONL, one entity per line No
aug-care-model A case summary and/or observations Observations, conditions, missing observations, next best actions JSONL, one item per line Yes
aug-cds A case summary Decision-support cards JSONL, one card per line No

Other models in the catalog return 501 not_available until they launch.

Request

JSON
{
  "model": "aug-care-model",
  "messages": [
    {"role": "user", "content": "58M, T2DM on metformin. 2 days fever 39.2, severe headache, neck stiffness, no rash. eGFR 25."}
  ],
  "stream": true,
  "stream_options": {"include_usage": true},
  "augsidius": {
    "session_id": "cc47ad4e8fb44713a00d9bf5b6b341ec",
    "observations": [{"text": "photophobia", "present": true}, {"concept_id": "c_3o53nio3rzmizyb3f2ra", "present": false}],
    "provider_scope": ["ask", "examine", "test"]
  }
}
Field Required Description
model yes One of the model ids above.
messages yes Standard chat messages. String content and [{"type": "text", "text": …}] content parts are both accepted. See How each model reads messages below.
stream no true streams the response. See Streaming & formats. Default false.
stream_options.include_usage no With stream: true, sends a final chunk carrying usage.
augsidius no Augsidius options (below). Also accepted as metadata.augsidius for SDKs that only pass metadata.
temperature, max_tokens, max_completion_tokens, user no Accepted for compatibility and ignored. Output size is fixed per model so results stay consistent.

How each model reads messages

Model Input
aug-evidence-qa The last user message is the question. Up to four earlier user/assistant turns are used only to resolve follow-ups ("and in pregnancy?").
aug-extract, aug-care-model, aug-cds All user messages, joined, are the clinical text. system and assistant messages are ignored.

The augsidius object

Field Models Description
session_id aug-care-model Continue an existing care-model session. Omit it to start a new one; the new id comes back in the response.
observations aug-care-model, aug-cds Structured observations in addition to, or instead of, text: {"text": "photophobia", "present": true} or {"concept_id": "c_…", "present": false}. Concept ids must be ones returned to your organisation. Up to 50 per call.
provider_scope aug-care-model, aug-cds Kinds of action your care team can perform: ask, examine, measure, test. Next best actions outside it are left out.

Response (stream: false)

JSON
{
  "id": "chatcmpl_9f2c…",
  "object": "chat.completion",
  "created": 1794226698,
  "model": "aug-care-model",
  "choices": [{
    "index": 0,
    "finish_reason": "stop",
    "message": {
      "role": "assistant",
      "content": "{\"object\":\"care_model.session\",…}\n{\"object\":\"care_model.observation\",…}\n…",
      "augsidius": {"session_id": "cc47ad4e…", "object": "care_model.summary", "billable_calls": 1, "…": "…"}
    }
  }],
  "usage": {"prompt_tokens": 41, "completion_tokens": 2810, "total_tokens": 2851, "augsidius_units": 20}
}
Field Description
message.content The result. For aug-evidence-qa, the answer text. For the other three, JSONL: one JSON object per line, each with an object field naming its type. Split on \n and parse each line.
message.refusal aug-evidence-qa only: set (and content is null) when the question is declined. See Evidence Q&A.
message.annotations aug-evidence-qa only: OpenAI-style url_citation annotations, one per [n] marker.
message.augsidius The summary object for the call (care_model.summary, cds.summary, extraction.summary, or the Q&A citations), plus session_id and billable_calls.
usage.prompt_tokens, usage.completion_tokens Size of your input and of the returned content (characters ÷ 4). Informational only.
usage.augsidius_units What this call costs. See Plans & billing.

Every response also carries x-request-id and x-ratelimit-* headers.

With the OpenAI SDK

from openai import OpenAI
import json

client = OpenAI(base_url="https://api.augsidius.care/v1", api_key="aug_live_…")

r = client.chat.completions.create(
    model="aug-cds",
    messages=[{"role": "user", "content": "58M on metformin and ibuprofen. Fever, headache, neck stiffness. eGFR 25."}],
)
for line in r.choices[0].message.content.splitlines():
    item = json.loads(line)
    if item["object"] == "cds.card":
        print(item["card"]["indicator"], item["card"]["summary"])

The augsidius field on the request is not in the OpenAI SDK's types: pass it with extra_body={"augsidius": {...}} (Python) or as an extra property (Node.js).