Skip to content
Get started

Viewer

ModelsExpand Collapse
Literal["incomplete", "complete"]

Viewer completion status for a study. ‘incomplete’ = not yet finished in the viewer, ‘complete’ = finished.

One of the following:
"incomplete"
"complete"

ViewerEphemeral Sessions

Create an ephemeral Viewer session
viewer.ephemeral_sessions.create(EphemeralSessionCreateParams**kwargs) -> EphemeralSessionCreateResponse
POST/v1/viewer/ephemeral-sessions
ModelsExpand Collapse
class EphemeralSessionCreateResponse:

Tokenized landing URL for an ephemeral Viewer session (30-second token).

url: str

ViewerStudies

Create a new study
viewer.studies.create(StudyCreateParams**kwargs) -> StudyCreateResponse
POST/v1/viewer/studies
List studies with pagination
viewer.studies.list(StudyListParams**kwargs) -> SyncCursorStudies[StudyListResponse]
GET/v1/viewer/studies
Retrieve a study by ID
viewer.studies.retrieve(strstudy_id) -> StudyRetrieveResponse
GET/v1/viewer/studies/{studyId}
Update a study
viewer.studies.update(strstudy_id, StudyUpdateParams**kwargs) -> StudyUpdateResponse
PATCH/v1/viewer/studies/{studyId}
Cancel a study
viewer.studies.cancel(StudyCancelParams**kwargs) -> StudyCancelResponse
POST/v1/viewer/studies/cancel
Uncancel a study
viewer.studies.uncancel(StudyUncancelParams**kwargs) -> StudyUncancelResponse
POST/v1/viewer/studies/uncancel
Generate a viewer reroute URL
viewer.studies.reroute_url(StudyRerouteURLParams**kwargs) -> StudyRerouteURLResponse
POST/v1/viewer/studies/reroute-url
Retrieve a study by DICOM UID
viewer.studies.retrieve_by_uid(strstudy_instance_uid) -> StudyRetrieveByUidResponse
GET/v1/viewer/studies/by-uid/{studyInstanceUid}
ModelsExpand Collapse
class StudyCreateResponse:

A study entity in the Viewer system with viewing status

cancelled_at: Optional[datetime]

Timestamp when the study was cancelled, null if not cancelled

formatdate-time
created_at: Optional[datetime]

Timestamp when the study was created

formatdate-time
is_cancelled: bool

Whether the study has been cancelled

severity: Severity

Priority level of a study. ‘normal’ for routine, ‘high’ for urgent, ‘stat’ for immediate attention.

One of the following:
"normal"
"high"
"stat"
study_description: str

Description of the study/scan (e.g., ‘Brain MRI with Contrast’, ‘Chest CT’)

minLength1
study_id: str

Unique study identifier. Format: stu_{32-hex-chars}

study_instance_uid: str

DICOM Study Instance UID. Must be a valid DICOM UID format (e.g., ‘1.2.840.10008.5.1.4.1.1.2’)

minLength1
study_viewer_status: StudyViewerStatus

Viewer completion status for a study. ‘incomplete’ = not yet finished in the viewer, ‘complete’ = finished.

One of the following:
"incomplete"
"complete"
updated_at: Optional[datetime]

Timestamp when the study was last updated

formatdate-time
assigned_to: Optional[UserReference]

A reference to a user with basic identifying information

email: str

User’s email address

user_id: str

Unique user identifier. Format: usr_{32-hex-chars}

first_name: Optional[str]

User’s first name

last_name: Optional[str]

User’s last name

middle_name: Optional[str]

User’s middle name

suffix1: Optional[str]

Name suffix (e.g., ‘MD’, ‘Jr.’)

suffix2: Optional[str]

Additional name suffix

created_by_api_key: Optional[APIKeyReference]

A reference to an API key with basic identifying information

api_key_id: str

Unique API key identifier (UUIDv4 format)

formatuuid
description: str

Human-readable description of the API key

minLength1
is_clinical_context_enrichment_enabled: Optional[bool]

Whether this API key has a clinical-context enrichment webhook configured

is_viewer_enabled: Optional[bool]

Whether this API key has access to the Viewer product

created_by_user: Optional[UserReference]

A reference to a user with basic identifying information

email: str

User’s email address

user_id: str

Unique user identifier. Format: usr_{32-hex-chars}

first_name: Optional[str]

User’s first name

last_name: Optional[str]

User’s last name

middle_name: Optional[str]

User’s middle name

suffix1: Optional[str]

Name suffix (e.g., ‘MD’, ‘Jr.’)

suffix2: Optional[str]

Additional name suffix

express_customer: Optional[ExpressCustomerReference]

A reference to an Express customer with basic identifying information

express_customer_id: str

Unique Express customer identifier. Format: cus_{32-hex-chars}

express_customer_name: str

Name of the Express customer

minLength1
metadata: Optional[Dict[str, str]]

Custom key-value metadata for the study. Maximum 50 pairs, keys up to 100 chars, values up to 1000 chars

class StudyListResponse:

A study entity in the Viewer system with viewing status

cancelled_at: Optional[datetime]

Timestamp when the study was cancelled, null if not cancelled

formatdate-time
created_at: Optional[datetime]

Timestamp when the study was created

formatdate-time
is_cancelled: bool

Whether the study has been cancelled

