Skip to content
Get started

Viewer

ModelsExpand Collapse
StudyViewerStatus = "incomplete" or "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
POST/v1/viewer/ephemeral-sessions
ModelsExpand Collapse
EphemeralSessionCreateResponse object { url }

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

url: string

ViewerStudies

Create a new study
POST/v1/viewer/studies
List studies with pagination
GET/v1/viewer/studies
Retrieve a study by ID
GET/v1/viewer/studies/{studyId}
Update a study
PATCH/v1/viewer/studies/{studyId}
Cancel a study
POST/v1/viewer/studies/cancel
Uncancel a study
POST/v1/viewer/studies/uncancel
Generate a viewer reroute URL
POST/v1/viewer/studies/reroute-url
Retrieve a study by DICOM UID
GET/v1/viewer/studies/by-uid/{studyInstanceUid}
ModelsExpand Collapse
StudyCreateResponse object { cancelledAt, createdAt, isCancelled, 11 more }

A study entity in the Viewer system with viewing status

cancelledAt: string

Timestamp when the study was cancelled, null if not cancelled

formatdate-time
createdAt: string

Timestamp when the study was created

formatdate-time
isCancelled: boolean

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"
studyDescription: string

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

minLength1
studyId: string

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

studyInstanceUid: string

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

minLength1
studyViewerStatus: StudyViewerStatus

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

One of the following:
"incomplete"
"complete"
updatedAt: string

Timestamp when the study was last updated

formatdate-time
assignedTo: optional UserReference { email, userId, firstName, 4 more }

A reference to a user with basic identifying information

email: string

User’s email address

userId: string

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

firstName: optional string

User’s first name

lastName: optional string

User’s last name

middleName: optional string

User’s middle name

suffix1: optional string

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

suffix2: optional string

Additional name suffix

createdByApiKey: optional APIKeyReference { apiKeyId, description, isClinicalContextEnrichmentEnabled, isViewerEnabled }

A reference to an API key with basic identifying information

apiKeyId: string

Unique API key identifier (UUIDv4 format)

formatuuid
description: string

Human-readable description of the API key

minLength1
isClinicalContextEnrichmentEnabled: optional boolean

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

isViewerEnabled: optional boolean

Whether this API key has access to the Viewer product

createdByUser: optional UserReference { email, userId, firstName, 4 more }

A reference to a user with basic identifying information

email: string

User’s email address

userId: string

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

firstName: optional string

User’s first name

lastName: optional string

User’s last name

middleName: optional string

User’s middle name

suffix1: optional string

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

suffix2: optional string

Additional name suffix

expressCustomer: optional ExpressCustomerReference { expressCustomerId, expressCustomerName }

A reference to an Express customer with basic identifying information

expressCustomerId: string

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

expressCustomerName: string

Name of the Express customer

minLength1
metadata: optional map[string]

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

StudyListResponse object { cancelledAt, createdAt, isCancelled, 11 more }

A study entity in the Viewer system with viewing status

cancelledAt: string

Timestamp when the study was cancelled, null if not cancelled

formatdate-time
createdAt: string

Timestamp when the study was created

formatdate-time
isCancelled: boolean

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"
studyDescription: string

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

minLength1
studyId: string

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

studyInstanceUid: string

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

minLength1
studyViewerStatus: StudyViewerStatus

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

One of the following:
"incomplete"
"complete"
updatedAt: string

Timestamp when the study was last updated

formatdate-time
assignedTo: optional UserReference { email, userId, firstName, 4 more }

A reference to a user with basic identifying information

email: string

User’s email address

userId: string

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

firstName: optional string

User’s first name

lastName: optional string

User’s last name

middleName: optional string

User’s middle name

suffix1: optional string

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

suffix2: optional string

Additional name suffix

createdByApiKey: optional APIKeyReference { apiKeyId, description, isClinicalContextEnrichmentEnabled, isViewerEnabled }

A reference to an API key with basic identifying information

apiKeyId: string

Unique API key identifier (UUIDv4 format)

formatuuid
description: string

Human-readable description of the API key

minLength1
isClinicalContextEnrichmentEnabled: optional boolean

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

isViewerEnabled: optional boolean

Whether this API key has access to the Viewer product

createdByUser: optional UserReference { email, userId, firstName, 4 more }

A reference to a user with basic identifying information

email: string

User’s email address

userId: string

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

firstName: optional string

User’s first name

lastName: optional string

User’s last name

middleName: optional string

User’s middle name

suffix1: optional string

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

suffix2: optional string

Additional name suffix

expressCustomer: optional ExpressCustomerReference { expressCustomerId, expressCustomerName }

