Get patient token
Mints a short-lived JWT scoped to one patient (default ~15 minutes).
POST
/
v1
/
auth
/
token
import olira
olira.init(api_key="YOUR_API_KEY")
tok = olira.get_patient_token(patient_id="8a4fde23-0f1b-4c2a-9d7e-b36c1a5f0e82")
print(tok.access_token[:20], "…", tok.expires_in)
using Olira;
OliraModule.Init(apiKey: "YOUR_API_KEY");
var tok = OliraModule.GetPatientToken(patientId: "8a4fde23-0f1b-4c2a-9d7e-b36c1a5f0e82");
Console.WriteLine($"{tok.AccessToken[..20]}… expires_in={tok.ExpiresIn}");
POST /v1/auth/token
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"patient_id": "8a4fde23-0f1b-4c2a-9d7e-b36c1a5f0e82"
}
PatientToken(
access_token="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…",
token_type="bearer",
expires_in=900,
scopes=["sdk:state-read", "sdk:event-log"],
)
{
"error": true,
"status_code": 401,
"error_type": "authentication_error",
"message": "Could not validate credentials",
"details": [
{
"type": "authentication_error",
"message": "Could not validate credentials"
}
],
"timestamp": "2026-05-06T12:00:00+00:00"
}
{
"error": true,
"status_code": 403,
"error_type": "authorization_error",
"message": "Insufficient OAuth scope for this endpoint",
"details": [
{
"type": "authorization_error",
"message": "Insufficient OAuth scope for this endpoint"
}
],
"timestamp": "2026-05-06T12:00:00+00:00"
}
{
"error": true,
"status_code": 404,
"error_type": "not_found_error",
"message": "Patient not found",
"details": [
{
"type": "not_found_error",
"message": "Patient not found"
}
],
"timestamp": "2026-05-06T12:00:00+00:00"
}
{
"error": true,
"status_code": 422,
"error_type": "validation_error",
"message": "Request validation failed (1 error)",
"details": [
{
"type": "missing",
"message": "Field required",
"field": "patient_id",
"location": ["body", "patient_id"],
"input_value": null
}
],
"timestamp": "2026-05-06T12:00:00+00:00"
}
{
"error": true,
"status_code": 429,
"error_type": "server_error",
"message": "Rate limit exceeded",
"details": [
{
"type": "rate_limit",
"message": "Too many requests; retry after backoff"
}
],
"timestamp": "2026-05-06T12:00:00+00:00"
}
{
"error": true,
"status_code": 500,
"error_type": "internal_server_error",
"message": "An internal server error occurred",
"details": [
{
"type": "internal_server_error",
"message": "An unexpected error occurred while processing your request"
}
],
"timestamp": "2026-05-06T12:00:00+00:00"
}
olira.get_patient_token(patient_id: str) -> PatientToken
OliraModule.GetPatientToken(string patientId) // -> PatientToken
sdk:patient-token
Use as Bearer token with the Patient State MCP server.
Parameters
str
required
Olira patient id to lock the token to.
Returns
PatientToken
str
JWT string.
str
Typically “bearer”.
int
Lifetime in seconds.
list[str]
Granted OAuth scopes for this token.
Raises
| Exception | When |
|---|---|
AuthError | HTTP 401 or 403 — invalid API key or insufficient OAuth scope for this endpoint. |
ValidationError | HTTP 400, 404, or 422 — malformed JSON, unknown patient, or validation failure (message includes response excerpt). |
ServerError | HTTP 409 (e.g. conflicting external identifier) or repeated 5xx after retries; includes status_code when applicable. |
RateLimitError | HTTP 429 — rate limited; check retry_after (seconds). |
NetworkError | Connection timeout, DNS failure, or read error after retries. |
import olira
olira.init(api_key="YOUR_API_KEY")
tok = olira.get_patient_token(patient_id="8a4fde23-0f1b-4c2a-9d7e-b36c1a5f0e82")
print(tok.access_token[:20], "…", tok.expires_in)
using Olira;
OliraModule.Init(apiKey: "YOUR_API_KEY");
var tok = OliraModule.GetPatientToken(patientId: "8a4fde23-0f1b-4c2a-9d7e-b36c1a5f0e82");
Console.WriteLine($"{tok.AccessToken[..20]}… expires_in={tok.ExpiresIn}");
POST /v1/auth/token
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"patient_id": "8a4fde23-0f1b-4c2a-9d7e-b36c1a5f0e82"
}
PatientToken(
access_token="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…",
token_type="bearer",
expires_in=900,
scopes=["sdk:state-read", "sdk:event-log"],
)
{
"error": true,
"status_code": 401,
"error_type": "authentication_error",
"message": "Could not validate credentials",
"details": [
{
"type": "authentication_error",
"message": "Could not validate credentials"
}
],
"timestamp": "2026-05-06T12:00:00+00:00"
}
{
"error": true,
"status_code": 403,
"error_type": "authorization_error",
"message": "Insufficient OAuth scope for this endpoint",
"details": [
{
"type": "authorization_error",
"message": "Insufficient OAuth scope for this endpoint"
}
],
"timestamp": "2026-05-06T12:00:00+00:00"
}
{
"error": true,
"status_code": 404,
"error_type": "not_found_error",
"message": "Patient not found",
"details": [
{
"type": "not_found_error",
"message": "Patient not found"
}
],
"timestamp": "2026-05-06T12:00:00+00:00"
}
{
"error": true,
"status_code": 422,
"error_type": "validation_error",
"message": "Request validation failed (1 error)",
"details": [
{
"type": "missing",
"message": "Field required",
"field": "patient_id",
"location": ["body", "patient_id"],
"input_value": null
}
],
"timestamp": "2026-05-06T12:00:00+00:00"
}
{
"error": true,
"status_code": 429,
"error_type": "server_error",
"message": "Rate limit exceeded",
"details": [
{
"type": "rate_limit",
"message": "Too many requests; retry after backoff"
}
],
"timestamp": "2026-05-06T12:00:00+00:00"
}
{
"error": true,
"status_code": 500,
"error_type": "internal_server_error",
"message": "An internal server error occurred",
"details": [
{
"type": "internal_server_error",
"message": "An unexpected error occurred while processing your request"
}
],
"timestamp": "2026-05-06T12:00:00+00:00"
}
⌘I
import olira
olira.init(api_key="YOUR_API_KEY")
tok = olira.get_patient_token(patient_id="8a4fde23-0f1b-4c2a-9d7e-b36c1a5f0e82")
print(tok.access_token[:20], "…", tok.expires_in)
using Olira;
OliraModule.Init(apiKey: "YOUR_API_KEY");
var tok = OliraModule.GetPatientToken(patientId: "8a4fde23-0f1b-4c2a-9d7e-b36c1a5f0e82");
Console.WriteLine($"{tok.AccessToken[..20]}… expires_in={tok.ExpiresIn}");
POST /v1/auth/token
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"patient_id": "8a4fde23-0f1b-4c2a-9d7e-b36c1a5f0e82"
}
PatientToken(
access_token="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…",
token_type="bearer",
expires_in=900,
scopes=["sdk:state-read", "sdk:event-log"],
)
{
"error": true,
"status_code": 401,
"error_type": "authentication_error",
"message": "Could not validate credentials",
"details": [
{
"type": "authentication_error",
"message": "Could not validate credentials"
}
],
"timestamp": "2026-05-06T12:00:00+00:00"
}
{
"error": true,
"status_code": 403,
"error_type": "authorization_error",
"message": "Insufficient OAuth scope for this endpoint",
"details": [
{
"type": "authorization_error",
"message": "Insufficient OAuth scope for this endpoint"
}
],
"timestamp": "2026-05-06T12:00:00+00:00"
}
{
"error": true,
"status_code": 404,
"error_type": "not_found_error",
"message": "Patient not found",
"details": [
{
"type": "not_found_error",
"message": "Patient not found"
}
],
"timestamp": "2026-05-06T12:00:00+00:00"
}
{
"error": true,
"status_code": 422,
"error_type": "validation_error",
"message": "Request validation failed (1 error)",
"details": [
{
"type": "missing",
"message": "Field required",
"field": "patient_id",
"location": ["body", "patient_id"],
"input_value": null
}
],
"timestamp": "2026-05-06T12:00:00+00:00"
}
{
"error": true,
"status_code": 429,
"error_type": "server_error",
"message": "Rate limit exceeded",
"details": [
{
"type": "rate_limit",
"message": "Too many requests; retry after backoff"
}
],
"timestamp": "2026-05-06T12:00:00+00:00"
}
{
"error": true,
"status_code": 500,
"error_type": "internal_server_error",
"message": "An internal server error occurred",
"details": [
{
"type": "internal_server_error",
"message": "An unexpected error occurred while processing your request"
}
],
"timestamp": "2026-05-06T12:00:00+00:00"
}