severity: Severity

Priority level of a study. ‘normal’ for routine, ‘high’ for urgent, ‘stat’ for immediate attention.

One of the following:
"normal"
"high"
"stat"
study_description: str

Description of the study/scan (e.g., ‘Brain MRI with Contrast’, ‘Chest CT’)

minLength1
study_id: str

Unique study identifier. Format: stu_{32-hex-chars}

study_instance_uid: str

DICOM Study Instance UID. Must be a valid DICOM UID format (e.g., ‘1.2.840.10008.5.1.4.1.1.2’)

minLength1
study_viewer_status: StudyViewerStatus

Viewer completion status for a study. ‘incomplete’ = not yet finished in the viewer, ‘complete’ = finished.

One of the following:
"incomplete"
"complete"
updated_at: Optional[datetime]

Timestamp when the study was last updated

formatdate-time
assigned_to: Optional[UserReference]

A reference to a user with basic identifying information

email: str

User’s email address

user_id: str

Unique user identifier. Format: usr_{32-hex-chars}

first_name: Optional[str]

User’s first name

last_name: Optional[str]

User’s last name

middle_name: Optional[str]

User’s middle name

suffix1: Optional[str]

Name suffix (e.g., ‘MD’, ‘Jr.’)

suffix2: Optional[str]

Additional name suffix

created_by_api_key: Optional[APIKeyReference]

A reference to an API key with basic identifying information

api_key_id: str

Unique API key identifier (UUIDv4 format)

formatuuid
description: str

Human-readable description of the API key

minLength1
is_clinical_context_enrichment_enabled: Optional[bool]

Whether this API key has a clinical-context enrichment webhook configured

is_viewer_enabled: Optional[bool]

Whether this API key has access to the Viewer product

created_by_user: Optional[UserReference]

A reference to a user with basic identifying information

email: str

User’s email address

user_id: str

Unique user identifier. Format: usr_{32-hex-chars}

first_name: Optional[str]

User’s first name

last_name: Optional[str]

User’s last name

middle_name: Optional[str]

User’s middle name

suffix1: Optional[str]

Name suffix (e.g., ‘MD’, ‘Jr.’)

suffix2: Optional[str]

Additional name suffix

express_customer: Optional[ExpressCustomerReference]

A reference to an Express customer with basic identifying information

express_customer_id: str

Unique Express customer identifier. Format: cus_{32-hex-chars}

express_customer_name: str

Name of the Express customer

minLength1
metadata: Optional[Dict[str, str]]

Custom key-value metadata for the study. Maximum 50 pairs, keys up to 100 chars, values up to 1000 chars

class StudyRetrieveResponse:

A study entity in the Viewer system with viewing status

cancelled_at: Optional[datetime]

Timestamp when the study was cancelled, null if not cancelled

formatdate-time
created_at: Optional[datetime]

Timestamp when the study was created

formatdate-time
is_cancelled: bool

Whether the study has been cancelled

severity: Severity

Priority level of a study. ‘normal’ for routine, ‘high’ for urgent, ‘stat’ for immediate attention.

One of the following:
"normal"
"high"
"stat"
study_description: str

Description of the study/scan (e.g., ‘Brain MRI with Contrast’, ‘Chest CT’)

minLength1
study_id: str

Unique study identifier. Format: stu_{32-hex-chars}

study_instance_uid: str

DICOM Study Instance UID. Must be a valid DICOM UID format (e.g., ‘1.2.840.10008.5.1.4.1.1.2’)

minLength1
study_viewer_status: StudyViewerStatus

Viewer completion status for a study. ‘incomplete’ = not yet finished in the viewer, ‘complete’ = finished.

One of the following:
"incomplete"
"complete"
updated_at: Optional[datetime]

Timestamp when the study was last updated

formatdate-time
assigned_to: Optional[UserReference]

A reference to a user with basic identifying information

email: str

User’s email address

user_id: str

Unique user identifier. Format: usr_{32-hex-chars}

first_name: Optional[str]

User’s first name

last_name: Optional[str]

User’s last name

middle_name: Optional[str]

User’s middle name

suffix1: Optional[str]

Name suffix (e.g., ‘MD’, ‘Jr.’)

suffix2: Optional[str]

Additional name suffix

created_by_api_key: Optional[APIKeyReference]

A reference to an API key with basic identifying information

api_key_id: str

Unique API key identifier (UUIDv4 format)

formatuuid
description: str

Human-readable description of the API key

minLength1
is_clinical_context_enrichment_enabled: Optional[bool]

Whether this API key has a clinical-context enrichment webhook configured

is_viewer_enabled: Optional[bool]

Whether this API key has access to the Viewer product

created_by_user: Optional[UserReference]

A reference to a user with basic identifying information

email: str

User’s email address

user_id: str

Unique user identifier. Format: usr_{32-hex-chars}

first_name: Optional[str]

User’s first name

last_name: Optional[str]

User’s last name

middle_name: Optional[str]

User’s middle name

suffix1: Optional[str]

Name suffix (e.g., ‘MD’, ‘Jr.’)

suffix2: Optional[str]

Additional name suffix

express_customer: Optional[ExpressCustomerReference]

A reference to an Express customer with basic identifying information

express_customer_id: str

Unique Express customer identifier. Format: cus_{32-hex-chars}