A reference to an Express customer with basic identifying information

expressCustomerId: string

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

expressCustomerName: string

Name of the Express customer

minLength1
metadata: optional map[string]

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

StudyRetrieveResponse object { cancelledAt, createdAt, isCancelled, 11 more }

A study entity in the Viewer system with viewing status

cancelledAt: string

Timestamp when the study was cancelled, null if not cancelled

formatdate-time
createdAt: string

Timestamp when the study was created

formatdate-time
isCancelled: boolean

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"
studyDescription: string

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

minLength1
studyId: string

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

studyInstanceUid: string

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

minLength1
studyViewerStatus: StudyViewerStatus

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

One of the following:
"incomplete"
"complete"
updatedAt: string

Timestamp when the study was last updated

formatdate-time
assignedTo: optional UserReference { email, userId, firstName, 4 more }

A reference to a user with basic identifying information

email: string

User’s email address

userId: string

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

firstName: optional string

User’s first name

lastName: optional string

User’s last name

middleName: optional string

User’s middle name

suffix1: optional string

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

suffix2: optional string

Additional name suffix

createdByApiKey: optional APIKeyReference { apiKeyId, description, isClinicalContextEnrichmentEnabled, isViewerEnabled }

A reference to an API key with basic identifying information

apiKeyId: string

Unique API key identifier (UUIDv4 format)

formatuuid
description: string

Human-readable description of the API key

minLength1
isClinicalContextEnrichmentEnabled: optional boolean

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

isViewerEnabled: optional boolean

Whether this API key has access to the Viewer product

createdByUser: optional UserReference { email, userId, firstName, 4 more }

A reference to a user with basic identifying information

email: string

User’s email address

userId: string

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

firstName: optional string

User’s first name

lastName: optional string

User’s last name

middleName: optional string

User’s middle name

suffix1: optional string

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

suffix2: optional string

Additional name suffix

expressCustomer: optional ExpressCustomerReference { expressCustomerId, expressCustomerName }

A reference to an Express customer with basic identifying information

expressCustomerId: string

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

expressCustomerName: string

Name of the Express customer

minLength1
metadata: optional map[string]

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

StudyUpdateResponse object { cancelledAt, createdAt, isCancelled, 11 more }

A study entity in the Viewer system with viewing status

cancelledAt: string

Timestamp when the study was cancelled, null if not cancelled

formatdate-time
createdAt: string

Timestamp when the study was created

formatdate-time
isCancelled: boolean

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"
studyDescription: string

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

minLength1
studyId: string

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

studyInstanceUid: string

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

minLength1
studyViewerStatus: StudyViewerStatus

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

One of the following:
"incomplete"
"complete"
updatedAt: string

Timestamp when the study was last updated

formatdate-time
assignedTo: optional UserReference { email, userId, firstName, 4 more }

A reference to a user with basic identifying information

email: string

User’s email address

userId: string

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

firstName: optional string

User’s first name

lastName: optional string

User’s last name

middleName: optional string

User’s middle name

suffix1: optional string

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

suffix2: optional string

Additional name suffix

createdByApiKey: optional APIKeyReference { apiKeyId, description, isClinicalContextEnrichmentEnabled, isViewerEnabled }

A reference to an API key with basic identifying information

apiKeyId: string

Unique API key identifier (UUIDv4 format)

formatuuid
description: string

Human-readable description of the API key

minLength1
isClinicalContextEnrichmentEnabled: optional boolean

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

isViewerEnabled: optional boolean

Whether this API key has access to the Viewer product

createdByUser: optional UserReference { email, userId, firstName, 4 more }

A reference to a user with basic identifying information

email: string

User’s email address

userId: string

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

firstName: optional string

User’s first name

lastName: optional string

User’s last name

middleName: optional string

User’s middle name

suffix1: optional string

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

suffix2: optional string

Additional name suffix

expressCustomer: optional ExpressCustomerReference { expressCustomerId, expressCustomerName }

A reference to an Express customer with basic identifying information

expressCustomerId: string

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

expressCustomerName: string

Name of the Express customer

minLength1
metadata: optional map[string]

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

StudyCancelResponse object { success, message }

Response for cancelling a study in Viewer

success: boolean
message: optional string
StudyUncancelResponse object { success, message }

Response for uncancelling a study in Viewer

success: boolean
message: optional string
StudyRerouteURLResponse object { url }

Response containing the generated reroute URL for a study in Viewer

url: string
StudyRetrieveByUidResponse object { cancelledAt, createdAt, isCancelled, 11 more }

A study entity in the Viewer system with viewing status

