Versions Compared
Key
- This line was added.
- This line was removed.
- Formatting was changed.
Introduction to VSee Clinic API
VSee Clinic API allow developer to make their own interface while still having full VSee Clinic and VSee Call capability.
Common Workflows
Example Set up
Let's take a look at a typical example set up
Key | Example | Note |
---|---|---|
Clinic Portal URL |
| This is your original portal |
Account code |
| Your VSee Clinic Account Code |
API Key |
| The key generated under Developers menu |
API Secret |
| The secret generated under Developers menu |
API Endpoint |
| To be advised by VSee Clinic Team |
Clinic Portal URL |
| To be advised by VSee Clinic Team |
Waiting Room URL |
| To be advised by VSee Clinic Team |
User Code |
| This is anything that you can formular and act as a way for VSee Clinic to identify the your user |
Patient Side Integration
Prerequisites: I already have a portal for patients with a way to sign up and login. I want to extend the functionality by letting them proceed to VSee Clinic without a need of additional sign up / login.
Use case #1: Log patient in and take them to VSee Clinic's patient dashboard
Step 1: Obtain patient access token from POST /users/sso
API call
The API will return you the token (data.token.token) look like this 66bcd0acff324e8a44992d9596b5d361
.
Step 2: Redirect the user to your VSee Clinic page
You need to provide the user with a button or link to redirect to VSee Clinic. The URL will follow this pattern
{portal_base_url}auth?sso_token={token}&next={next_url}
e.g
https://vclinic.vseepreview.com/vc/next/auth?sso_token=66bcd0acff324e8a44992d9596b5d361&next=/u/clinic
This will log user in, then redirect user to
https://vclinic.vseepreview.com/vc/next/u/clinic
Additional options: - disable_navigation: 1 - disable all email communication
e.g
https://vclinic.vseepreview.com/vc/next/auth?sso_token=66bcd0acff324e8a44992d9596b5d361&next=/u/clinic&disable_navigation=1
Use case #2: Log Patient In using SSO Token and Start a Video Session
Step 1: Obtain patient access token from POST /users/sso
API call
The API will return you the token (data.token.token) look like this 66bcd0acff324e8a44992d9596b5d361
. User's ID (data.id
) will also be used as member_id
later in Step 3.
Step 2: Create intake object via POST /intakes
API
Use the SSO token from Step 1 in the X-ApiToken
header field. You will get an intake ID in the response (data.id
), e.g. 61165a8e-d8cc-47da-bd8e-597d64457b1f
Step 3: Create a walkin visit via POST /visits/add_walkin
API
Use SSO token from Step 1 in the X-ApiToken
header field and intake_id from Step 2. You will get a visit ID in the response (data.id
, e.g. 67258
Step 4: Redirect the patient into the video call/chat page:
https://vclinic.vseepreview.com/vc/next/auth?sso_token=9fa6239291aa27d9528416cdcafbd6a5&next=/visits/inbrowser_calling/67258
Use case #3: Log Patient In using SSO Token and Schedule An Appointment
Step 1: Obtain patient access token from POST /users/sso
API call
The API will return you the token (data.token.token) look like this 66bcd0acff324e8a44992d9596b5d361
. User's ID (data.id
will also be used as member_id later in Step 3.
Step 2: Create intake object via POST /intakes
API
Use the SSO token from Step 1 in the X-ApiToken header field. You will get an intake ID in the response (data.id
), e.g. 61165a8e-d8cc-47da-bd8e-597d64457b1f
Step 3: Create a scheduled appointment visit via POST /visits
API
Use the SSO token from Step 1 in the X-ApiToken header field and intake_id from Step 2. You will get a visit ID in the response (data.id
) e.g. 67258
If your clinic is configured to use one time appointment links then the visit object will also contain data.one_time_link_token
, e.g. f7gybzjd9o
You can build a link using the format below and send it to the patient:
https://vclinic.vseepreview.com/vc/next/members/appointment/67258?token= f7gybzjd9o
Provider Side Integration
Use Case #1: Provider Accessing Web Dashboard using SSO Token
Usecase: I already have a way to sign up, manage my provider on my own providers' portal and now I want them to go to VSee Clinic for additional telehealth functionality.
Here is how you log in and redirect your provider using access token.
Step 1: Obtain provider access token from POST /users/sso
API call
The API will return you the token (data.token.token
) look like this 66bcd0acff324e8a44992d9596b5d361
.
Step 2: Redirect the provider to their dashboard
You need to provide the user with a button or link to redirect to VSee Clinic. URL will follow this pattern
{portal_base_url}auth?sso_token={token}&next={next_url}
e.g https://vclinic.vseepreview.com/vc/next/auth?sso_token=66bcd0acff324e8a44992d9596b5d361&next=/providers/dashboard
This will log user in, then redirect user to https://vclinic.vseepreview.com/vc/next/providers/dashboard
Use Case #2: Create a Provider Account With a Room
Usecase: I already have a way to sign up, manage my provider on my own providers' portal and now I want them to go to VSee Clinic for additional telehealth functionality. My portal has multiple providers, each provider should have their own Waiting Room in VSee Clinic to accept their own pool of patients.
Step 1: Obtain provider access token from POST /users/sso
API call
The API will return you the token (data.token.token) look like this 66bcd0acff324e8a44992d9596b5d361
.
Step 2: Create a waiting room in the clinic via POST /rooms
API call
The API will return you the room ID and room code (data.id
, data.code
). If the room already exists, it will return error 400.
Step 3: Assign the newly created provider to the waiting room via POST /users/:id/rooms
API call
Step 4: Redirect the provider to their dashboard. The provider will be assigned to a room already and be able to see patients from that room.
You need to provide the user with a button or link to redirect to VSee Clinic. URL will follow this pattern
{portal_base_url}auth?sso_token={token}&next={next_url}
e.g https://vclinic.vseepreview.com/vc/next/auth?sso_token=66bcd0acff324e8a44992d9596b5d361&next=/providers/dashboard
This will log user in, then redirect user to https://vclinic.vseepreview.com/vc/next/providers/dashboard
API Documentation
API Setup
API Endpoints
Production:
https://api.vsee.me/api_v3/
Staging:
https://api.vseepreview.com/vc/next/api_v3/
Note: Your clinic setting on Production environment is not available on Staging environment unless set up by VSee Clinic Support team.
API Parameters
Parameter | Location | Type | Description |
---|---|---|---|
|
|
| If the app knows the account code, it should pass it in this header for every request. Otherwise leave blank |
|
|
| Once the user logs in, the app gets the token and should pass it for every request. |
|
|
| Wherever there’s user’s :id field in API methods, it will also accept dash (-) as a mapping to the current user. |
API Objects
User Object
(To be completed soon)
Visit Object
status
:
Status Code | Meaning | Description |
---|---|---|
| Pending | Visit was just created |
| Confirmed | Appointment is confirmed |
| In-progress | Visit is in progress |
| Completed | Visit is closed |
| Deleted / Cancelled | Visit is cancelled by patient or provider |
Intake Object
(To be completed soon)
Settings API
GET /settings.json [public access]
Parameters
(None)
Response
Code Block |
---|
curl https://api.vsee.me/api_v3/settings.json
{
"data": {
"visit": {
"time": {
"max_wait_time": 86400
}
}
}
} |
GET /settings/:path.json [public access]
Parameters
Parameter
Type
Description
path
String
The path to the settings object. e.g. visit/time/max_wait_time
Response
Code Block |
---|
curl https://api.vsee.me/api_v3/settings/visit/time/max_wait_time.json
{
"data": 86400
}
|
Users API
POST /users/sso
Single Sign On for patient and provider.
This is disabled by default, you need to contact admin@vsee.com to request for it.
SSO process will create a user record on VSee side when you first call this API and will map to and return existing user record for further requests.
Parameters
Parameter
Type
Description
first_name
String
Required
last_name
String
Required
dob
String
Optional
type
Integer
200
: Member, 400
: Provider, 600
: Guest User
code
String
Required
if type is 200 or 400 / Max length: 128 charactercode
is a unique user identifier on your end. VSee will store the code for this user record and next time you call SSO, we will return you the same existing user.
email
String
Optional
username
String
Optional
- system will generate one as fallback
disable_emails
Integer
Optional
- set to 1
- if you want user to disable all email notification
Response
Note: you can use the data.token.token return here to redirect user from your portal to VSee Clinic portal, please see Workflows section.
Guest SSO
Code Block |
---|
curl -X POST
-H "X-AccountCode: vclinic"
-H "X-ApiKey: vclinic_api_key"
-H "Content-Type: multipart/form-data;"
-F "first_name=John"
-F "last_name=Smith"
-F "dob=1990-01-01"
-F "type=600"
"https://api.vsee.me/api_v3/users/sso.json" -k
{
"data": {
"id": "10008",
"code": "57d76ada0bb444f9b3057855ac1f0144",
"first_name": "John",
"last_name": "Smith",
"username": "57d76ad979b843e6973e7855ac1f0144",
"vseeid": "conciergedev+57d76ad979b843e6973e7855ac1f0144",
"dob": "1990-01-01",
"active": true,
"tos": false,
"subtype": "",
"token": {
"user_id": "10008",
"token": "0437c1ce3b7079906e2ff247aad1adda",
"expiry": 1473821786,
"refresh_token": {
"user_id": "10008",
"token": "2693615fd2a46edf13334b3f35580e26",
"expiry": 1476327386,
"created": 1473735386
}
}
}
} |
Patient SSO
Code Block |
---|
curl -X POST
-H "X-AccountCode: vclinic"
-H "X-ApiKey: vclinic_api_key"
-H "Content-Type: multipart/form-data;"
-F "first_name=John"
-F "last_name=Smith"
-F "code=ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb"
-F "type=200"
"https://api.vsee.me/api_v3/users/sso.json" -k
{
"data": {
"id": "10008",
"code": "ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb",
"first_name": "John",
"last_name": "Smith",
"username": "57d76ad979b843e6973e7855ac1f0144",
"vseeid": "conciergedev+57d76ad979b843e6973e7855ac1f0144",
"active": true,
"tos": false,
"subtype": "",
"token": {
"user_id": "10008",
"token": "0437c1ce3b7079906e2ff247aad1adda",
"expiry": 1473821786,
"refresh_token": {
"user_id": "10008",
"token": "2693615fd2a46edf13334b3f35580e26",
"expiry": 1476327386,
"created": 1473735386
}
}
}
} |
Provider SSO
Code Block |
---|
curl -X POST
-H "X-AccountCode: vclinic"
-H "X-ApiKey: vclinic_api_key"
-H "Content-Type: multipart/form-data;"
-F "first_name=John"
-F "last_name=Provider"
-F "code=cd978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb"
-F "type=400"
"https://api.vsee.me/api_v3/users/sso.json" -k
{
"data": {
"id": "10008",
"code": "cd978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb",
"first_name": "John",
"last_name": "Provider",
"username": "57d76ad979b843e6973e7855ac1f0144",
"vseeid": "conciergedev+57d76ad979b843e6973e7855ac1f0144",
"active": true,
"tos": false,
"subtype": "",
"token": {
"user_id": "10008",
"token": "0437c1ce3b7079906e2ff247aad1adda",
"expiry": 1473821786,
"refresh_token": {
"user_id": "10008",
"token": "2693615fd2a46edf13334b3f35580e26",
"expiry": 1476327386,
"created": 1473735386
}
}
}
} |
POST /users/login.json [public access]
Log user in and retrieve access token
Notes:
user_type will be member(200), provider(400), …, etc
There is 2 methods for log in
active user
use username and password field
inactive user
user email and email token sent to their email
only after user update their password via API, their status will change to active and can log in via active user log in method above.
Parameters
Parameter
Type
Description
username
String
(for active user only)
password
String
(for active user only)
email
String
(for non-active user who has not set the password yet)
email_token
String
(for non-active user who has not set the password yet)
Response
Note: you can use the token.token return here to redirect user from your portal to VSee Clinic portal, please see Section Web log in using SSO Token.
Code Block |
---|
curl -X POST -d "username=member-201&password=111111" https://api.vsee.me/api_v3/users/login.json
curl -X POST -d "email=an+1@vsee.com&email_token=ztpand" https://api.vsee.me/api_v3/users/login.json
{
"data": {
"user_id": "201",
"token": "18c31fa10afb6f0857c803eb01a2b392",
"expiry": 1473822319,
"created": 1473735919,
"user_type": "200",
"refresh_token": {
"user_id": "201",
"token": "6338a6e42f407acf39d07a63442efb9d",
"expiry": 1476327919,
"created": 1473735919
},
"user": {
"id": "201",
"code": "54bdf165f02c4a0fbaac2603ac1f0144",
"first_name": "Lemuel",
"last_name": "Eveline (201)test",
"username": "member-201",
"vseeid": "conciergedev+richard",
"dob": "1960-01-01",
"email": "an+user1@vsee.com",
"gender": 2,
"photo": "https://api.vsee.me/api_v3/files/index/app_user/photo/201/?auth_code=e965cbbe29c1fc1e8076ff00733648625bd56ac0",
"active": true,
"tos": false,
"phone": "800-555-5555",
"subtype": "",
"street_addr": "FIrst str 12",
"state": "CA",
"city": "San Francisco",
"zip": "01234",
"pcp_name": "",
"pcp_phone": ""
}
}
} |
GET /me
Parameters
Parameter
Type
Description
user_photo_size
String
(optional)
User photo dimensions in {W}x{H} format. Example: 320x240
.
Response
Code Block |
---|
curl -X GET -H "X-ApiToken: 6366a7018a39536a1ef4b63626f8e734" https://api.vsee.me/api_v3/me.json
{
"data": {
"id": "201",
"first_name": "An",
"last_name": "Nguyen",
"username": "member-201",
"dob": "1960-01-01",
"email": "an+user1@vsee.com",
"gender": 2,
"active": true,
"nationality": "Vietnamese",
"tos": false,
"photo": "https://api.vsee.me/api_v3/files/57e8c9a2-5c30-4b2c-b9d0-11d6ac1f0144?auth_code=8cd13ff90604b5820d2cfb16859054e9c1c074c4&time=1474873881&size=320x240",
}
} |
POST /me
Update current user profile
Parameters
Parameter
Type
Description
password
String
(optional) Should be sent alone if it’s first time setting password, or together with old_password to change it.
old_password
String
(optional) Should be sent when user is changing password
dob
Date
(optional) yyyy-mm-dd
gender
String
(optional) male / female
nationality
String
(optional) choose 1 from the list e.g Vietnamese
tos
Integer
0 - not accepting / 1 - accepted Terms of service
phone
String
(optional) phone number
first_name
String
(optional) First name
last_name
String
(optional) Last name
street_addr
String
(optional) Street addr
state
String
(optional) 2 letter state code (CA, AL)
zip
String
(optional) eg 07123
city
String
(optional) City
pcp_name
String
(optional) Primary Care Physician Name
pcp_phone
String
(optional) Primary Care Physician Phone (10 digit)
timezone
String
(optional) See timezone list below
photo
String
(optional) File id retrieved from POST /files
API call to upload photo
To delete the uploaded avatar, pass empty string. lat
, long
??? gps | Object | json object, min lat, long
Timezone List
Code Block |
---|
$timezones = array(
'America/Los_Angeles' => "(GMT-08:00) Pacific Time (US & Canada)",
'America/Denver' => "(GMT-07:00) Mountain Time (US & Canada)",
'America/Chicago' => "(GMT-06:00) Central Time (US & Canada)",
'America/New_York' => "(GMT-05:00) Eastern Time (US & Canada)",
'Pacific/Pago_Pago' => "(GMT-11:00) Coordinated Universal Time-11",
'Pacific/Honolulu' => "(GMT-10:00) Hawaii",
'America/Anchorage' => "(GMT-09:00) Alaska",
'America/Mazatlan' => "(GMT-07:00) Chihuahua, La Paz, Mazatlan",
'America/Guatemala' => "(GMT-06:00) Central America",
'America/Mexico_City' => "(GMT-06:00) Guadalajara, Monterrey, Mexico City",
'America/Regina' => '(GMT-06:00) Saskatchewan',
'America/Bogota' => "(GMT-05:00) Bogota, Lima, Quito",
'America/Caracas' => "(GMT-04:30) Caracas",
'America/Asuncion' => "(GMT-04:00) Asuncion",
'America/Halifax' => "(GMT-04:00) Atlantic Time (Canada)",
'America/Santiago' => "(GMT-04:00) Santiago",
'America/St_Johns' => "(GMT-03:30) St Johns, Newfoundland",
'America/Buenos_Aires' => "(GMT-03:00) Buenos Aires",
'America/Godthab' => "(GMT-03:00) Godthab, Greenland",
'America/Montevideo' => "(GMT-03:00) Montevideo",
'America/Sao_Paulo' => "(GMT-03:00) Sao Paulo, Brasilia",
'America/Noronha' => "(GMT-02:00) Mid-Atlantic",
'Atlantic/Azores' => "(GMT-01:00) Azores",
'Atlantic/Cape_Verde' => "(GMT-01:00) Cape Verde Is.",
'Europe/London' => "(GMT+00:00) Dublin, Edinburgh, Lisbon, London",
'UTC' => "(GMT+00:00) Monrovia, Reykjavik",
'Europe/Berlin' => "(GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna",
'Europe/Prague' => "(GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague",
'Europe/Paris' => "(GMT+01:00) Brussels, Copenhagen, Madrid, Paris",
'Europe/Warsaw' => "(GMT+01:00) Sarajevo, Skopje, Warsaw, Zagreb",
'Africa/Windhoek' => "(GMT+01:00) Windhoek",
'Africa/Johannesburg' => "(GMT+02:00) Johannesburg, Harare, Pretoria",
'Asia/Beirut' => "(GMT+02:00) Beirut",
'Europe/Bucharest' => "(GMT+02:00) Athens, Bucharest",
'Europe/Istanbul' => "(GMT+02:00) Istanbul",
'Asia/Damascus' => "(GMT+02:00) Damascus",
'Asia/Jerusalem' => "(GMT+02:00) Jerusalem",
'Africa/Cairo' => "(GMT+02:00) Cairo",
'Europe/Kiev' => "(GMT+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius",
'Asia/Amman' => "(GMT+03:00) Amman",
'Europe/Minsk' => "(GMT+02:00) Kalinignrad, Minsk",
'Asia/Baghdad' => "(GMT+03:00) Baghdad",
'Asia/Riyadh' => '(GMT+03:00) Kuwait, Riyadh',
'Asia/Tehran' => "(GMT+03:30) Tehran",
'Europe/Moscow' => "(GMT+04:00) Moscow, St. Petersburg, Volgograd",
'Asia/Dubai' => "(GMT+04:00) Dubai, Abu Dhabi, Muscat",
'Asia/Yerevan' => "(GMT+04:00) Yerevan",
'Asia/Baku' => "(GMT+04:00) Baku",
'Asia/Kabul' => "(GMT+04:30) Kabul",
'Asia/Karachi' => "(GMT+05:00) Islamabad, Karachi",
'Asia/Kolkata' => "(GMT+05:30) Chennai, Kolkata, Mumbai, New Delhi",
'Asia/Colombo' => "(GMT+05:30) Sri Lanka",
'Asia/Kathmandu' => "(GMT+05:45) Kathmandu",
'Asia/Yekaterinburg' => "(GMT+06:00) Ekaterinburg",
'Asia/Dhaka' => "(GMT+06:00) Dhaka",
'Asia/Rangoon' => "(GMT+06:30) Yangon",
'Asia/Novosibirsk' => "(GMT+07:00) Novosibirsk",
'Asia/Ho_Chi_Minh' => "(GMT+07:00) Hanoi, Hochiminh City, Bangkok",
'Asia/Jakarta' => "(GMT+07:00) Jakarta",
'Asia/Krasnoyarsk' => "(GMT+07:00) Krasnoyarsk",
'Asia/Shanghai' => "(GMT+08:00) Shanghai, Beijing, Chongqing, Hong Kong, Urumqi",
'Asia/Singapore' => "(GMT+08:00) Singapore, Kuala Lumpur",
'Asia/Taipei' => "(GMT+08:00) Taipei",
'Australia/Perth' => "(GMT+08:00) Perth",
'Asia/Irkutsk' => "(GMT+09:00) Irkutsk",
'Asia/Tokyo' => "(GMT+09:00) Osaka, Sapporo, Tokyo",
'Asia/Seoul' => "(GMT+09:00) Seoul",
'Australia/Darwin' => "(GMT+09:30) Darwin",
'Australia/Adelaide' => "(GMT+09:30) Adelaide",
'Australia/Brisbane' => "(GMT+10:00) Brisbane",
'Pacific/Guam' => "(GMT+10:00) Guam, Port Moresby",
'Asia/Yakutsk' => "(GMT+10:00) Yakutsk",
'Australia/Sydney' => "(GMT+10:00) Canberra, Melbourne, Sydney",
'Australia/Hobart' => "(GMT+10:00) Hobart",
'Asia/Vladivostok' => "(GMT+11:00) Vladivostok",
'Pacific/Fiji' => "(GMT+12:00) Fiji",
'Asia/Magadan' => "(GMT+12:00) Magadan",
'Pacific/Auckland' => "(GMT+12:00) Auckland, Wellington",
'Pacific/Tongatapu' => "(GMT+13:00) Tongatapu, Nuku'alofa",
'Pacific/Apia' => "(GMT+13:00) Samoa"
)
); |
Response
Code Block |
---|
curl -X POST -H "X-ApiToken: 6366a7018a39536a1ef4b63626f8e734"
-d "password=111111&dob=1983-10-02&nationality=Vietnamese"
https://api.vsee.me/api_v3/me.json
{
"data": {
"id": "201",
"first_name": "An",
"last_name": "Nguyen",
"username": "member-201",
"dob": "1960-01-01",
"email": "an+user1@vsee.com",
"gender": 2,
"active": true,
"nationality": "Vietnamese",
"tos": true
}
}
|
POST /users/logout
Parameters
Parameter
Type
Description
tokens
Array
Array of tokens to be destroyed, e.g ['token1','token2']
or string 'token1,token2'
Response
Code Block |
---|
{
"data": true
} |
POST /tokens/refresh
Parameters
Parameter
Type
Description
refresh_token
String
Response
Code Block |
---|
curl -X POST -d "refresh_token: 6366a7018a39536a1ef4b63626f8e734" https://api.vsee.me/api_v3/tokens/refresh.json
{
"data": {
"user_id": "201",
"user_type": "200",
"token": "b21ab6cb871fa452a1193f0fbcf400d5",
"expiry": 1426236055,
"user": {
"id": "201",
"code": "55011c6c5b5c4aed99624956c0a801ee",
"username": "member-201",
"first_name": "Kristopher",
"last_name": "Nieves (201)",
"email": "an+user1@vsee.com",
"dob": "1960-01-01",
"gender": "Female",
"photo": null,
"name": "Kristopher Nieves (201)"
},
}
} |
POST /users/reset_password
Parameters
Parameter
Type
Description
email
String
Valid email to send reset password email
Response
Code Block |
---|
curl -X POST -d "email=an+1@vsee.com" https://api.vsee.me/api_v3/users/reset_password.json
{
"data": true
} |
POST /users/alive
When user is in critical workflow such as waiting for provider to call, it's required to send keep alive at certain interval recommended < 1/2 of the heartbeat value. Only "alive" patients will be able to show up on provider dashboard
Parameters
Parameter
Type
Description
heartbeat
Integer
(optional) default value is 300s, you can set your own heartbeat value, the more intermittent your network connection, the higher the value you should set. Ideally for mobile, set to about 300s and update every 250s
Response
Code Block |
---|
curl -X POST -H "X-ApiToken: 6366a7018a39536a1ef4b63626f8e734" https://api.vsee.me/api_v3/users/alive.json
{
"data": {
"last_connected": 1423023124,
"heartbeat": 300
}
}
|
POST /users/activate
It will check user info against eligibility file if configured for the current account. User will receive email with activation code.
Parameters
Parameter
Type
Description
first_name
String
last_name
String
email
String
e.g an@vseeclinic.com
dob
String
YYYY-MM-DD
e.g 1988-10-02
ssn
String
4 digits e.g 1234
, 1111
Response
Code Block |
---|
curl -X POST -d "first_name=An&last_name=Nguyen&email=an@vsee.com" https://api.vsee.me/api_v3/users/activate.json
{
"data": true
}
|
EMR API
GET /users/:id/emr
Parameters
Parameter
Type
Description
id
String
User’s or "-
" (dash) for current user
Response
Code Block |
---|
curl -k -X GET -H "X-ApiToken: 5a2eb231d652b49f4d7fc0fbb78328fb" -H "X-AccountCode: vclinic" "https://api.vsee.me/api_v3/users/575/emr"
{
"data": {
"allergies": {
"data": [
{
"substance": "A+D"
}
],
"modified": 1467667527,
"modified_by": {
"id": "575",
"type": "200",
"subtype": "",
"first_name": "Keven2",
"last_name": "Teodoro2",
"title": "Dr.",
"Suffix": "MD"
}
},
"conditions": {
"data": [
{
"condition": "Bleeding problem"
}
],
"modified": 1465941203,
"modified_by": {
},
...
}
}
} |
POST /users/:id/emr/:name
Input fields should follow schema from GET /emr/schema
for corresponding :name schema.
Parameters
Parameter
Type
Description
id
String
User’s or "-" (dash) for current user
name
String
Name of emr schema. Eg: conditions, surgeries, allergies, medications, family_conditions, social_history, health_habits
data
JSON
The health data object
data_not_reported
Boolean
True: User selects not to declare any data; False: User decides to input some data
Conditions {"data":[{"condition":"Asthma"},{"condition":"Bleeding problem"}], "data_not_reported":false}
Surgeries {"data":[{"procedure":"Heart valve replaced"}], "data_not_reported":false}
Family History {"data":[{"condition":"Alcoholism","relations":["Mother","Father"]},{"condition":"Asthma","relations":["Mother","Father"]}], "data_not_reported":false}
Social History {"data":{"marital_status":"Single","highest_ed":"Grammar school","occupation":"test","num_kids":"5"}, "data_not_reported":false}
Health Habits {"data":{"smoking":"Never","alcohol":"Never","drugs":"qwerty","exercise":"Never"}, "data_not_reported":false}
Medications {"data":[{"name": "Tylenol"}], "data_not_reported":false}
Allergies {"data":[{ "substance": "1-Day" }, {"substance": "12 Hour Nasal"}], "data_not_reported":false}
Response
Code Block |
---|
curl -k -X POST -H "X-ApiToken: 5a2eb231d652b49f4d7fc0fbb78328fb" -H "X-AccountCode: vclinic" -H "Content-Type: application/json" -d '{"data":[{"condition":"Asthma"},{"condition":"Bleeding problem"}],"data_not_reported":false}' "https://api.vsee.me/api_v3/users/575/emr/conditions"
{
"data": {
"data": {
"marital_status": "Single",
"highest_ed": "Grammar school",
"occupation": "test",
"num_kids": "5"
}
}
}
|
ePrescribe API
GET /users/:id/erx/prescriptions
Get list of current prescriptions for a patient.
Parameters
Parameter
Type
Description
status
String
Status of prescriptions. Send "Current" by default.
Response
Code Block |
---|
{
"data": [
{
"ID": "101544",
"DrugID": "69202",
"NDC": "59390003613",
"RxNormCode": "1000990",
"Drug": "12 Hour Nasal 0.05% nasal spray",
"Supply": false,
"Compound": false,
"Directions": "1 Milliliter(s) 1 to 2 times a day",
"Qty": 5,
"QtyQual": "Milliliter",
"Refills": 0,
"DaysSupply": 0,
"SubstitutionAllowedFlag": 1,
"Schedule": 0,
"PharmacyNote": "",
"InternalNote": "",
"PrescriberId": "403",
"LocationId": "Cep tuc ID",
"PrescriptionDate": "2016-03-09T00:00:00",
"SignDate": "0001-01-01T00:00:00",
"Status": "Current",
"PharmacyNcpdpId": "0001060",
"RouteDetail": "e-Sent:Mar 9 2016 8:38AM Test 000 Pharmacy 10.6MU<br />Sent",
"PartnerMedID": "",
"PrescriberName": "Dr. Rocky Charlette, N.P."
}
]
}
|
GET /users/:id/erx/pharmacies
Parameters
Parameter
Type
Description
id
String
User ID or dash (-) for current user
Response
Array of Pharmacy object
Code Block |
---|
curl -k -X GET -H "X-ApiToken: c1dfcb553b2395a902722387222310a4" -H "X-AccountCode: vclinic" "https://api.vsee.me/api_v3/users/575/erx/pharmacies"
{
"data": [
{
"is_default": true
"name": "4700 Sunset Blvd",
"address": "4700 Sunset Boulevard",
"address_more": "2nd line of address",
"code": "0561539",
"city": "Los Angeles",
"country": "",
"state": "CA",
"zip": "90027",
"phone": "8663528725",
"fax": "8663528725",
"lat": 36.800488,
"long": -116.718750,
"distance": 0.95993211712521
}
]
} |
POST /users/:id/erx/pharmacies
Save patient’s currently chosen pharmacy.
Parameters
Parameter
Type
Description
address
String
1010 UNIVERSITY AVENUE, SAN DIEGO, CA, 92103
address_more
String
code
String
5555008
name
Date
02855
city
String
Los Angeles
country
String
state
String
CA
zip
String
90027
phone
String
4017707046
fax
String
8663528725
lat
Double
36.800488
long
Double
-116.718750
distance
Double
0.95993211712521
type
String
mdtoolbox
extra
Object
Unmodified data returned by pharmacy search API
Response
Code Block |
---|
curl -k -X POST -H "X-ApiToken: c1dfcb553b2395a902722387222310a4" -H "X-AccountCode: vclinic" -H "Content-Type: application/json" -d ' {
"name": "A247PC00-Anesthesia 24/7, PC",
"address": "Freas Avenue, 1200",
"address_more": "",
"code": "1001103",
"city": "Berwick",
"country": "",
"state": "PA",
"zip": "18063",
"phone": "5707525572",
"fax": "6153972423",
"type": "mdtoolbox",
"extra": {
"NCPDPID": "1001103",
"StoreName": "A247PC00-Anesthesia 24/7, PC",
"Addr1": "1200 Freas Avenue",
"Addr2": "",
"City": "Berwick",
"State": "PA",
"Zip": "18063",
"Phone": "5707525572",
"Fax": "6153972423",
"Email": "",
"ServiceLevel": 1
}
}
"https://api.vsee.me/api_v3/users/575/erx/pharmacies"
{
"data": true
}
|
DELETE /users/:id/erx/pharmacies/:code
Delete the specified pharmacy from the user profile.
Parameters
Parameter
Type
Description
Response
Code Block |
---|
curl -k -X DELETE -H "X-ApiToken: c1dfcb553b2395a902722387222310a4" -H "X-AccountCode: vclinic" -H "Content-Type: application/json"
"https://api.vsee.me/api_v3/users/575/erx/pharmacies/12834"
{
"data": true
}
|
Visits API
POST /intakes
Create intake information
Parameters
Parameter
Type
Description
provider_id
Integer
(optional) The ID of the provider who is being visited
reason_for_visit
String
(optional) Reason for visit
type
Integer
(optional) Visit type: 1 - walkin; 2 - schedule
member_id
String
(optional) Patient’s code ID on behalf of whom the intake will be created
room_code
String
Room’s code
attachments
Array
(optional) Multiple formats supported: [{id:"577af3e6-9e48-4a51-9315-2ba8c0a8210a"}, ...] or ["577af3e6-9e48-4a51-9315-2ba8c0a8210a", ...] or 577af3e6-9e48-4a51-9315-2ba8c0a8210a,577af3e6-9e48-4a51-9315-2ba8c0a8210a,...
location
String
(optional) CA/AL/...
phone
String
(optional) 7123465789
Response
Code Block |
---|
curl -k -X POST -d "provider=541&reason_for_visit=Test&reset=true&type=1" https://api.vsee.me/api_v3/intakes.json
{
"data": {
"id": "56e8c536-566c-44b6-bbca-66f0ac1f0144"
}
}
|
POST /intakes/:id
Update intake information
Parameters
Parameter
Type
Description
provider_id
Integer
(optional) The ID of the provider who is being visited
reasonforvisit
String
(optional) Reason for visit
type
Integer
(optional) Visit type: 1 - walkin; 2 - schedule
member_id
String
(optional) Patient’s code ID on behalf of whom the intake will be created
room* room_code
String
Room’s code
attachments
Array
Multiple formats supported: [{id:"577af3e6-9e48-4a51-9315-2ba8c0a8210a"}, ...] or ["577af3e6-9e48-4a51-9315-2ba8c0a8210a", ...] or 577af3e6-9e48-4a51-9315-2ba8c0a8210a,577af3e6-9e48-4a51-9315-2ba8c0a8210a,...
location
String
CA/AL/...
phone
String
7123465789
consultation
Object
(optional) Required for payment related, the consultation objects can be found at GET /rooms/:code
API
Response
Code Block |
---|
curl -X POST -H "X-ApiToken: 5a2eb231d652b49f4d7fc0fbb78328fb" -H "X-AccountCode: vclinic" -H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW" -F "location=CA" -F "phone=7123456789" -F "reason_for_visit=Test intake functionalities 2" "https://api.vsee.me/api_v3/intakes/57a0705e-1c4c-4f24-b51d-3c71ac1f0144"
{
"data": {
"id": "56e8c536-566c-44b6-bbca-66f0ac1f0144"
}
} |
GET /intakes/:id
Get the specific intake
Parameters
None
Response
Code Block |
---|
curl -X GET \
-H "X-ApiToken: 5a2eb231d652b49f4d7fc0fbb78328fb" \
-H "X-AccountCode: vclinic" \
"https://api.vsee.me/api_v3/intakes/57a0705e-1c4c-4f24-b51d-3c71ac1f0144"
{
"data": {
"modified": 1471465080,
"created": 1471465080,
"type": "1",
"reason_for_visit": "the reason",
"attachments": [
{
"_id": "57b4c65d-7ef8-461f-8951-43b1ac1f0144",
"name": "575004c7-b350-421d-8542-4dcdac1f0144.png",
"path": "files/2016/08/17/57b4c65d-7ef8-461f-8951-43b1ac1f0144.png",
"size": 12859,
"ext": "png",
"type": 0,
"creator_id": "575",
"remark": null,
"using": 1,
"modified": {
"sec": 1471465053,
"usec": 966000
},
"created": {
"sec": 1471465053,
"usec": 967000
}
}
],
"id": "57b4c678-de20-4c1a-a52b-43e9ac1f0144"
}
}
|
POST /visits/add_walkin
Create a walkin visit
Parameters
Parameter
Type
Description
provider_id
String
(optional) The ID of the provider who is being visited if patient is starting an appointment. Shouldn’t pass this for walkins.
intake_id
String
The ID of the intake.
visit_data_id
String
The ID of a scheduled appointment. This one is used in the case when the patient visits a scheduled appointment.
visit_id
String
(optional) The ID of a scheduled appointment. This one is used in the case when the patient visits a scheduled appointment.
user_code
String
(optional) Patient’s code ID on behalf of whom the intake will be created
room_code
String
Current room’s code in which the visit will be created
Response
Code Block |
---|
curl -k -X POST \
-H "X-ApiToken: 5a2eb231d652b49f4d7fc0fbb78328fb" \
-H "X-AccountCode: vclinic" \
-H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW" \
-F "provider_id=826" \
-F "intake_id=57a0705e-1c4c-4f24-b51d-3c71ac1f0144" \
-F "room_code=ceproom1" \
"https://api.vsee.me/api_v3/visits/add_walkin"
{
"data": {
"id": "1525",
"member_id": "508",
"provider_id": "509",
"account_code": null,
"code": "56e8c580f55c44a2868b66f0ac1f0144",
"start": "1458095488",
"end": "1458096388",
"actual_start": null,
"actual_end": null,
"specialty_id": null,
"state": null,
"type": "1",
"status": "10",
"completed_by": null,
"created": 1458095488,
"modified": 1458095488,
"room_id": null,
"_id": "1525",
"payment": {
"duration": 15,
"amount": "00.00",
"description": "FruitStreet Config Level One-time charge"
},
"intake": {
"provider": "509",
"reason_for_visit": "Test intake functionalities 1",
"type": "1",
"modified": 1458095488,
"created": 1458095414,
"visit_id": "1525",
"id": "56e8c536-566c-44b6-bbca-66f0ac1f0144"
},
"provider": {
"id": "509",
"first_name": "Ligeng",
"last_name": "Doctor",
"vseeid": "wellikodev+user509",
"title": ""
},
"member": {
"id": "508",
"first_name": "Ligeng",
"last_name": "01",
"vseeid": "wellikodev+user508",
"dob": "2014-09-10",
"gender": 1,
"phone": "6506506500"
},
}
}
|
POST /visits/close
Close/Cancel a visit or an appointment
Parameters
Parameter
Type
Description
id
String
The ID of the visit/appointment
reason
String
"patientendcall" - Patient click End Call button on VSee
"patientexitroom" - Patient click Exit Waiting Room
"call_ended" - When call ended not by patient, could be due to network problem or provider ended the call
"patientcancelappointment" - Patient click cancel appointment button
"maxwaitingtime_reached" - Patient side max waiting time reached
Response
Code Block |
---|
curl -k -X POST -H "X-ApiToken: 5a2eb231d652b49f4d7fc0fbb78328fb" -H "X-AccountCode: vclinic" -H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW" -F "id=14" "https://api.vsee.me/api_v3/visits/close"
{
"data": {
"id": "1525"
}
} |
Appointment API
GET /availability [public access available upon request]
Get provider's available slots
Parameters
Parameter
Type
Location
Description
room_code
String
Query string
(optional) Room code. If not given, will try to fall back to Intake.room
start
Integer
Query string
Search for available slots from this start time
end
Integer
Query string
Search for available slots up to this end time
duration
Integer
Query string
Search for available slots during certain seconds
provider_id
String
Query string
(optional) Pick only this provider’s slots
intake_id
String
Query string
Intake ID. Should be passed when patient is choosing a slot for an appointment. It will use intake’s location, specialty, etc.
consultation_id
String
Query string
Consultation ID. This will help to determine slot duration
X-ApiKey
String
Header
(beta) Header value is required if the application want to retrieve availablity without user token
X-ApiSecret
String
Header
(beta) Header value is required if the application want to retrieve availablity without user token
Notes: If application want to retrieve providers availability slots for a room without user token, the following are required X-ApiKey
, X-ApiSecret
, room_code
, start
, end
, consultation_id
. location
will be required if you want to filter by state as well.
Notes: The time range parameters 'start', 'end' and 'duration' obey the following rules:
input
actual
start
end
duration
start
end
duration
1
not set
not set
not set
available
available+4d
4d
2
set
not set
not set
start
If 'nearest' is set, then we search for the nearest slots since the start time
start+4d
nearest+4d
4d
3
set
set
not set
start
end
(ignored)
4
set
not set
set
start
If 'nearest' is set, then we search for the nearest slots since the start time
start+duration
nearest+duration
duration
5
not set
set
not set
end-4d
end
4d
6
not set
set
set
end-duration
end
duration
7
not set
not set
set
available
available+duration
duration
8
set
set
set
start
end
(ignored)
(available: The start time of the 1st available slot)
Response
Code Block |
---|
curl -k -X GET -H "X-ApiToken: 6366a7018a39536a1ef4b63626f8e734" https://api.vsee.me/api_v3/availability
{
"data": {
"slots": [
{
"slot_id": "5277",
"slot_start": 1470186000,
"slot_end": 1470186900,
"slot_booked": 0,
"slot_available": 1,
"group_id": "57106583f46874e70afc93b4"
},
]
}
]
}
curl -X GET \
'https://api.vsee.me/api_v3/availability?consultation_id=593999b2-08e4-404c-82f8-772dc0a8016f&start=1497063600&end=1497065400&location=AL&room_code=234yn' \
-H 'x-accountcode: vclinic' \
-H 'x-apikey: vclinic_api_key' \
-H 'x-apisecret: vclinic_api_secret' \
{
"data": {
"slots": [
{
"slot_id": "4",
"slot_start": 1497063600,
"slot_end": 1497065400,
"slot_booked": 0,
"slot_available": "1",
"group_id": "59399694-9ec0-4108-927d-7776c0a8016f"
}
]
}
}
|
The above data response format will change soon to
Code Block |
---|
{
"data": [
{
"start": 1470186000,
"end": 1470186900,
"providers": ["123", "345"]
},
{
"start": 1470186000,
"end": 1470186900,
"providers": ["123", "345"]
}
]
]
}
|
POST /visits
Create an appointment
Parameters
Parameter
Type
Description
member_id
String
The ID of the visiting patient (optional - only use in paramedic workflow)
slot_start
Integer
The timestamp of the beginning of the appointment (in UNIX timestamp format)
slot_end
Integer
The timestamp of the ending of the appointment (in UNIX timestamp format)
room_code
String
Room code (required)
type
Integer
2 - scheduling
intake_id
String
The ID of the intake
provider_id
String
(optional) The ID of the provider who is being visited
Response
Code Block |
---|
curl -X POST \
-H "X-ApiToken: 5a2eb231d652b49f4d7fc0fbb78328fb" \
-H "X-AccountCode: vclinic" \
-H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW" \
-F "member_id=575" \
-F "slot_start=1470669300" \
-F "slot_end=1470670200" \
-F "type=2" \
-F "intakeId=57a0705e-1c4c-4f24-b51d-3c71ac1f0144" \
"https://api.vsee.me/api_v3/appointments"
{
"data": {
"member_id": 17778181,
"provider_id": 12456470,
"account_code": "vclinic",
"code": "615f2e2eabc46ad94e9b6457b11",
"start": 1631628616,
"end": 1631628916,
"actual_start": 1631628211,
"actual_end": null,
"specialty_id": null,
"state": null,
"type": 2,
"status": 30,
"completed_by": null,
"room_id": 1002387,
"room_code": "vclinicroom",
"modified": 1633630312,
"created": 1633627694,
"provider": {
"id": "12456470",
"email": "anton+providersa@vseelab.com",
"subtype": "482",
"vseeid": "anton+providersa@vseelab.com",
"photo": null,
"full_name": "Anton Provider",
"title": "",
"suffix": ""
},
"member": {
"id": "17778181",
"code": "anton+vclinic2@vseelab.com",
"email": "anton+vclinic2@vseelab.com",
"vseeid": "cmo+615f28cd70804d8994d62bd564457b11",
"photo": null,
"full_name": "Anton Test",
"phone": "5551231122"
},
"subType": 3,
"more_provider_ids": null,
"guest_emails": null,
"guest_mobiles": null,
"reminder_type": null,
"reminder_time": null,
"host_ids": [
"12456470"
],
"hosts": [
{
"username": "anton+providersa@vseelab.com",
"email": "anton+providersa@vseelab.com",
"phone": "",
"timezone": "America/Los_Angeles",
"vseeid": "anton+providersa@vseelab.com",
"full_name": "Anton Provider",
"title": "",
"suffix": "",
"id": "12456470",
"photo_attachment_id": "",
"role": "owner"
}
],
"creator": {
"id": "15729940",
"code": "60aed4242c90409099385cef64457b11",
"vseeid": "d55d2f77ff3653891a587fdfa83207b4@vsee.com",
"type": 160,
"subtype": "",
"first_name": null,
"last_name": null,
"account_code": "vclinic"
},
"pending_actions": [],
"is_test": false,
"meeting": {
"recording_auto_start": false,
"phone_numbers": {
"US": [
"+1.650.758.0255"
]
},
"hosts": [
"anton+providersa@vseelab.com",
"chau+provider@vseelab.com"
],
"expiry": 1633643316,
"conference_pin": 838759,
"meeting_id": "1633627695040_2cc263f4-3d07-49fa-97b1-b2955ff40dfa__jitsi"
},
"one_time_link_token": "l0vht6wkxj",
"notify_list": [],
"payment": {
"duration": null,
"amount": "25.00",
"description": "Cloud Clinic Default One-time Charge Message",
"id": "615cec5b-14c8-4493-b9ce-365764457b11"
},
"intake_id": "615f2de7-8ab8-48d3-80d8-53f564457b11",
"related_walkin_id": "18407370",
"call_logs": {
"total_start": 1633628208,
"total_end": 1633628268,
"total_duration": 60,
"waiting_time": 0,
"provider_id_1": "anton+providersa@vseelab.com",
"call_start_1": 1633628208,
"call_duration_1": 60,
"wait_time_1": 0,
"patients": [
"cmo+615f28cd70804d8994d62bd564457b11"
],
"source": "v2",
"source_ids": [
"1633628104000_1633627695040_2cc263f4-3d07-49fa-97b1-b2955ff40dfa__jitsi",
"1633628745000_1633627695040_2cc263f4-3d07-49fa-97b1-b2955ff40dfa__jitsi"
]
},
"incharge": false,
"intake": {
"provider_id": "12456470",
"member_id": "17778181",
"room_code": "vclinicroom",
"location": "MI",
"phone": "5551234415",
"type": "2",
"room": "vclinicroom",
"modified": 1633627623,
"created": 1633627623,
"visit_id": "18407167",
"attachments": "",
"reason_for_visit": "",
"consent": "true",
"consultation": {
"description": "test",
"duration": 60,
"charge": false,
"group": false,
"slots": 1,
"amount": 0,
"visible_to_patient": true,
"id": "615cec5b-14c8-4493-b9ce-365764457b11",
"currency": "USD"
},
"id": "615f2de7-8ab8-48d3-80d8-53f564457b11"
},
"related_walkin": {
"start": 1633628101,
"end": 1633631701,
"status": 30,
"id": "18407370"
},
"postvisit": {
"member_id": "17778181",
"class_id": null,
"visit_id": "18407167",
"modified": 1633627695,
"created": 1633627695,
"id": "615f2e2f-c240-4088-a28b-594b64457b11"
},
"isEditExpired": false,
"room": {
"id": "10023087",
"code": "vclinicroom",
"name": "VClinic UAT",
"domain": "vclinic.vseepreview.com",
"account_code": "vclinic",
"slug": "UAT"
},
"account": {
"code": "vclinic",
"name": "VClinic",
"domain": "vclinic.vseepreview.com",
"vsee_api": {
"meeting": {
"enabled": true,
"guest_invite_enabled": true,
"adhoc_group_call": {
"disabled": true
}
}
}
},
"root_visit": {
"id": "18407167",
"group_chat_id": null,
"participants": null
},
"id": "18407167",
"subtype": 3
},
"s": "ms"
} |
GET /visits
Get the visits list of the patient. The frontend can check the data["start"] field. If the start field is greater than the current timestamp then the visit is a upcoming appointment, otherwise it’s a past session. Group appointments and one-to-one appointments are now differentiated by the field visit_group_id
which only exists in group appointments data.
For one-to-one appointments, consultation information can be retrieved from intake.consultation; for group appointments, consultation information has to be got from visit_group.consultation.
The following sample response offers 2 example for one-to-one appointment and one for group appointment.
Fields that can be returned for fields with format: "html"
: <u>, <b>, <i>, <strong>, <ul>, <ol>, <li>, <p>, <br>
Parameters
Response
Code Block |
---|
curl -k -X GET \
-H "X-ApiToken: 5a2eb231d652b49f4d7fc0fbb78328fb" \
-H "X-AccountCode: vclinic" \
"https://api.vsee.me/api_v3/visits.json"
{
"data": [
{
"id": "7727",
"member_id": "575",
"provider_id": "1096",
"account_code": "vclinic",
"code": "57a07c26947c4544aeef4e5cac1f0144",
"start": "1470669300",
"end": "1470670200",
"actual_start": null,
"actual_end": null,
"specialty_id": null,
"state": null,
"type": "2",
"subtype": "3",
"status": "20",
"completed_by": null,
"created": 1470135334,
"modified": 1470135334,
"room_id": null,
"_id": "7727",
"payment": {
"duration": null,
"amount": "0.00",
"description": "CMO Config Level One-time charge"
},
"invoice_id": "57a071d0-c0dc-45a6-9bc3-40fdac1f0144",
"provider": {
"id": "1096",
"code": "563b40f082584368bee10335ac1f0144",
"first_name": "Anton",
"last_name": "Provider III",
"username": "anton+provider3@vsee.com",
"vseeid": "conciergedev+user1096",
"email": "anton+provider3@vsee.com",
"photo": "https://api.vsee.me/api_v3/files/index/app_user/photo/1096/?auth_code=8350f279578774a6e31787fc5a5a05d2948770e0",
"active": true,
"title": "",
"suffix": "",
"tos": true,
"phone": "(334) 229-4100",
"subtype": "482"
},
"member": {
"id": "575",
"code": "553ea41edfd041bd94475276ac1f0144",
"first_name": "Keven2",
"last_name": "Teodoro2",
"username": "anton+1@vsee.com",
"vseeid": "conciergedev+user575",
"dob": "1983-02-02",
"email": "anton+1@vsee.com",
"gender": 2,
"active": true,
"tos": true,
"phone": "7123456111",
"subtype": ""
}
},
"postvisit": {
"visit_id": "9709",
"modified": 1473370072,
"created": 1473368099,
"member_id": "1290",
"modifiedBy": "Alexey Provider 2",
"draft": false,
"attachments": [],
"physical_exam": "<p>dfvevofivuoiwue<\/p><p>iou<\/p><p>oi<\/p>",
"assessment_plan": "<p>oiuoiwfuweoifu<\/p><p>efweiofweiofuweoif<\/p><p><br><\/p>",
"reason_for_visit": "Allergic reaction",
"reason_for_visit_other": "",
"schema": "",
"diagnosis": "Allergic reaction,initial encounter (T78.40XA),Asthma (J45.909)",
"patient_instructions": "<p>Plan \/ Discharge...<br><\/p>",
"disposition": "Referred to ED",
"dea": "",
"npi": ""
}
}
|
GET /visits/:id
Get detailed information for a certain appointment.
Group appointments and one-to-one appointments are now differentiated by the field "visitgroupid" which only exists in group appointments data.
For one-to-one appointments, consultation information can be retrieved from intake.consultation; for group appointments, consultation information has to be got from visit_group.consultation.
Parameters
None
Response
Code Block |
---|
curl -k -X GET \
-H "X-ApiToken: 5a2eb231d652b49f4d7fc0fbb78328fb" \
-H "X-AccountCode: vclinic" \
"https://api.vsee.me/api_v3/visits/7727.json"
{
"data": {
"member_id": 17778181,
"provider_id": 12456470,
"account_code": "vclinic",
"code": "615f2e2eabc46ad94e9b6457b11",
"start": 1631628616,
"end": 1631628916,
"actual_start": 1631628211,
"actual_end": null,
"specialty_id": null,
"state": null,
"type": 2,
"status": 30,
"completed_by": null,
"room_id": 1002387,
"room_code": "vclinicroom",
"modified": 1633630312,
"created": 1633627694,
"provider": {
"id": "12456470",
"email": "anton+providersa@vseelab.com",
"subtype": "482",
"vseeid": "anton+providersa@vseelab.com",
"photo": null,
"full_name": "Anton Provider",
"title": "",
"suffix": ""
},
"member": {
"id": "17778181",
"code": "anton+vclinic2@vseelab.com",
"email": "anton+vclinic2@vseelab.com",
"vseeid": "cmo+615f28cd70804d8994d62bd564457b11",
"photo": null,
"full_name": "Anton Test",
"phone": "5551231122"
},
"subType": 3,
"more_provider_ids": null,
"guest_emails": null,
"guest_mobiles": null,
"reminder_type": null,
"reminder_time": null,
"host_ids": [
"12456470"
],
"hosts": [
{
"username": "anton+providersa@vseelab.com",
"email": "anton+providersa@vseelab.com",
"phone": "",
"timezone": "America/Los_Angeles",
"vseeid": "anton+providersa@vseelab.com",
"full_name": "Anton Provider",
"title": "",
"suffix": "",
"id": "12456470",
"photo_attachment_id": "",
"role": "owner"
}
],
"creator": {
"id": "15729940",
"code": "60aed4242c90409099385cef64457b11",
"vseeid": "d55d2f77ff3653891a587fdfa83207b4@vsee.com",
"type": 160,
"subtype": "",
"first_name": null,
"last_name": null,
"account_code": "vclinic"
},
"pending_actions": [],
"is_test": false,
"meeting": {
"recording_auto_start": false,
"phone_numbers": {
"US": [
"+1.650.758.0255"
]
},
"hosts": [
"anton+providersa@vseelab.com",
"chau+provider@vseelab.com"
],
"expiry": 1633643316,
"conference_pin": 838759,
"meeting_id": "1633627695040_2cc263f4-3d07-49fa-97b1-b2955ff40dfa__jitsi"
},
"one_time_link_token": "l0vht6wkxj",
"notify_list": [],
"payment": {
"duration": null,
"amount": "25.00",
"description": "Cloud Clinic Default One-time Charge Message",
"id": "615cec5b-14c8-4493-b9ce-365764457b11"
},
"intake_id": "615f2de7-8ab8-48d3-80d8-53f564457b11",
"related_walkin_id": "18407370",
"call_logs": {
"total_start": 1633628208,
"total_end": 1633628268,
"total_duration": 60,
"waiting_time": 0,
"provider_id_1": "anton+providersa@vseelab.com",
"call_start_1": 1633628208,
"call_duration_1": 60,
"wait_time_1": 0,
"patients": [
"cmo+615f28cd70804d8994d62bd564457b11"
],
"source": "v2",
"source_ids": [
"1633628104000_1633627695040_2cc263f4-3d07-49fa-97b1-b2955ff40dfa__jitsi",
"1633628745000_1633627695040_2cc263f4-3d07-49fa-97b1-b2955ff40dfa__jitsi"
]
},
"incharge": false,
"intake": {
"provider_id": "12456470",
"member_id": "17778181",
"room_code": "vclinicroom",
"location": "MI",
"phone": "5551234415",
"type": "2",
"room": "vclinicroom",
"modified": 1633627623,
"created": 1633627623,
"visit_id": "18407167",
"attachments": "",
"reason_for_visit": "",
"consent": "true",
"consultation": {
"description": "test",
"duration": 60,
"charge": false,
"group": false,
"slots": 1,
"amount": 0,
"visible_to_patient": true,
"id": "615cec5b-14c8-4493-b9ce-365764457b11",
"currency": "USD"
},
"medical_profile": {
"_id": "553ea41ef468747652d11034",
"user_id": "575",
"family_conditions": {
"data": [
{
"condition": "Diabetes",
"relations": [
"Paternal grandparents"
]
},
{
"condition": "Ulcer disease",
"relations": [
"Mother"
]
}
],
"modified": 1467623311,
"modifiedBy": "Keven Teodoro"
},
"conditions": {
"data": [
{
"condition": "Kidney disease"
},
{
"condition": "Kidney stones"
},
{
"condition": "Stroke"
}
],
"modified": 1472059195,
"modifiedBy": "Keven2 Teodoro2"
},
"social_history": {
"data": [],
"modified": 1472588123,
"modifiedBy": "Keven2 Teodoro2",
"modified_by": {
"id": "575",
"type": 200,
"subtype": "",
"first_name": "Keven2",
"last_name": "Teodoro2",
"photo": ""
}
},
"health_habits": {
"data": [],
"modified": 1470128370,
"modifiedBy": "Keven2 Teodoro2"
},
"surgeries": {
"data": [
{
"procedure": "C-section"
},
{
"procedure": "Heart valve replaced"
}
],
"modified": 1471769856,
"modifiedBy": "Keven2 Teodoro2"
},
"medications": {
"data": [],
"modified": 1471769958,
"modifiedBy": "Keven2 Teodoro2",
"modified_by": {
"id": "575",
"type": "200",
"subtype": "",
"first_name": "Keven2",
"last_name": "Teodoro2"
}
},
"allergies": {
"data": [],
"modified": 1471986123,
"modifiedBy": "Keven2 Teodoro2",
"modified_by": {
"id": "575",
"type": "200",
"subtype": "",
"first_name": "Keven2",
"last_name": "Teodoro2"
}
},
"modified": {
"sec": 1472059195,
"usec": 806000
},
"created": {
"sec": 1430168606,
"usec": 596000
}
},
"id": "615f2de7-8ab8-48d3-80d8-53f564457b11"
},
"related_walkin": {
"start": 1633628101,
"end": 1633631701,
"status": 30,
"id": "18407370"
},
"postvisit": {
"member_id": "17778181",
"class_id": null,
"visit_id": "18407167",
"modified": 1633627695,
"created": 1633627695,
"id": "615f2e2f-c240-4088-a28b-594b64457b11"
},
"postvisit": {
"visit_id": "9709",
"modified": 1473370072,
"created": 1473368099,
"member_id": "1290",
"modifiedBy": "Second Provider 2",
"draft": false,
"attachments": [],
"physical_exam": "<p>dfvevofivuoiwue<\/p><p>iou<\/p><p>oi<\/p>",
"assessment_plan": "<p>oiuoiwfuweoifu<\/p><p>efweiofweiofuweoif<\/p><p><br><\/p>",
"reason_for_visit": "Allergic reaction",
"reason_for_visit_other": "",
"schema": "",
"diagnosis": "Allergic reaction,initial encounter (T78.40XA),Asthma (J45.909)",
"patient_instructions": "<p>Plan \/ Discharge...<br><\/p>",
"disposition": "Referred to ED",
"dea": "",
"npi": "",
"attachments": [
{
"_id": "57e4f034-3a0c-4b1d-bc15-221bac1f0144",
"name": "Water_nature_canyon_cliffs_horseshoe_bend_rivers_2560x1600.jpg",
"path": "files/2016/09/23/57e4f034-3a0c-4b1d-bc15-221bac1f0144.jpg",
"size": 1692776,
"ext": "jpg",
"type": 0,
"creator_id": "1096",
"remark": null,
"using": 1,
"modified": {
"sec": 1474621492,
"usec": 858000
},
"created": {
"sec": 1474621492,
"usec": 858000
}
}
]
},
"isEditExpired": false,
"room": {
"id": "10023087",
"code": "vclinicroom",
"name": "VClinic UAT",
"domain": "vclinic.vseepreview.com",
"account_code": "vclinic",
"slug": "UAT"
},
"account": {
"code": "vclinic",
"name": "VClinic",
"domain": "vclinic.vseepreview.com",
"vsee_api": {
"meeting": {
"enabled": true,
"guest_invite_enabled": true,
"adhoc_group_call": {
"disabled": true
}
}
}
},
"prescriptionsBeforeVisit": [
{
"ID": "97316",
"DrugID": "69117",
"NDC": "00122206038",
"RxNormCode": "260654",
"Drug": "One Tab Daily with Iron oral tablet",
"Supply": false,
"Compound": false,
"Directions": "1 Milliliter(s) 1 to 2 times a day",
"Qty": 60,
"QtyQual": "Tablet",
"Refills": 0,
"DaysSupply": 0,
"SubstitutionAllowedFlag": 1,
"Schedule": 0,
"PharmacyNote": "",
"InternalNote": "",
"PrescriberId": "826",
"LocationId": "DEMO-ACCOUNT",
"PrescriptionDate": "2016-01-30T00:00:00",
"SignDate": "0001-01-01T00:00:00",
"Status": "Current",
"PharmacyNcpdpId": "0001060",
"RouteDetail": "e-Sent:Jan 30 2016 3:41PM Test 000 Pharmacy 10.6MU<br />Sent",
"PartnerMedID": "",
"PrescriberName": "Dr. John Will, M.D."
},
"prescriptions": [],
"root_visit": {
"id": "18407167",
"group_chat_id": null,
"participants": null
},
"id": "18407167",
"subtype": 3
}
} |
GET /visits/current
Get current visit in progress
Parameters
None
Response
Code Block |
---|
curl -X GET \
-H "X-ApiToken: 6366a7018a39536a1ef4b63626f8e734" \
https://api.vsee.me/api_v3/visits/current.json
{
"data": {
"id": "1504",
"member_id": "508",
"provider_id": "509",
"account_code": "fruitstreet",
"code": "56e7b1d2b90c4d68953e3d02ac1f0144",
"start": "1459973100",
"end": "1459974000",
"actual_start": null,
"actual_end": "1458024955",
"specialty_id": null,
"state": null,
"type": "2",
"status": "40",
"completed_by": "508",
"created": 1458024914,
"modified": 1458024914,
"room_id": null,
"_id": "1504",
"payment": {
"duration": 15,
"amount": "00.00",
"description": "FruitStreet Config Level One-time charge"
},
"intake": {
"provider": "509",
"reason_for_visit": "Test intake functionalities",
"reset": "true",
"type": "1",
"modified": 1458024914,
"created": 1458024708,
"visit_id": "1504",
"id": "56e7b104-ded0-4096-979b-395bac1f0144"
},
"provider": {
"id": "509",
"first_name": "Ligeng",
"last_name": "Doctor",
"username": "ligeng+provider1@vsee.com",
"vseeid": "wellikodev+user509",
"email": "ligeng+provider1@vsee.com",
"active": true,
"title": "",
"tos": false,
"phone": "6506506500"
},
"member": {
"id": "508",
"first_name": "Ligeng",
"last_name": "01",
"username": "ligeng+1@vsee.com",
"vseeid": "wellikodev+user508",
"dob": "2014-09-10",
"email": "ligeng+1@vsee.com",
"gender": 1,
"active": true,
"tos": true,
"phone": "6506506500"
}
}
}
|
Payment API
GET /billing/settings
Allow user to retrieve payment settings
Parameters
Parameter
Type
Description
Response
Code Block |
---|
{
"data": {
"stripe": {
"publishable_key": "2342342"
}
}
}
|
POST /billing/sources?room_code=abc&provider_id=12312
Allow user to add a new payment source to their account
Parameters
Parameter
Type
Location
Description
type
String
"card" for credit card, more to be supported later e.g bitcoin,.. (no need???)
token
String
token obtain from Stripe after posting card detail to api.stripe.com
room_code
String
Query string
provider_id
String
Query string
(optional)
Response
Code Block |
---|
{
"data": {
"id": "card_19DrgXBY2jn2BCqQNpjjzuay",
"type": "card",
"brand": "Visa",
"country": "US",
"exp_month": 8,
"exp_year": 2017,
"funding": "credit",
"last4": "4242",
"name": "Jack Sparrow",
"is_default": true
}
} |
DELETE /billing/sources/:id
Allow user to delete payment source from his account
Parameters
Parameter
Type
Description
id
String
Payment source id
Response
Code Block |
---|
{
"data": []
}
|
GET /billing/sources?room_code=abc&provider_id=12312
Allow user to retrieve all payment sources from their account
Parameters
Parameter
Type
Location
Description
type
String
(optional) "card" for credit card, more to be supported later e.g bitcoin,..
room_code
String
Query string
provider_id
String
Query string
(optional)
Response
Code Block |
---|
{
"data": [
{
"id": "card_19DrgXBY2jn2BCqQNpjjzuay",
"type": "card",
"brand": "Visa",
"exp_month": 8,
"exp_year": 2017,
"last4": "4242",
"name": "Jack Sparrow",
"is_default": true
},
{
"id": "card_19DrgXBY2jn2BCqQNpjjzuay",
"type": "card",
"brand": "Visa",
"exp_month": 8,
"exp_year": 2017,
"last4": "4242",
"name": "JackSparrow",
"is_default": false
}
]
}
|
GET /billing/sources/:id (new)
Allow user to retrieve a payment source from their account
Parameters
Parameter
Type
Description
id
String
Payment source id
Response
Code Block |
---|
{
"data": {
"id": "card_19DrgXBY2jn2BCqQNpjjzuay",
"type": "card",
"brand": "Visa",
"exp_month": 8,
"exp_year": 2017,
"last4": "4242",
"name": "Jack Sparrow",
"is_default": true
}
} |
PUT /billing/sources/:id
Allow user to make this card as default card
Parameters
Parameter
Type
Description
is_default
int
1
room_code
String
If it’s CC app, we need to pass this parameter
provider_id
String
If it’s FS app, then we need to pass this parameter
Response
Code Block |
---|
{
"data": {
"id": "card_19DrgXBY2jn2BCqQNpjjzuay",
"type": "card",
"brand": "Visa",
"exp_month": 8,
"exp_year": 2017,
"last4": "4242",
"name": "Jack Sparrow",
"is_default": true
}
}
|
POST /billing/invoices/process
Allow user to process invoice
Parameters
Parameter
Type
Description
promo_code
String
Coupon code
intake_id
String
Required - intake id to apply coupon code to
create_invoice
int
1
Response
Code Block |
---|
{
"data": {
"currency": "USD",
"consultation": {
"description": "30 mins",
"amount": 30,
"duration": 30,
"id": "58244a53-0f28-4ff9-bdbc-7468ac1f0144"
},
"coupon": {
"id": "10_percents_1479363579",
"object": "coupon",
"amount_off": null,
"created": 1479363580,
"currency": null,
"duration": "once",
"duration_in_months": null,
"livemode": false,
"max_redemptions": null,
"metadata": [
],
"percent_off": 10,
"redeem_by": null,
"times_redeemed": 0,
"valid": true
},
"amount_due": 27
}
}
|
Clinic Account API
GET /accounts [public access]
Get list of accounts
Response
Code Block |
---|
curl -k -X GET https://api.vsee.me/api_v3/accounts.json
{
"data": [
{
"code": "DEMO-ACCOUNT-LOCAL",
"name": "DEMO-ACCOUNT-LOCAL",
},
{
"code": "DEMO-ACCOUNT-LOCAL",
"name": "DEMO-ACCOUNT-LOCAL",
},
...
]
}
|
GET /accounts/:code [public access]
Get current member’s Account data. Each member is mapped to Account which contains some general settings. It includes schema for Intake forms, Signup form. Account.code is also used for starting visits. Intake wizard flow: Patient should go through all steps defined in 2 arrays: Account.intakesteps and Account.postintakesteps * Create / update Intake object * When Account.intakesteps are all passed, create a visit * Go through Account.postintakesteps at which the patient may update existing intake and do other things (take survey, pick pharmacy, etc) Each step has a "code" field which defines the type of content of the step. See the description below
Parameters
Parameter
Type
Description
code
String
Account’s code or dash (-) for current account
Response
Code Block |
---|
curl -k -X GET https://api.vsee.me/api_v3/accounts/vclinic.json
{
data: {
id: "56ced820-55bc-43ca-9b35-4599ac1f0144",
code: "vclinic",
domain: "demo.vsee.me",
name: "VClinic",
portal_title: "",
privacy_id: "",
states: {
signup: {
signup: [
{
name: "",
code: "signup",
next: {
title: "Enter"
},
sections: [
{
code: "signup_activate",
schema: {
first_name: {
type: "string",
required: true,
eligibility: {
field: "first_name"
}
},
last_name: {
type: "string",
required: true,
eligibility: {
field: "last_name"
}
},
dob: {
type: "string",
required: true,
eligibility: {
field: "dob"
}
},
ssn: {
type: "integer",
maxLength: 4,
required: true,
allowedEmpty: true,
eligibility: {
field: "ssn"
}
},
email: {
type: "string",
required: true
}
},
form: [
{
key: "first_name",
placeholder: "First Name",
type: "text"
},
{
key: "last_name",
placeholder: "Last Name",
type: "text"
},
{
key: "dob",
placeholder: "Date of Birth",
type: "datepicker"
},
{
key: "ssn",
placeholder: "Last 4 digit of SSN",
type: "text"
},
{
key: "email",
placeholder: "Email",
type: "email"
}
]
}
]
}
],
verification: [
{
name: "",
code: "signup_verification",
next: {
title: "Enter"
},
sections: [
{
code: "signup_verification",
schema: {
email_token: {
type: "string",
required: true
},
email: {
type: "string"
}
},
form: [
{
key: "email_token",
placeholder: "6-digit verification code",
type: "text"
}
]
}
]
}
],
update_profile: [
{
name: "New account",
code: "post_signup_update_profile",
next: {
title: "Create"
},
sections: [
{
code: "post_signup_profile",
schema: {
first_name: {
type: "string",
required: true
},
last_name: {
type: "string",
required: true
},
gender: {
type: "string",
enum: [
"male",
"female"
],
required: true
},
dob: {
type: "string",
required: true
},
password: {
type: "string",
required: true
},
password_retype: {
type: "string"
},
phone: {
type: "string",
required: false
},
street_addr: {
type: "string"
},
city: {
type: "string"
},
state: {
type: "string",
enum: [
"AL",
"AK",
"AZ",
"AR",
"CA",
"CO",
"CT",
"DE",
"DC",
"FL",
"GA",
"HI",
"ID",
"IL",
"IN",
"IA",
"KS",
"KY",
"LA",
"ME",
"MD",
"MA",
"MI",
"MN",
"MS",
"MO",
"MT",
"NE",
"NV",
"NH",
"NJ",
"NM",
"NY",
"NC",
"ND",
"OH",
"OK",
"OR",
"PA",
"RI",
"SC",
"SD",
"TN",
"TX",
"UT",
"VT",
"VA",
"WA",
"WV",
"WI",
"WY"
]
},
zip: {
type: "string"
},
pcp_name: {
type: "string"
},
pcp_phone: {
type: "string"
}
},
form: [
{
key: "first_name",
title: "First Name",
type: "text"
},
{
key: "last_name",
title: "Last Name",
type: "text"
},
{
key: "gender",
type: "radios",
title: "Gender",
titleMap: {
male: "Male",
female: "Female"
}
},
{
key: "dob",
title: "Date of Birth",
type: "datepicker"
},
{
key: "password",
title: "Password",
type: "password"
},
{
key: "password_retype",
title: "Retype password",
type: "password"
},
{
key: "phone",
type: "text",
title: "Phone number"
},
{
key: "street_addr",
type: "text",
title: "Street Addr"
},
{
key: "city",
type: "text",
title: "City"
},
{
key: "state",
type: "select",
title: "State",
titleMap: {
AL: "Alabama",
AK: "Alaska",
AZ: "Arizona",
AR: "Arkansas",
CA: "California",
CO: "Colorado",
CT: "Connecticut",
DE: "Delaware",
DC: "District Of Columbia",
FL: "Florida",
GA: "Georgia",
HI: "Hawaii",
ID: "Idaho",
IL: "Illinois",
IN: "Indiana",
IA: "Iowa",
KS: "Kansas",
KY: "Kentucky",
LA: "Louisiana",
ME: "Maine",
MD: "Maryland",
MA: "Massachusetts",
MI: "Michigan",
MN: "Minnesota",
MS: "Mississippi",
MO: "Missouri",
MT: "Montana",
NE: "Nebraska",
NV: "Nevada",
NH: "New Hampshire",
NJ: "New Jersey",
NM: "New Mexico",
NY: "New York",
NC: "North Carolina",
ND: "North Dakota",
OH: "Ohio",
OK: "Oklahoma",
OR: "Oregon",
PA: "Pennsylvania",
RI: "Rhode Island",
SC: "South Carolina",
SD: "South Dakota",
TN: "Tennessee",
TX: "Texas",
UT: "Utah",
VT: "Vermont",
VA: "Virginia",
WA: "Washington",
WV: "West Virginia",
WI: "Wisconsin",
WY: "Wyoming"
}
},
{
key: "zip",
type: "text",
title: "Zip"
},
{
key: "pcp_name",
type: "text",
title: "Primary Care Physician Name"
},
{
key: "pcp_phone",
type: "text",
title: "Primary Care Physician Phone"
}
]
},
{
code: "post_signup_tos_popup",
title: "Before you can complete your registration, you must accept the Onduty Terms of Service and Privacy Policy",
agree: {
title: "I Agree"
},
terms: {
title: "View Terms"
}
}
]
}
],
terms_of_service: [
{
name: "Terms of Service",
code: "terms_of_service_text",
sections: [
{
code: "terms_of_service_text"
}
]
}
]
},
visits: {
signin: [
],
intake: [
{
name: "Enter Lounge",
code: "intake",
next: {
title: "Next"
},
sections: [
{
code: "update_intake",
schema: {
reason_for_visit: {
type: "string",
provider_title: "Chief Complaint",
required: true,
multiple: true,
allow_tags: false,
enum: [
"Abdominal pain",
"Allergic reaction",
"Anxiety",
"Asthma",
"Back pain",
"Chest pain",
"Cold/runny nose",
"Constipation",
"Cough",
"Cut/scrape",
"Depression",
"Diarrhea",
"Difficulty breathing",
"Ear problem",
"Extremity injury/fall",
"Eye problem",
"Fever",
"Flu symptoms",
"Headache",
"Insect sting/bite",
"Pregnancy problem",
"Rash",
"Seasonal allergies",
"Sore throat",
"Urination problem",
"Vomiting",
"Other (my symptoms are not listed above)"
]
}
},
form: [
{
key: "reason_for_visit",
title: "What is your health concern today?",
placeholder: "Describe your symptom(s)",
type: "select"
}
]
},
{
code: "file_upload",
title: "Is there any image you would like to share with the doctor today?"
}
]
},
{
name: "Enter Lounge",
code: "intake2",
next: {
title: "Next"
},
sections: [
{
code: "update_intake",
schema: {
location: {
type: "string",
required: true,
enum: [
"CA"
],
show_to_provider: false
},
phone: {
type: "string",
provider_title: "Phone",
required: true
}
},
form: [
{
key: "location",
type: "select",
title: "Where are you located?",
placeholder: "Enter state or zipcode",
titleMap: {
CA: "California"
}
},
{
key: "phone",
title: "Which phone number can we reach you at today?",
type: "text"
}
]
},
{
code: "emergency_warning"
}
]
}
],
visit_type: [
{
name: "Enter Lounge",
code: "visit_type",
sections: [
{
code: "label",
title: "When would you like to see a doctor?"
},
{
code: "visit_type"
}
]
}
],
consent: [
{
name: "Consent Forms",
code: "consent_text",
next: {
title: "I Agree. Next"
},
sections: [
{
code: "consent_text"
}
]
}
],
calendar: [
{
name: "Appointment",
code: "appointment_calendar",
next: {
title: "Next"
},
sections: [
{
code: "appointment_calendar",
title: "Pick a Date and Time"
}
]
}
],
post_intake: [
{
name: "Enter Lounge",
code: "emr",
next: {
title: "Next"
},
sections: [
{
code: "label",
title: "Please update your medical history"
},
{
code: "emr_conditions",
title: "Past Medical History"
},
{
code: "emr_surgeries",
title: "Past Surgeries"
},
{
code: "emr_medications",
title: "Medications"
},
{
code: "emr_allergies",
title: "Allergies"
}
]
},
{
name: "Enter Lounge",
code: "pharmacy",
next: {
title: "Next"
},
sections: [
{
code: "pharmacy_picker",
title: "If you need a prescription today, where would you like it sent?"
}
]
},
{
name: "Enter Lounge",
code: "survey",
next: {
title: "Submit"
},
sections: [
{
code: "label",
title: "Your **Parameters** is valuable to help us improve our service. Please take a
moment to answer the following questions."
},
{
code: "intake_survey"
}
]
}
],
post_call: [
{
name: "Enter Lounge",
code: "survey",
next: {
title: "Submit"
},
sections: [
{
code: "label",
title: "Your **Parameters** is valuable to help us improve our service. Please take a
moment to answer the following questions."
},
{
code: "post_visit_survey"
}
]
}
]
}
},
files: [
{
file_id: "56b29a3e-a72c-49e1-93f0-4c23ac1f0144",
code: "logo",
path: "https://api.vsee.me/api_v3/files/56b29a3e-a72c-49e1-93f0-4c23ac1f0144"
},
{
file_id: "56fcdfa6-c7cc-433f-b2da-1a21ac1f0144",
code: "consent",
path: "https://api.vsee.me/api_v3/files/56fcdfa6-c7cc-433f-b2da-1a21ac1f0144"
},
{
file_id: "57adac35-ac94-4c2d-aedc-7f23ac1f0144",
code: "terms_of_use",
path: "https://api.vsee.me/api_v3/files/57adac35-ac94-4c2d-aedc-7f23ac1f0144"
}
],
waiting_room: {
subtitle: "If this is an emergency, please call 911 or go to your nearest emergency department.",
consent: "I consent and reviewed and agreed to <a href='$link' target='_blank'>the terms of use and privacy policy</a>",
enter_text: "Enter Lounge",
need_schedule: true,
show_code: true,
average_visit_time: 3600,
capacity: 100,
default_room_code: "ceproom1"
}
}
}
|
Rooms API
GET /rooms [public access]
Parameters
(none)
Response
Code Block |
---|
curl -k -X GET -H "X-AccountCode: vclinic" "https://api.vsee.me/api_v3/rooms"
{
"data": [{
"slug": "room1",
"name": "Room 1",
"domain": "demo.vsee.me",
"code": "room1_code",
"created": 1427922788,
"modified": 1427922788
}, ...]
}
|
POST /rooms
Parameters
Parameter
Type
Description
domain
String
Clinic’s domain
code
String
(optional) Room code (should be unique)
slug
String
(optional) Set this room as default, other rooms will lose default status.
name
String
Room's name
Response
Code Block |
---|
curl --location --request POST 'https://api.vsee.me/api_v3/rooms' \
--header 'X-AccountCode: vclinic' \
--header 'X-ApiToken: 83ec6843c3af534c551ab609d869dd82' \
--form 'domain=vclinic.vsee.me' \
--form 'slug=provider00102' \
--form 'name=provider00102 room'
{
"data": {
"visits": {
"walkin": {
"enabled": true
},
"appointment": {
"enabled": false
}
},
"auth": {
"guest": {
"type": 600,
"log_in": {
"enabled": true
}
}
},
"subtitle": "If this is an emergency, please call 911.",
"slug": "provider00102",
"name": "provider00102 room",
"domain": "vclinic.vsee.me",
"active": true,
"users": "85741",
"account_code": "clinic",
"provider_ids": [
"85741"
],
"public_access_room": true,
"modified": 1605728974,
"created": 1605728974,
"payment": {
"consultations": [
{
"id": "5fb57ace-4808-4346-ad3c-3348925862c1",
"description": "15-min Consultation",
"duration": 15,
"amount": 0,
"group": false,
"charge": false,
"slots": 1
}
],
"currency": "USD",
"__note__": "paymentCurrency will be deprecated by 1 Jun 2017"
},
"operation_settings": {
"is_closed": false,
"close_msg": "Service currently not available. Please check back later",
"default_timezone": "America/Los_Angeles"
},
"id": "171",
"code": "b4vjj"
}
} |
GET /rooms/:code [public access]
Parameters
(none)
Response
Code Block |
---|
curl -k -X GET -H "X-AccountCode: vclinic" "https://api.vsee.me/api_v3/rooms/room1"
{
"data": {
"description": "",
"specialties": [
{
"code": "general_care",
"name": "Default",
"duration": 15
},
{
"code": "primary_care",
"name": "Primary Care",
"duration": 15
},
{
"code": "psychiatry",
"name": "Psychiatry",
"duration": 30
},
{
"code": "dermatology",
"name": "Dermatology",
"duration": 15
}
],
"modified": 1466796316,
"created": 1446802721,
"payment": {
"paymentCurrency": "USD",
"consultations": [
{
"description": "15-min Consultation",
"amount": 0,
"duration": 15
},
{
"description": "30 min",
"amount": 20,
"duration": 30
},
{
"description": "45 min",
"amount": 40,
"duration": 45
}
]
},
"slug": "room1",
"name": "Room 1",
"domain": "demo.vsee.me",
"code": "room1",
"account_code": "DEMO-ACCOUNT"
}
|
GET /rooms/:code/providers [public access]
Response
Code Block |
---|
curl -k -X GET \
-H "X-AccountCode: vclinic" \
"https://api.vsee.me/api_v3/rooms/example-room-code/providers"
{
"data": [
{
"id": "401",
"username": "provider-401",
"code": "",
"subtype": "482",
"first_name": "Jarod",
"last_name": "Sun 401",
"vseeid": "evisitdev+user401",
"photo": null,
"title": "",
"suffix": "",
"status": false,
"short_bio": false
}
]
} |
GET /rooms/:code/providers/:id [public access]
Response
Code Block |
---|
curl -k -X GET \
-H "X-AccountCode: vclinic" \
"https://api.vsee.me/api_v3/rooms/ceproom1/providers/826"
{
"data": {
"id": "826",
"code": "55de45a2ce384a24ad633301ac1f0144",
"first_name": "John",
"last_name": "Will",
"username": "provider1",
"vseeid": "conciergedev+user826",
"email": "anton+provider1@vsee.com",
"active": true,
"title": "Dr.",
"suffix": "M.D.",
"tos": false,
"phone": "334 2222211",
"subtype": "482",
"status": false,
"educational_training": "edu and training...",
"professional_interests": "interests...",
"personal_interests": "some personal hobby"
}
}
|
GET /rooms/:code/queue [public access]
Waiting time = average_visit_time
* before_me
Response
Code Block |
---|
curl -X GET -H "X-AccountCode: vclinic" "https://api.vsee.me/api_v3/rooms/ceproom1/queue"
{
"data": {
"length": 10,
"capacity": 100,
"average_visit_time": 3600,
"before_me": 3
}
}
|
length
- total current queue lengthcapacity
- maximum possible queue lengthaverage_visit_time
- time in seconds per patientbefore_me
- patient in the queue before me
POST /users/:id/rooms
Associate a room to a user
Parameters
Parameter
Type
Description
code
String
Room code
default
Boolean
(optional) Set this room as default, other rooms will lose default status.
Response
Code Block |
---|
curl --location --request POST 'https://api.vsee.me/api_v3/users/85741/rooms' \
--header 'X-AccountCode: vclinic' \
--header 'X-ApiToken: 83ec6843c3af534c551ab609d869dd82' \
--form 'code=b4vjj''
{
"data": [
{
"_id": "171",
"slug": "provider00102",
"name": "provider00102 room",
"domain": "clinic.vseepreview.com",
"code": "b4vjj",
"active": true,
"users": "85741",
"account_code": "clinic",
"provider_ids": [
"85741"
],
"public_access_room": true,
"modified": {
"sec": 1605728974,
"usec": 177000
},
"created": {
"sec": 1605728974,
"usec": 177000
},
"payment": {
"consultations": [
{
"id": "5fb57ace-4808-4346-ad3c-3348925862c1",
"description": "15-min Consultation",
"duration": 15,
"amount": 0,
"group": false,
"charge": false,
"slots": 1
}
]
},
"default": false
}
]
} |
POST /rooms
Create a room
Code Block |
---|
curl --location --request POST 'https://api-template-wellevate-schedules.vseepreview.com/cc/next/api_v3/rooms' \
--header 'X-AccountCode: template-wellevate-schedules-00101' \
--header 'X-ApiToken: 83ec6843c3af534c551ab609d869dd82' \
--form 'domain=template-wellevate-schedules-00101.vseepreview.com' \
--form 'slug=uat2' \
--form 'name=UAT2' |
Input
Parameter Name
Type
Description
X-ApiToken
Header
Clinic Admin token (app token)
X-ApiKey
Header
domain
string
Clinic’s domain
code
string
Room code (should be unique)
slug
string
(optional) Set this room as default, other rooms will lose default status.
name
string
Code Block |
---|
{
"data": {
"visits": {
"walkin": {
"enabled": true
},
"appointment": {
"enabled": true
}
},
"auth": {
"guest": {
"type": 600,
"log_in": {
"enabled": true
}
}
},
"subtitle": "If this is an emergency, please call 911.",
"slug": "uat2",
"name": "UAT2",
"domain": "template-wellevate-schedules-00101.vseepreview.com",
"active": true,
"account_code": "template-wellevate-schedules-00101",
"users": "",
"provider_ids": [],
"public_access_room": true,
"modified": 1605549399,
"created": 1605549399,
"payment": {
"consultations": [
{
"id": "5fb2bd57-9394-4cc0-934a-1b3b925862c1",
"description": "15-min Consultation",
"duration": 15,
"amount": 0,
"group": false,
"charge": false,
"slots": 1
}
],
"currency": "USD",
"__note__": "paymentCurrency will be deprecated by 1 Jun 2017"
},
"operation_settings": {
"is_closed": false,
"close_msg": "Service currently not available. Please check back later",
"default_timezone": "America/Los_Angeles"
},
"id": "169",
"code": "jstq9"
}
}
|
If room already exists (http response code 400):
Code Block |
---|
{
"code": 400,
"message": "In domain "template-wellevate-schedules-00101.vseepreview.com" slug "uat2" already exists."
} |
Push Notification API
Mostly for mobile app
POST /endpoints
Parameters
Parameter
Type
Description
key
String
device token (for apple) or registration id (for android)
type
Integer
30 - Apple Push Notification 40 - Google Cloud Messaging
Response
Code Block |
---|
curl -X POST -H "X-ApiToken: 6366a7018a39536a1ef4b63626f8e734" \
-d "key=12345&type=30" \
https://api.vsee.me/api_v3/endpoints
{
"data": {
"id": "551c5f64-a6d8-425d-b89c-581fac1f0144",
"key": "123456",
"user_id": "201",
"type": 30,
"created": 1427922788,
"modified": 1427922788
}
}
|
GET /endpoints
Retrieve all notification endpoints for current user
Parameters
Parameter
Type
Description
type
Integer
(empty) - get all type of endpoints for current user 30 - Apple Push Notification 40 - Google Cloud Messaging
Response
Code Block |
---|
curl -X GET -H "X-ApiToken: 6366a7018a39536a1ef4b63626f8e734" https://api.vsee.me/api_v3/endpoints.json
{
"data": [
{
"id": "551c5f64-a6d8-425d-b89c-581fac1f0144",
"key": "123456",
"user_id": "201",
"type": 30,
"arn": "arn:aws:sns:us-west-2:048881245029:endpoint\/APNS\/com.vsee.isos.TeleAssistance\/203fd06c-e559-3fba-a47f-87844eca4e6e",
"created": 1427922788,
"modified": 1427922788
},
{
"id": "551c6005-83d0-48f0-abfe-59c4ac1f0144",
"key": "an@vsee.com",
"user_id": "201",
"type": 10,
"created": 1427922949,
"modified": 1427922949
}
]
}
|
GET /endpoints/:id
Parameters
Parameter
Type
Description
type
Integer
(empty) - get all type of endpoints for current user 30 - Apple Push Notification 40 - Google Cloud Messaging
Response
Code Block |
---|
curl -X GET \
-H "X-ApiToken: 6366a7018a39536a1ef4b63626f8e734" \
https://api.vsee.me/api_v3/endpoints/551c5f64-a6d8-425d-b89c-581fac1f0144
{
"data": {
"id": "551c5f64-a6d8-425d-b89c-581fac1f0144",
"key": "123456",
"user_id": "201",
"type": 30,
"created": 1427922788,
"modified": 1427922788
}
} |
DELETE /endpoints/:id
Parameters
Parameter
Type
Description
Response
Code Block |
---|
curl -X DELETE \
-H "X-ApiToken: 6366a7018a39536a1ef4b63626f8e734" \
https://api.vsee.me/api_v3/endpoints/551c5f64-a6d8-425d-b89c-581fac1f0144
{
"data": {
"id": "551c5f64-a6d8-425d-b89c-581fac1f0144",
}
}
|
GET /notifications
Reference here for more information: https://docs.google.com/document/d/1o-FH6yKDd8g4ecRZhJT91O8SL7luucK_zyxIFUaHxSw/edit#heading=h.gpbb94y21tki
Parameters
Parameter
Type
Description
size
Integer
(optional) Fetch size, how many records to fetch, default to 10
last
Integer
(optional) unix timestamp in ms, only fetch notifications before this time (please use the field mtime
)
Response
Code Block |
---|
curl -X GET \
-H "X-ApiToken: 6366a7018a39536a1ef4b63626f8e734" \
https://api.vsee.me/api_v3/notifications.json
{
"data": [
{
"id": "570f3f04-f1f4-4805-946e-178d50e631f8",
"user_id": "201",
"type": "foodlog.comment",
"time": "1460616964",
"mtime": 14606169641000,
"is_new": false,
"read": false,
"title": "Johnathon Lavon (401) commented on a photo",
"image": "http://portal.fruitstreet.dev/files/index/food/photo/1/250x250?auth_code=b9b6746928de9450db3c1265d2d90edf83c14688",
"data": {
"food_id": "1",
"food_comment_id": "1"
}
}
]
} |
PUT /notifications/:id
Mark a notification as read
Parameters
Parameter
Type
Description
id
String
Notification id
Response
Notification object
Code Block |
---|
curl -X PUT \
-H "X-ApiToken: 6366a7018a39536a1ef4b63626f8e734" \
https://api.vsee.me/api_v3/notifications/570f3f04-f1f4-4805-946e-178d50e631f8
{
"data": {
"id": "570f3f04-f1f4-4805-946e-178d50e631f8",
"user_id": "201",
"type": "foodlog.comment",
"time": 1460616964,
"mtime": 14606169641000,
"is_new": false,
"read": true,
"title": "Johnathon Lavon (401) commented on a photo",
"image": "http://portal.fruitstreet.dev/files/index/food/photo/1/250x250?auth_code=b9b6746928de9450db3c1265d2d90edf83c14688",
"data": {
"food_id": "1",
"food_comment_id": "1"
}
}
}
|
GET /notifications/badge
Get the badge number for notifications
Parameters
(None)
Response
Code Block |
---|
curl -X GET \
-H "X-ApiToken: 6366a7018a39536a1ef4b63626f8e734" \
https://api.vsee.me/api_v3/notifications/badge
{
"data": 5
}
|
POST /notifications/badge
Reset the badge number for notifications
Parameters
(None)
Response
Code Block |
---|
curl -X POST -H "X-ApiToken: 6366a7018a39536a1ef4b63626f8e734" https://api.vsee.me/api_v3/notifications/badge
{
"data": true
}
|
File Upload API
POST /files
Parameters
Parameter
Type
Description
file
Binary
File content
meta.category
String
File category. This is to mark the usage of the attachments. For now the possible reasons are 'intake_attachment', 'user_consent', 'user_avatar', 'user_document'
Response
Code Block |
---|
curl -X POST \
https://api.vsee.io/cc/ligeng/api_v3/files \
-H 'X-ApiToken: 4df5b2b7dec8a8c40e142e43c1825502' \
-H 'cache-control: no-cache' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-F file=@/Users/teligeng/Pictures/p878984.jpg \
-F meta.category=user_document
{
"data": {
"id": "5e15d150-19b4-4cbd-b217-332fc71b6977",
"name": "p878984.jpg",
"size": 40679,
"ext": "jpg",
"fullpath": "https://api.vsee.io/cc/ligeng/files/view/5e15d150-19b4-4cbd-b217-332fc71b6977?auth_code=e86ceb8b57c91e4db41611f08311a125e2df0b09&time=1578488144",
"meta": {
"category": "user_document",
"target": {
"id": "350936",
"type": "user"
},
"account": {
"code": "5c47c63907c44f0486a16e1dc71b6977"
}ß
},
"creator": {
"id": "350936",
"username": "ligeng+trial14+member01@vseelab.com",
"email": "ligeng+trial14+member01@vseelab.com",
"full_name": "Ligeng Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Name"
}
}
} |
POST /files/:id
Modify the document information. For now, only 'name' is allowed to be modified.
Parameters
Parameter
Type
Description
name
String
File name
Response
Code Block |
---|
curl -X POST \
https://api.vsee.io/cc/ligeng/api_v3/files/5e1598e7-4118-47ca-84da-0923c71b6977 \
-H 'X-ApiToken: 466c809667919d34d371d4c7d389392b' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-F name=test2.jpg
{
"data": {
"id": "5e1598e7-4118-47ca-84da-0923c71b6977",
"name": "test2.jpg",
"size": 184259,
"ext": "jpg",
"fullpath": "https:\/\/api.vsee.io\/cc\/ligeng\/files\/view\/5e1598e7-4118-47ca-84da-0923c71b6977?auth_code=ed7e17f29a56cc8c4b2fec812a07e7d30f322b85&time=1579496452",
"meta": {
"target": {
"id": "350936",
"type": "user"
},
"category": "user_document",
"account": {
"code": "5c47c63907c44f0486a16e1dc71b6977"
}
},
"created": 1578473704
}
} |
DELETE /files/:id
Parameters
Parameter
Type
Description
id
String
File id
Response
Code Block |
---|
curl -X DELETE -H "X-ApiToken: c18e9874dccd26482e191f3d7b57d3d8" -H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW" -F "file=@" "https://api.vsee.me/api_v3/files/57aa6ede-bf6c-4a88-81e1-6bcdac1f0144" -k
{
"data": true
}
|
GET /files
Retrieve file list
Parameters
Parameter
Type
Description
target_id
String
The id of the target which is related to the files
target_type
String
The file of the target which is related to the files. For now the possible values are 'user' and 'visit'
category_type
String
The category type of this file. For now the possible reasons are 'user_document', 'intake_attachment', 'user_consent', 'user_avatar'.
Response
Code Block |
---|
curl -X GET \
> 'https://api.vsee.io/cc/ligeng/api_v3/files?target_id=350936&target_type=user' \
> -H 'X-ApiToken: 4df5b2b7dec8a8c40e142e43c1825502' \
> -H 'cache-control: no-cache' \
> -H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
> -F target_id=350936 \
> -F target_type=user
{
"data": [
{
"id": "5e1598e7-4118-47ca-84da-0923c71b6977",
"name": "55bb223fd7304.jpg",
"size": 184259,
"ext": "jpg",
"fullpath": "https:\/\/api.vsee.io\/cc\/ligeng\/files\/view\/5e1598e7-4118-47ca-84da-0923c71b6977?auth_code=ede418b2b0b1fa5451c726a7e6959b2efabcad97&time=1578530083",
"creator": {
"username": "ligeng+trial14+member01@vseelab.com",
"type": 200,
"full_name": "Ligeng Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Name"
},
"created": 1578473704
}
]
}
|
GET /files/:id
Retrieve file info
Parameters
Parameter
Type
Description
:id
String
File id
auth_code
String
Auth code returned by other API method
time
String
Timestamp as returned by other API method
size
String
(optional) Resized image dimensions in {W}x{H} format. Example: 320x240. If the file is not image, this parameter will be ignored. Resized Image is always PNG format, Content-type: image/png header will be set in response
Response
See Settings API
Users API
See User API
EMR API
See EMR API
ePrescribe API
See ePrescribe API
Visits API
See Visit API
Payment API
See Payment API
Clinic Account API
Room API
See Room API
Push Notification API
Mostly for mobile app
File Upload API
See File Upload API
Table of Contents |
---|