express_customer_name: str

Name of the Express customer

minLength1
metadata: Optional[Dict[str, str]]

Custom key-value metadata for the study. Maximum 50 pairs, keys up to 100 chars, values up to 1000 chars

class StudyUpdateResponse:

A study entity in the Viewer system with viewing status

cancelled_at: Optional[datetime]

Timestamp when the study was cancelled, null if not cancelled

formatdate-time
created_at: Optional[datetime]

Timestamp when the study was created

formatdate-time
is_cancelled: bool

Whether the study has been cancelled

severity: Severity

Priority level of a study. ‘normal’ for routine, ‘high’ for urgent, ‘stat’ for immediate attention.

One of the following:
"normal"
"high"
"stat"
study_description: str

Description of the study/scan (e.g., ‘Brain MRI with Contrast’, ‘Chest CT’)

minLength1
study_id: str

Unique study identifier. Format: stu_{32-hex-chars}

study_instance_uid: str

DICOM Study Instance UID. Must be a valid DICOM UID format (e.g., ‘1.2.840.10008.5.1.4.1.1.2’)

minLength1
study_viewer_status: StudyViewerStatus

Viewer completion status for a study. ‘incomplete’ = not yet finished in the viewer, ‘complete’ = finished.

One of the following:
"incomplete"
"complete"
updated_at: Optional[datetime]

Timestamp when the study was last updated

formatdate-time
assigned_to: Optional[UserReference]

A reference to a user with basic identifying information

email: str

User’s email address

user_id: str

Unique user identifier. Format: usr_{32-hex-chars}

first_name: Optional[str]

User’s first name

last_name: Optional[str]

User’s last name

middle_name: Optional[str]

User’s middle name

suffix1: Optional[str]

Name suffix (e.g., ‘MD’, ‘Jr.’)

suffix2: Optional[str]

Additional name suffix

created_by_api_key: Optional[APIKeyReference]

A reference to an API key with basic identifying information

api_key_id: str

Unique API key identifier (UUIDv4 format)

formatuuid
description: str

Human-readable description of the API key

minLength1
is_clinical_context_enrichment_enabled: Optional[bool]

Whether this API key has a clinical-context enrichment webhook configured

is_viewer_enabled: Optional[bool]

Whether this API key has access to the Viewer product

created_by_user: Optional[UserReference]

A reference to a user with basic identifying information

email: str

User’s email address

user_id: str

Unique user identifier. Format: usr_{32-hex-chars}

first_name: Optional[str]

User’s first name

last_name: Optional[str]

User’s last name

middle_name: Optional[str]

User’s middle name

suffix1: Optional[str]

Name suffix (e.g., ‘MD’, ‘Jr.’)

suffix2: Optional[str]

Additional name suffix

express_customer: Optional[ExpressCustomerReference]

A reference to an Express customer with basic identifying information

express_customer_id: str

Unique Express customer identifier. Format: cus_{32-hex-chars}

express_customer_name: str

Name of the Express customer

minLength1
metadata: Optional[Dict[str, str]]

Custom key-value metadata for the study. Maximum 50 pairs, keys up to 100 chars, values up to 1000 chars

class StudyCancelResponse:

Response for cancelling a study in Viewer

success: bool
message: Optional[str]
class StudyUncancelResponse:

Response for uncancelling a study in Viewer

success: bool
message: Optional[str]
class StudyRerouteURLResponse:

Response containing the generated reroute URL for a study in Viewer

url: str
class StudyRetrieveByUidResponse:

A study entity in the Viewer system with viewing status

cancelled_at: Optional[datetime]

Timestamp when the study was cancelled, null if not cancelled

formatdate-time
created_at: Optional[datetime]

Timestamp when the study was created

formatdate-time
is_cancelled: bool

Whether the study has been cancelled

severity: Severity

Priority level of a study. ‘normal’ for routine, ‘high’ for urgent, ‘stat’ for immediate attention.

One of the following:
"normal"
"high"
"stat"
study_description: str

Description of the study/scan (e.g., ‘Brain MRI with Contrast’, ‘Chest CT’)

minLength1
study_id: str

Unique study identifier. Format: stu_{32-hex-chars}

study_instance_uid: str

DICOM Study Instance UID. Must be a valid DICOM UID format (e.g., ‘1.2.840.10008.5.1.4.1.1.2’)

minLength1
study_viewer_status: StudyViewerStatus

Viewer completion status for a study. ‘incomplete’ = not yet finished in the viewer, ‘complete’ = finished.

One of the following:
"incomplete"
"complete"
updated_at: Optional[datetime]

Timestamp when the study was last updated

formatdate-time
assigned_to: Optional[UserReference]

A reference to a user with basic identifying information

email: str

User’s email address

user_id: str

Unique user identifier. Format: usr_{32-hex-chars}

first_name: Optional[str]

User’s first name

last_name: Optional[str]

User’s last name

middle_name: Optional[str]

User’s middle name

suffix1: Optional[str]

Name suffix (e.g., ‘MD’, ‘Jr.’)

suffix2: Optional[str]

Additional name suffix

created_by_api_key: Optional[APIKeyReference]

A reference to an API key with basic identifying information

api_key_id: str

Unique API key identifier (UUIDv4 format)

formatuuid
description: str

Human-readable description of the API key