cancelledAt: string

Timestamp when the study was cancelled, null if not cancelled

formatdate-time
createdAt: string

Timestamp when the study was created

formatdate-time
isCancelled: boolean

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"
studyDescription: string

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

minLength1
studyId: string

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

studyInstanceUid: string

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

minLength1
studyViewerStatus: StudyViewerStatus

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

One of the following:
"incomplete"
"complete"
updatedAt: string

Timestamp when the study was last updated

formatdate-time
assignedTo: optional UserReference { email, userId, firstName, 4 more }

A reference to a user with basic identifying information

email: string

User’s email address

userId: string

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

firstName: optional string

User’s first name

lastName: optional string

User’s last name

middleName: optional string

User’s middle name

suffix1: optional string

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

suffix2: optional string

Additional name suffix

createdByApiKey: optional APIKeyReference { apiKeyId, description, isClinicalContextEnrichmentEnabled, isViewerEnabled }

A reference to an API key with basic identifying information

apiKeyId: string

Unique API key identifier (UUIDv4 format)

formatuuid
description: string

Human-readable description of the API key

minLength1
isClinicalContextEnrichmentEnabled: optional boolean

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

isViewerEnabled: optional boolean

Whether this API key has access to the Viewer product

createdByUser: optional UserReference { email, userId, firstName, 4 more }

A reference to a user with basic identifying information

email: string

User’s email address

userId: string

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

firstName: optional string

User’s first name

lastName: optional string

User’s last name

middleName: optional string

User’s middle name

suffix1: optional string

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

suffix2: optional string

Additional name suffix

expressCustomer: optional ExpressCustomerReference { expressCustomerId, expressCustomerName }

A reference to an Express customer with basic identifying information

expressCustomerId: string

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

expressCustomerName: string

Name of the Express customer

minLength1
metadata: optional map[string]

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
POST/v1/viewer/users
List users with pagination
GET/v1/viewer/users
Retrieve a user by ID
GET/v1/viewer/users/{userId}
Update a user
PATCH/v1/viewer/users/{userId}
Revoke user access
POST/v1/viewer/users/revoke-access
Reactivate a user
POST/v1/viewer/users/reactivate
ModelsExpand Collapse
UserInviteResponse object { canManageStudies, clinicRole, createdAt, 12 more }

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

canManageStudies: boolean

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

clinicRole: 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"
createdAt: string

Timestamp when the user was created

formatdate-time
email: string

User’s email address for login and notifications

firstName: string

User’s first name

minLength1
hasDashboardAccess: boolean

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

invitedSource: InvitedSource

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

One of the following:
"dashboard"
"api"
lastLoginAt: string

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

formatdate-time
lastName: string

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"
userId: string

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

middleName: optional string

User’s middle name (optional)

minLength1
phoneNumber: optional string

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

suffix1: optional string

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

minLength1
suffix2: optional string

Additional name suffix (optional)

minLength1
UserListResponse object { canManageStudies, clinicRole, createdAt, 12 more }

A user in the Viewer system with study management permissions

canManageStudies: boolean

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

clinicRole: 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"
createdAt: string

Timestamp when the user was created

formatdate-time
email: string

User’s email address for login and notifications

firstName: string

User’s first name

minLength1
hasDashboardAccess: boolean

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

invitedSource: InvitedSource

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

One of the following:
"dashboard"
"api"
lastLoginAt: string

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

formatdate-time
lastName: string

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"
userId: string

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

middleName: optional string

User’s middle name (optional)

minLength1
phoneNumber: optional string

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

suffix1: optional string

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

minLength1
suffix2: optional string

Additional name suffix (optional)

minLength1
UserRetrieveResponse object { canManageStudies, clinicRole, createdAt, 12 more }

A user in the Viewer system with study management permissions

canManageStudies: boolean

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

clinicRole: 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"
createdAt: string

Timestamp when the user was created

formatdate-time
email: string

User’s email address for login and notifications

firstName: string

User’s first name

minLength1
hasDashboardAccess: boolean

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

invitedSource: InvitedSource

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

One of the following:
"dashboard"
"api"
lastLoginAt: string

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

formatdate-time
lastName: string

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"
userId: string

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

middleName: optional string

User’s middle name (optional)

minLength1
phoneNumber: optional string

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

suffix1: optional string

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

minLength1
suffix2: optional string

Additional name suffix (optional)

minLength1
UserUpdateResponse object { canManageStudies, clinicRole, createdAt, 12 more }

A user in the Viewer system with study management permissions

canManageStudies: boolean

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

clinicRole: 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"
createdAt: string

Timestamp when the user was created