minLength1
is_clinical_context_enrichment_enabled: Optional[bool]

Whether this API key has a clinical-context enrichment webhook configured

is_viewer_enabled: Optional[bool]

Whether this API key has access to the Viewer product

created_by_user: Optional[UserReference]

A reference to a user with basic identifying information

email: str

User’s email address

user_id: str

Unique user identifier. Format: usr_{32-hex-chars}

first_name: Optional[str]

User’s first name

last_name: Optional[str]

User’s last name

middle_name: Optional[str]

User’s middle name

suffix1: Optional[str]

Name suffix (e.g., ‘MD’, ‘Jr.’)

suffix2: Optional[str]

Additional name suffix

express_customer: Optional[ExpressCustomerReference]

A reference to an Express customer with basic identifying information

express_customer_id: str

Unique Express customer identifier. Format: cus_{32-hex-chars}

express_customer_name: str

Name of the Express customer

minLength1
metadata: Optional[Dict[str, str]]

Custom key-value metadata for the study. Maximum 50 pairs, keys up to 100 chars, values up to 1000 chars

ViewerUsers

Create and invite a new user
viewer.users.invite(UserInviteParams**kwargs) -> UserInviteResponse
POST/v1/viewer/users
List users with pagination
viewer.users.list(UserListParams**kwargs) -> SyncCursorUsers[UserListResponse]
GET/v1/viewer/users
Retrieve a user by ID
viewer.users.retrieve(struser_id) -> UserRetrieveResponse
GET/v1/viewer/users/{userId}
Update a user
viewer.users.update(struser_id, UserUpdateParams**kwargs) -> UserUpdateResponse
PATCH/v1/viewer/users/{userId}
Revoke user access
viewer.users.revoke_access(UserRevokeAccessParams**kwargs) -> UserRevokeAccessResponse
POST/v1/viewer/users/revoke-access
Reactivate a user
viewer.users.reactivate(UserReactivateParams**kwargs) -> UserReactivateResponse
POST/v1/viewer/users/reactivate
ModelsExpand Collapse
class UserInviteResponse:

Response for inviting a user to Viewer. Level is restricted to admin/member since owners cannot be invited via API.

can_manage_studies: bool

Whether the user has permission to create, update, and manage studies

clinic_role: ClinicRole

A user’s clinical or organizational role within the clinic.

One of the following:
"Doctor"
"Physician"
"Surgeon"
"Radiologist"
"Cardiologist"
"Neurologist"
"Urologist"
"Gynecologist"
"Endocrinologist"
"Oncologist"
"Radiation Oncologist"
"Hematologist"
"Gastroenterologist"
"Pulmonologist"
"Nephrologist"
"Rheumatologist"
"Dermatologist"
"Ophthalmologist"
"Otolaryngologist"
"Pediatrician"
"Obstetrician"
"Psychiatrist"
"Anesthesiologist"
"Emergency Medicine Physician"
"Family Medicine Physician"
"Internal Medicine Physician"
"Pathologist"
"Nuclear Medicine Physician"
"Pain Management Specialist"
"Infectious Disease Specialist"
"Immunologist"
"Physician Assistant"
"Nurse Practitioner"
"Certified Registered Nurse Anesthetist"
"Psychologist"
"Medical Assistant"
"Scribe"
"Registered Nurse"
"Nurse Manager"
"Patient Care Coordinator"
"Imaging Technologist"
"Laboratory Technician"
"Medical Laboratory Scientist"
"Pathologists' Assistant"
"Phlebotomist"
"Pharmacist"
"Pharmacy Technician"
"Physical Therapist"
"Occupational Therapist"
"Speech-Language Pathologist"
"Respiratory Therapist"
"Nutritionist"
"Front Desk Operator"
"Revenue Cycle Manager"
"Administrative Director"
"Administrative Assistant"
"Legal Administrator"
"IT Administrator"
"IT Support"
"Software Engineer"
"Other"
created_at: Optional[datetime]

Timestamp when the user was created

formatdate-time
email: str

User’s email address for login and notifications

first_name: str

User’s first name

minLength1
has_dashboard_access: bool

Whether the user can access the dashboard interface. Required for admin users

invited_source: InvitedSource

How a user/invitation was created - via the dashboard UI (‘dashboard’) or the API (‘api’).

One of the following:
"dashboard"
"api"
last_login_at: Optional[datetime]

Timestamp of user’s last login, null if never logged in

formatdate-time
last_name: str

User’s last name

minLength1

User access level assignable via the API. ‘admin’ can manage users/settings, ‘member’ has standard access. ‘owner’ is dashboard-only and cannot be assigned via the API.

One of the following:
"admin"
"member"
user_id: str

Unique user identifier. Format: usr_{32-hex-chars}

middle_name: Optional[str]

User’s middle name (optional)

minLength1
phone_number: Optional[str]

User’s phone number (10-15 digits, optional)

suffix1: Optional[str]

Name suffix (e.g., ‘Jr.’, ‘Sr.’, ‘III’) - optional

minLength1
suffix2: Optional[str]

Additional name suffix (optional)

minLength1
class UserListResponse:

A user in the Viewer system with study management permissions

can_manage_studies: bool

Whether the user has permission to create, update, and manage studies

clinic_role: ClinicRole

A user’s clinical or organizational role within the clinic.

One of the following:
"Doctor"
"Physician"
"Surgeon"
"Radiologist"
"Cardiologist"
"Neurologist"
"Urologist"
"Gynecologist"
"Endocrinologist"
"Oncologist"
"Radiation Oncologist"
"Hematologist"
"Gastroenterologist"
"Pulmonologist"
"Nephrologist"
"Rheumatologist"
"Dermatologist"
"Ophthalmologist"
"Otolaryngologist"
"Pediatrician"
"Obstetrician"
"Psychiatrist"
"Anesthesiologist"
"Emergency Medicine Physician"
"Family Medicine Physician"
"Internal Medicine Physician"
"Pathologist"
"Nuclear Medicine Physician"
"Pain Management Specialist"
"Infectious Disease Specialist"
"Immunologist"
"Physician Assistant"
"Nurse Practitioner"
"Certified Registered Nurse Anesthetist"
"Psychologist"
"Medical Assistant"
"Scribe"
"Registered Nurse"
"Nurse Manager"
"Patient Care Coordinator"
"Imaging Technologist"
"Laboratory Technician"
"Medical Laboratory Scientist"
"Pathologists' Assistant"
"Phlebotomist"
"Pharmacist"
"Pharmacy Technician"
"Physical Therapist"
"Occupational Therapist"
"Speech-Language Pathologist"
"Respiratory Therapist"
"Nutritionist"
"Front Desk Operator"
"Revenue Cycle Manager"
"Administrative Director"
"Administrative Assistant"
"Legal Administrator"
"IT Administrator"
"IT Support"
"Software Engineer"
"Other"
created_at: Optional[datetime]

Timestamp when the user was created

formatdate-time
email: str

User’s email address for login and notifications

first_name: str

User’s first name

minLength1
has_dashboard_access: bool

Whether the user can access the dashboard interface. Required for admin users

invited_source: InvitedSource

How a user/invitation was created - via the dashboard UI (‘dashboard’) or the API (‘api’).

One of the following:
"dashboard"
"api"
last_login_at: Optional[datetime]

Timestamp of user’s last login, null if never logged in

formatdate-time
last_name: str

User’s last name

minLength1
level: UserLevel

User access level. ‘owner’ has full control (dashboard-only, not assignable via API), ‘admin’ can manage users/settings, ‘member’ has standard access.

One of the following:
"owner"
"admin"
"member"
user_id: str

Unique user identifier. Format: usr_{32-hex-chars}

middle_name: Optional[str]

User’s middle name (optional)

minLength1
phone_number: Optional[str]

User’s phone number (10-15 digits, optional)

suffix1: Optional[str]

Name suffix (e.g., ‘Jr.’, ‘Sr.’, ‘III’) - optional

minLength1
suffix2: Optional[str]

Additional name suffix (optional)

minLength1
class UserRetrieveResponse:

A user in the Viewer system with study management permissions

can_manage_studies: bool

Whether the user has permission to create, update, and manage studies

clinic_role: ClinicRole

A user’s clinical or organizational role within the clinic.

One of the following:
"Doctor"
"Physician"
"Surgeon"
"Radiologist"
"Cardiologist"
"Neurologist"
"Urologist"
"Gynecologist"
"Endocrinologist"
"Oncologist"
"Radiation Oncologist"
"Hematologist"
"Gastroenterologist"
"Pulmonologist"
"Nephrologist"
"Rheumatologist"
"Dermatologist"
"Ophthalmologist"
"Otolaryngologist"
"Pediatrician"
"Obstetrician"
"Psychiatrist"
"Anesthesiologist"
"Emergency Medicine Physician"
"Family Medicine Physician"
"Internal Medicine Physician"
"Pathologist"
"Nuclear Medicine Physician"
"Pain Management Specialist"
"Infectious Disease Specialist"
"Immunologist"
"Physician Assistant"
"Nurse Practitioner"
"Certified Registered Nurse Anesthetist"
"Psychologist"
"Medical Assistant"
"Scribe"
"Registered Nurse"
"Nurse Manager"
"Patient Care Coordinator"
"Imaging Technologist"
"Laboratory Technician"
"Medical Laboratory Scientist"
"Pathologists' Assistant"
"Phlebotomist"
"Pharmacist"
"Pharmacy Technician"
"Physical Therapist"
"Occupational Therapist"
"Speech-Language Pathologist"
"Respiratory Therapist"
"Nutritionist"
"Front Desk Operator"
"Revenue Cycle Manager"
"Administrative Director"
"Administrative Assistant"
"Legal Administrator"
"IT Administrator"
"IT Support"
"Software Engineer"
"Other"
created_at: Optional[datetime]

Timestamp when the user was created

formatdate-time
email: str

User’s email address for login and notifications

first_name: str

User’s first name

minLength1
has_dashboard_access: bool

Whether the user can access the dashboard interface. Required for admin users

invited_source: InvitedSource

How a user/invitation was created - via the dashboard UI (‘dashboard’) or the API (‘api’).

One of the following:
"dashboard"
"api"
last_login_at: Optional[datetime]

Timestamp of user’s last login, null if never logged in

formatdate-time
last_name: str

User’s last name

minLength1
level: UserLevel

User access level. ‘owner’ has full control (dashboard-only, not assignable via API), ‘admin’ can manage users/settings, ‘member’ has standard access.