formatdate-time
email: string

User’s email address for login and notifications

firstName: string

User’s first name

minLength1
hasDashboardAccess: boolean

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

invitedSource: InvitedSource

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

One of the following:
"dashboard"
"api"
lastLoginAt: string

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

formatdate-time
lastName: string

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"
userId: string

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

middleName: optional string

User’s middle name (optional)

minLength1
phoneNumber: optional string

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

suffix1: optional string

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

minLength1
suffix2: optional string

Additional name suffix (optional)

minLength1
UserRevokeAccessResponse object { success, message }

Response for revoking user access in Viewer

success: boolean
message: optional string
UserReactivateResponse object { success, message }

Response for reactivating a user in Viewer

success: boolean
message: optional string

ViewerUsersInvitations

List user invitations
GET/v1/viewer/users/invitations
Retrieve an invitation by ID
GET/v1/viewer/users/invitations/{invitationId}
Update an invitation
PATCH/v1/viewer/users/invitations/{invitationId}
Revoke an invitation
POST/v1/viewer/users/invitations/revoke
ModelsExpand Collapse
InvitationListResponse object { canManageStudies, clinicId, clinicRole, 18 more }

A pending user invitation in the Viewer system

canManageStudies: boolean

Whether the invited user will have permission to manage studies

clinicId: string

UUID of the clinic this invitation belongs to

formatuuid
clinicRole: 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"
createdAt: string

Timestamp when the invitation was created

formatdate-time
email: string

Email address the invitation was sent to

expiry: string

When the invitation expires, null if no expiration

formatdate-time
firstName: string

Invited user’s first name

minLength1
hasDashboardAccess: boolean

Whether the invited user will have dashboard access

invitationId: string

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

invitedSource: InvitedSource

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

One of the following:
"dashboard"
"api"
inviterId: string

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

lastName: string

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"
updatedAt: string

Timestamp when the invitation was last updated

formatdate-time
userId: string

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

invitedByApiKeyId: optional string

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

formatuuid
middleName: optional string

Invited user’s middle name (optional)

minLength1
phoneNumber: optional string

Invited user’s phone number (optional)

suffix1: optional string

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

minLength1
suffix2: optional string

Additional name suffix - optional

minLength1
InvitationRetrieveResponse object { canManageStudies, clinicId, clinicRole, 18 more }

A pending user invitation in the Viewer system

canManageStudies: boolean

Whether the invited user will have permission to manage studies

clinicId: string

UUID of the clinic this invitation belongs to

formatuuid
clinicRole: 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"
createdAt: string

Timestamp when the invitation was created

formatdate-time
email: string

Email address the invitation was sent to

expiry: string

When the invitation expires, null if no expiration

formatdate-time
firstName: string

Invited user’s first name

minLength1
hasDashboardAccess: boolean

Whether the invited user will have dashboard access

invitationId: string

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

invitedSource: InvitedSource

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

One of the following:
"dashboard"
"api"
inviterId: string

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

lastName: string

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"
updatedAt: string

Timestamp when the invitation was last updated

formatdate-time
userId: string

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

invitedByApiKeyId: optional string

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

formatuuid
middleName: optional string

Invited user’s middle name (optional)

minLength1
phoneNumber: optional string

Invited user’s phone number (optional)

suffix1: optional string

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

minLength1
suffix2: optional string

Additional name suffix - optional

minLength1
InvitationUpdateResponse object { canManageStudies, clinicId, clinicRole, 18 more }

A pending user invitation in the Viewer system

canManageStudies: boolean

Whether the invited user will have permission to manage studies

clinicId: string

UUID of the clinic this invitation belongs to

formatuuid
clinicRole: 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"
createdAt: string

Timestamp when the invitation was created

formatdate-time
email: string

Email address the invitation was sent to

expiry: string

When the invitation expires, null if no expiration

formatdate-time
firstName: string

Invited user’s first name

minLength1
hasDashboardAccess: boolean

Whether the invited user will have dashboard access

invitationId: string

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

invitedSource: InvitedSource

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

One of the following:
"dashboard"
"api"
inviterId: string

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

lastName: string

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"
updatedAt: string

Timestamp when the invitation was last updated

formatdate-time
userId: string

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

invitedByApiKeyId: optional string

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

formatuuid
middleName: optional string

Invited user’s middle name (optional)

minLength1
phoneNumber: optional string

Invited user’s phone number (optional)

suffix1: optional string

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

minLength1
suffix2: optional string

Additional name suffix - optional

minLength1
InvitationRevokeResponse object { success, message }

Response for revoking an invitation in Viewer

success: boolean
message: optional string