One of the following:
"owner"
"admin"
"member"
user_id: str

Unique user identifier. Format: usr_{32-hex-chars}

middle_name: Optional[str]

User’s middle name (optional)

minLength1
phone_number: Optional[str]

User’s phone number (10-15 digits, optional)

suffix1: Optional[str]

Name suffix (e.g., ‘Jr.’, ‘Sr.’, ‘III’) - optional

minLength1
suffix2: Optional[str]

Additional name suffix (optional)

minLength1
class UserUpdateResponse:

A user in the Viewer system with study management permissions

can_manage_studies: bool

Whether the user has permission to create, update, and manage studies

clinic_role: ClinicRole

A user’s clinical or organizational role within the clinic.

One of the following:
"Doctor"
"Physician"
"Surgeon"
"Radiologist"
"Cardiologist"
"Neurologist"
"Urologist"
"Gynecologist"
"Endocrinologist"
"Oncologist"
"Radiation Oncologist"
"Hematologist"
"Gastroenterologist"
"Pulmonologist"
"Nephrologist"
"Rheumatologist"
"Dermatologist"
"Ophthalmologist"
"Otolaryngologist"
"Pediatrician"
"Obstetrician"
"Psychiatrist"
"Anesthesiologist"
"Emergency Medicine Physician"
"Family Medicine Physician"
"Internal Medicine Physician"
"Pathologist"
"Nuclear Medicine Physician"
"Pain Management Specialist"
"Infectious Disease Specialist"
"Immunologist"
"Physician Assistant"
"Nurse Practitioner"
"Certified Registered Nurse Anesthetist"
"Psychologist"
"Medical Assistant"
"Scribe"
"Registered Nurse"
"Nurse Manager"
"Patient Care Coordinator"
"Imaging Technologist"
"Laboratory Technician"
"Medical Laboratory Scientist"
"Pathologists' Assistant"
"Phlebotomist"
"Pharmacist"
"Pharmacy Technician"
"Physical Therapist"
"Occupational Therapist"
"Speech-Language Pathologist"
"Respiratory Therapist"
"Nutritionist"
"Front Desk Operator"
"Revenue Cycle Manager"
"Administrative Director"
"Administrative Assistant"
"Legal Administrator"
"IT Administrator"
"IT Support"
"Software Engineer"
"Other"
created_at: Optional[datetime]

Timestamp when the user was created

formatdate-time
email: str

User’s email address for login and notifications

first_name: str

User’s first name

minLength1
has_dashboard_access: bool

Whether the user can access the dashboard interface. Required for admin users

invited_source: InvitedSource

How a user/invitation was created - via the dashboard UI (‘dashboard’) or the API (‘api’).

One of the following:
"dashboard"
"api"
last_login_at: Optional[datetime]

Timestamp of user’s last login, null if never logged in

formatdate-time
last_name: str

User’s last name

minLength1
level: UserLevel

User access level. ‘owner’ has full control (dashboard-only, not assignable via API), ‘admin’ can manage users/settings, ‘member’ has standard access.

One of the following:
"owner"
"admin"
"member"
user_id: str

Unique user identifier. Format: usr_{32-hex-chars}

middle_name: Optional[str]

User’s middle name (optional)

minLength1
phone_number: Optional[str]

User’s phone number (10-15 digits, optional)

suffix1: Optional[str]

Name suffix (e.g., ‘Jr.’, ‘Sr.’, ‘III’) - optional

minLength1
suffix2: Optional[str]

Additional name suffix (optional)

minLength1
class UserRevokeAccessResponse:

Response for revoking user access in Viewer

success: bool
message: Optional[str]
class UserReactivateResponse:

Response for reactivating a user in Viewer

success: bool
message: Optional[str]

ViewerUsersInvitations

List user invitations
viewer.users.invitations.list(InvitationListParams**kwargs) -> SyncCursorInvitations[InvitationListResponse]
GET/v1/viewer/users/invitations
Retrieve an invitation by ID
viewer.users.invitations.retrieve(strinvitation_id) -> InvitationRetrieveResponse
GET/v1/viewer/users/invitations/{invitationId}
Update an invitation
viewer.users.invitations.update(strinvitation_id, InvitationUpdateParams**kwargs) -> InvitationUpdateResponse
PATCH/v1/viewer/users/invitations/{invitationId}
Revoke an invitation
viewer.users.invitations.revoke(InvitationRevokeParams**kwargs) -> InvitationRevokeResponse
POST/v1/viewer/users/invitations/revoke
ModelsExpand Collapse
class InvitationListResponse:

A pending user invitation in the Viewer system

can_manage_studies: bool

Whether the invited user will have permission to manage studies

clinic_id: str

UUID of the clinic this invitation belongs to

formatuuid
clinic_role: ClinicRole

A user’s clinical or organizational role within the clinic.

One of the following:
"Doctor"
"Physician"
"Surgeon"
"Radiologist"
"Cardiologist"
"Neurologist"
"Urologist"
"Gynecologist"
"Endocrinologist"
"Oncologist"
"Radiation Oncologist"
"Hematologist"
"Gastroenterologist"
"Pulmonologist"
"Nephrologist"
"Rheumatologist"
"Dermatologist"
"Ophthalmologist"
"Otolaryngologist"
"Pediatrician"
"Obstetrician"
"Psychiatrist"
"Anesthesiologist"
"Emergency Medicine Physician"
"Family Medicine Physician"
"Internal Medicine Physician"
"Pathologist"
"Nuclear Medicine Physician"
"Pain Management Specialist"
"Infectious Disease Specialist"
"Immunologist"
"Physician Assistant"
"Nurse Practitioner"
"Certified Registered Nurse Anesthetist"
"Psychologist"
"Medical Assistant"
"Scribe"
"Registered Nurse"
"Nurse Manager"
"Patient Care Coordinator"
"Imaging Technologist"
"Laboratory Technician"
"Medical Laboratory Scientist"
"Pathologists' Assistant"
"Phlebotomist"
"Pharmacist"
"Pharmacy Technician"
"Physical Therapist"
"Occupational Therapist"
"Speech-Language Pathologist"
"Respiratory Therapist"
"Nutritionist"
"Front Desk Operator"
"Revenue Cycle Manager"
"Administrative Director"
"Administrative Assistant"
"Legal Administrator"
"IT Administrator"
"IT Support"
"Software Engineer"
"Other"
created_at: Optional[datetime]

Timestamp when the invitation was created

formatdate-time
email: str

Email address the invitation was sent to

expiry: Optional[datetime]

When the invitation expires, null if no expiration

formatdate-time
first_name: str

Invited user’s first name

minLength1
has_dashboard_access: bool

Whether the invited user will have dashboard access

invitation_id: str

Unique invitation identifier. Format: inv_{32-hex-chars}

invited_source: InvitedSource

How a user/invitation was created - via the dashboard UI (‘dashboard’) or the API (‘api’).

One of the following:
"dashboard"
"api"
inviter_id: str

User ID of the person who sent the invitation. Format: usr_{32-hex-chars}. Null if invited via API

last_name: str

Invited user’s last name

minLength1
level: UserLevel

User access level. ‘owner’ has full control (dashboard-only, not assignable via API), ‘admin’ can manage users/settings, ‘member’ has standard access.

One of the following:
"owner"
"admin"
"member"

Lifecycle status of an invitation: ‘sent’, ‘accepted’, ‘rejected’, or ‘revoked’.

One of the following:
"sent"
"accepted"
"rejected"
"revoked"
updated_at: Optional[datetime]

Timestamp when the invitation was last updated

formatdate-time
user_id: str

Pre-generated user ID for this invitation. Format: usr_{32-hex-chars}. This ID is assigned at invitation creation and will become the user’s permanent ID upon acceptance

invited_by_api_key_id: Optional[str]

UUID of the API key used to send this invitation. Null if sent via dashboard

formatuuid
middle_name: Optional[str]

Invited user’s middle name (optional)

minLength1
phone_number: Optional[str]

Invited user’s phone number (optional)

suffix1: Optional[str]

Name suffix (e.g., ‘Jr.’, ‘MD’) - optional

minLength1
suffix2: Optional[str]

Additional name suffix - optional

minLength1
class InvitationRetrieveResponse:

A pending user invitation in the Viewer system

can_manage_studies: bool

Whether the invited user will have permission to manage studies

clinic_id: str

UUID of the clinic this invitation belongs to

formatuuid
clinic_role: ClinicRole

A user’s clinical or organizational role within the clinic.

One of the following:
"Doctor"
"Physician"
"Surgeon"
"Radiologist"
"Cardiologist"
"Neurologist"
"Urologist"
"Gynecologist"
"Endocrinologist"
"Oncologist"
"Radiation Oncologist"
"Hematologist"
"Gastroenterologist"
"Pulmonologist"
"Nephrologist"
"Rheumatologist"
"Dermatologist"
"Ophthalmologist"
"Otolaryngologist"
"Pediatrician"
"Obstetrician"
"Psychiatrist"
"Anesthesiologist"
"Emergency Medicine Physician"
"Family Medicine Physician"
"Internal Medicine Physician"
"Pathologist"
"Nuclear Medicine Physician"
"Pain Management Specialist"
"Infectious Disease Specialist"
"Immunologist"
"Physician Assistant"
"Nurse Practitioner"
"Certified Registered Nurse Anesthetist"
"Psychologist"
"Medical Assistant"
"Scribe"
"Registered Nurse"
"Nurse Manager"
"Patient Care Coordinator"
"Imaging Technologist"
"Laboratory Technician"
"Medical Laboratory Scientist"
"Pathologists' Assistant"
"Phlebotomist"
"Pharmacist"
"Pharmacy Technician"
"Physical Therapist"
"Occupational Therapist"
"Speech-Language Pathologist"
"Respiratory Therapist"
"Nutritionist"
"Front Desk Operator"
"Revenue Cycle Manager"
"Administrative Director"
"Administrative Assistant"
"Legal Administrator"
"IT Administrator"
"IT Support"
"Software Engineer"
"Other"
created_at: Optional[datetime]

Timestamp when the invitation was created

formatdate-time
email: str

Email address the invitation was sent to

expiry: Optional[datetime]

When the invitation expires, null if no expiration

formatdate-time
first_name: str

Invited user’s first name

minLength1
has_dashboard_access: bool

Whether the invited user will have dashboard access

invitation_id: str

Unique invitation identifier. Format: inv_{32-hex-chars}

invited_source: InvitedSource

How a user/invitation was created - via the dashboard UI (‘dashboard’) or the API (‘api’).

One of the following:
"dashboard"
"api"
inviter_id: str

User ID of the person who sent the invitation. Format: usr_{32-hex-chars}. Null if invited via API

last_name: str

Invited user’s last name

minLength1
level: UserLevel

User access level. ‘owner’ has full control (dashboard-only, not assignable via API), ‘admin’ can manage users/settings, ‘member’ has standard access.

One of the following:
"owner"
"admin"
"member"

Lifecycle status of an invitation: ‘sent’, ‘accepted’, ‘rejected’, or ‘revoked’.

One of the following:
"sent"
"accepted"
"rejected"
"revoked"
updated_at: Optional[datetime]

Timestamp when the invitation was last updated

formatdate-time
user_id: str

Pre-generated user ID for this invitation. Format: usr_{32-hex-chars}. This ID is assigned at invitation creation and will become the user’s permanent ID upon acceptance

invited_by_api_key_id: Optional[str]

UUID of the API key used to send this invitation. Null if sent via dashboard

formatuuid
middle_name: Optional[str]

Invited user’s middle name (optional)

minLength1
phone_number: Optional[str]

Invited user’s phone number (optional)

suffix1: Optional[str]

Name suffix (e.g., ‘Jr.’, ‘MD’) - optional

minLength1
suffix2: Optional[str]

Additional name suffix - optional

minLength1
class InvitationUpdateResponse:

A pending user invitation in the Viewer system

can_manage_studies: bool

Whether the invited user will have permission to manage studies

clinic_id: str

UUID of the clinic this invitation belongs to

formatuuid
clinic_role: ClinicRole

A user’s clinical or organizational role within the clinic.

One of the following:
"Doctor"
"Physician"
"Surgeon"
"Radiologist"
"Cardiologist"
"Neurologist"
"Urologist"
"Gynecologist"
"Endocrinologist"
"Oncologist"
"Radiation Oncologist"
"Hematologist"
"Gastroenterologist"
"Pulmonologist"
"Nephrologist"
"Rheumatologist"
"Dermatologist"
"Ophthalmologist"
"Otolaryngologist"
"Pediatrician"
"Obstetrician"
"Psychiatrist"
"Anesthesiologist"
"Emergency Medicine Physician"
"Family Medicine Physician"
"Internal Medicine Physician"
"Pathologist"
"Nuclear Medicine Physician"
"Pain Management Specialist"
"Infectious Disease Specialist"
"Immunologist"
"Physician Assistant"
"Nurse Practitioner"
"Certified Registered Nurse Anesthetist"
"Psychologist"
"Medical Assistant"
"Scribe"
"Registered Nurse"
"Nurse Manager"
"Patient Care Coordinator"
"Imaging Technologist"
"Laboratory Technician"
"Medical Laboratory Scientist"
"Pathologists' Assistant"
"Phlebotomist"
"Pharmacist"
"Pharmacy Technician"
"Physical Therapist"
"Occupational Therapist"
"Speech-Language Pathologist"
"Respiratory Therapist"
"Nutritionist"
"Front Desk Operator"
"Revenue Cycle Manager"
"Administrative Director"
"Administrative Assistant"
"Legal Administrator"
"IT Administrator"
"IT Support"
"Software Engineer"
"Other"
created_at: Optional[datetime]

Timestamp when the invitation was created

formatdate-time
email: str

Email address the invitation was sent to

expiry: Optional[datetime]

When the invitation expires, null if no expiration

formatdate-time
first_name: str

Invited user’s first name

minLength1
has_dashboard_access: bool

Whether the invited user will have dashboard access

invitation_id: str

Unique invitation identifier. Format: inv_{32-hex-chars}

invited_source: InvitedSource

How a user/invitation was created - via the dashboard UI (‘dashboard’) or the API (‘api’).

One of the following:
"dashboard"
"api"
inviter_id: str

User ID of the person who sent the invitation. Format: usr_{32-hex-chars}. Null if invited via API

last_name: str

Invited user’s last name

minLength1
level: UserLevel

User access level. ‘owner’ has full control (dashboard-only, not assignable via API), ‘admin’ can manage users/settings, ‘member’ has standard access.

One of the following:
"owner"
"admin"
"member"

Lifecycle status of an invitation: ‘sent’, ‘accepted’, ‘rejected’, or ‘revoked’.

One of the following:
"sent"
"accepted"
"rejected"
"revoked"
updated_at: Optional[datetime]

Timestamp when the invitation was last updated

formatdate-time
user_id: str

Pre-generated user ID for this invitation. Format: usr_{32-hex-chars}. This ID is assigned at invitation creation and will become the user’s permanent ID upon acceptance

invited_by_api_key_id: Optional[str]

UUID of the API key used to send this invitation. Null if sent via dashboard

formatuuid
middle_name: Optional[str]

Invited user’s middle name (optional)

minLength1
phone_number: Optional[str]

Invited user’s phone number (optional)

suffix1: Optional[str]

Name suffix (e.g., ‘Jr.’, ‘MD’) - optional

minLength1
suffix2: Optional[str]

Additional name suffix - optional

minLength1
class InvitationRevokeResponse:

Response for revoking an invitation in Viewer

success: bool
message: Optional[str]