Skip to content

PracSuite API (v1)

This is the official PracSuite API.

It follows standard REST conventions, so you can work with it using any HTTP client and any programming language that can send HTTP requests.

All responses are returned in JSON format.

Download OpenAPI description
Overview
PracSuite API Support
License
Languages
Servers
Production
https://api.pracsuite.com/v1/

Appointment Book

SchemasOperations

Appointment

SchemasOperations

Note

SchemasOperations

Rule Out

SchemasOperations

Group Appointment

SchemasOperations

Group Appointment Member

SchemasOperations

Cancelled Appointment

SchemasOperations

Cancellation Reason

SchemasOperations

Reschedule Reason

SchemasOperations

Appointment Type

SchemasOperations

Appointment Status

SchemasOperations

Available Appointment

You may search for a maximum of 7 days of appointment availability per request.

All availability searches must specify a single appointment_type_id.

Availability may be filtered using any combination of business, practitioner, profession, or resource. When multiple filters are supplied, only times matching all provided criteria will be returned.

PracSuite users define daily practitioner availability using Rosters. Users can apply three availability flags to control which tools can book at particular times:

  • Manual - Allows staff to manually book appointments during these times
  • Online Booking - Allows these times to be booked through the PracSuite online booking system
  • Waiting List - Allows the PracSuite waiting list to offer these times to patients

Use the manual, online, and waiting_list query parameters to filter available times based on these roster flags. If none of these parameters are supplied, only times available for manual bookings will be returned.

Users define default appointment duration rules per Appointment Type. These defaults may vary based on business, profession, practitioner, and client fee category, which is determined by the combination of client_id and account_id.

When available, client_id and account_id should be provided to ensure the correct Appointment Type default configuration is applied.

SchemasOperations

Available Group Appointment

SchemasOperations

Business

SchemasOperations

Fee Category

SchemasOperations

Health Fund

SchemasOperations

Invoice

SchemasOperations

Payment

SchemasOperations

Item

SchemasOperations

Item Group

SchemasOperations

Organisation

SchemasOperations

Patient

SchemasOperations

Patient Account

SchemasOperations

Patient Attachment

SchemasOperations

Patient Attachment

linksobject(PatientAttachmentLinks)
tenant_idinteger
attachment_client_idinteger
client_idinteger
user_idinteger
file_datestring(date)
descriptionstring
file_typestring
file_sizeinteger
{ "links": { "self": "https://api.pracsuite.com/v1/patient_attachment/1", "content": "https://api.pracsuite.com/v1/patient_attachment/1/content", "presign_url": "https://api.pracsuite.com/v1/patient_attachment/1/presign_url" }, "tenant_id": 0, "attachment_client_id": 0, "client_id": 0, "user_id": 0, "file_date": "2019-08-24", "description": "string", "file_type": "string", "file_size": 0 }

Patient Attachment Folder

linksobject(PatientAttachmentFolderLinks)
tenant_idinteger
attachment_client_folder_idinteger
client_idinteger
descriptionstring
{ "links": { "self": "https://api.pracsuite.com/v1/patient_attachment_folder/1", "patient_attachments": "https://api.pracsuite.com/v1/patient_attachment_folder/1/patient_attachment" }, "tenant_id": 0, "attachment_client_folder_id": 0, "client_id": 0, "description": "string" }

List Patient Attachments

Request

Security
x-api-key and a-api-key
Query
pageinteger>= 1
Example: page=1
page_sizeinteger[ 1 .. 200 ]
Example: page_size=50
sort_byArray of strings

Comma separated search fields. See Sorting

Example: sort_by=["attachment_client_id"]
q[]Array of strings

Filter result by one or more fields.

See Query Filtering

Available filters:

ValueFormat
file_datedate
curl -i -X GET \
  'https://api.pracsuite.com/v1/patient_attachment?page=1&page_size=50&sort_by=%5B%22attachment_client_id%22%5D&q%5B%5D=string' \
  -H 'a-api-key: YOUR_API_KEY_HERE' \
  -H 'x-api-key: YOUR_API_KEY_HERE'

Responses

Successful

Bodyapplication/json
attachment_clientsArray of objects(PatientAttachmentWithMeta)
total_entriesinteger
linksobject
Response
application/json
{ "attachment_clients": [ {} ], "total_entries": 0, "links": { "self": "https://api.pracsuite.com/v1/patient_attachment?page=2", "previous": "https://api.pracsuite.com/v1/patient_attachment?page=1", "next": "https://api.pracsuite.com/v1/patient_attachment?page=3" } }

Get Patient Attachment

Request

Security
x-api-key and a-api-key
Path
patient_attachment_idintegerrequired
curl -i -X GET \
  'https://api.pracsuite.com/v1/patient_attachment/{patient_attachment_id}' \
  -H 'a-api-key: YOUR_API_KEY_HERE' \
  -H 'x-api-key: YOUR_API_KEY_HERE'

Responses

Successful

Bodyapplication/json
row_numintegerread-only
total_rowsintegerread-only
linksobject(PatientAttachmentLinks)
tenant_idinteger
attachment_client_idinteger
client_idinteger
user_idinteger
file_datestring(date)
descriptionstring
file_typestring
file_sizeinteger
Response
application/json
{ "row_num": 0, "total_rows": 0, "links": { "self": "https://api.pracsuite.com/v1/patient_attachment/1", "content": "https://api.pracsuite.com/v1/patient_attachment/1/content", "presign_url": "https://api.pracsuite.com/v1/patient_attachment/1/presign_url" }, "tenant_id": 0, "attachment_client_id": 0, "client_id": 0, "user_id": 0, "file_date": "2019-08-24", "description": "string", "file_type": "string", "file_size": 0 }

Download Patient Attachment

Request

Returns a temporary redirect to the underlying storage location for the patient attachment content. The response includes a Location header containing a short-lived, presigned URL. API users should follow the redirect to download the attachment.

Security
x-api-key and a-api-key
Path
patient_attachment_idintegerrequired
curl -i -X GET \
  'https://api.pracsuite.com/v1/patient_attachment/{patient_attachment_id}/content' \
  -H 'a-api-key: YOUR_API_KEY_HERE' \
  -H 'x-api-key: YOUR_API_KEY_HERE'

Responses

Temporary redirect to the attachment content

Headers
Locationstring(uri)

Temporary presigned URL to download the attachment content. This URL is time-limited and will expire shortly.

Response
No content

Get a presigned URL to download a patient attachment

Request

Returns a short-lived presigned URL that can be used to download the patient attachment content directly from storage. The presigned URL is time-limited and grants temporary read access to the attachment content. No redirect is performed by this endpoint.

Security
x-api-key and a-api-key
Path
patient_attachment_idintegerrequired
curl -i -X GET \
  'https://api.pracsuite.com/v1/patient_attachment/{patient_attachment_id}/presign_url' \
  -H 'a-api-key: YOUR_API_KEY_HERE' \
  -H 'x-api-key: YOUR_API_KEY_HERE'

Responses

Successful

Headers
Cache-Controlstring

Response is not cacheable due to the sensitive nature of presigned URLs.

Example: "no-store"
Bodyapplication/json
urlstring(uri)
expiresstring(date-time)
file_namestring
Response
application/json
{ "url": "http://example.com", "expires": "2019-08-24T14:15:22Z", "file_name": "string" }

Get a presigned POST URL for uploading a patient attachment

Request

Security
x-api-key and a-api-key
Path
client_idintegerrequired
Bodyapplication/json
file_namestringrequired

File name including extension

Example: "document.txt"
file_datestring(date)
attachment_client_folder_idinteger
curl -i -X POST \
  'https://api.pracsuite.com/v1/patient/{client_id}/patient_attachment' \
  -H 'Content-Type: application/json' \
  -H 'a-api-key: YOUR_API_KEY_HERE' \
  -H 'x-api-key: YOUR_API_KEY_HERE' \
  -d '{
    "file_name": "document.txt",
    "file_date": "2019-08-24",
    "attachment_client_folder_id": 0
  }'

Responses

Successful

Bodyapplication/json
urlstring
fieldsobject
Response
application/json
{ "url": "string", "fields": { "key": "string", "Policy": "string", "x-amz-credential": "string", "x-amz-algorithm": "string", "x-amz-date": "string", "x-amz-signature": "string", "x-amz-security-token": "string" } }

List Patient Attachments By Patient

Request

Security
x-api-key and a-api-key
Path
client_idintegerrequired
Query
pageinteger>= 1
Example: page=1
page_sizeinteger[ 1 .. 200 ]
Example: page_size=50
sort_byArray of strings

Comma separated search fields. See Sorting

Example: sort_by=["attachment_client_id"]
q[]Array of strings

Filter result by one or more fields.

See Query Filtering

Available filters:

ValueFormat
file_datedate
curl -i -X GET \
  'https://api.pracsuite.com/v1/patient/{client_id}/patient_attachment?page=1&page_size=50&sort_by=%5B%22attachment_client_id%22%5D&q%5B%5D=string' \
  -H 'a-api-key: YOUR_API_KEY_HERE' \
  -H 'x-api-key: YOUR_API_KEY_HERE'

Responses

Successful

Bodyapplication/json
attachment_clientsArray of objects(PatientAttachmentWithMeta)
total_entriesinteger
linksobject
Response
application/json
{ "attachment_clients": [ {} ], "total_entries": 0, "links": { "self": "https://api.pracsuite.com/v1/patient/1/patient_attachment?page=2", "previous": "https://api.pracsuite.com/v1/patient/1/patient_attachment?page=1", "next": "https://api.pracsuite.com/v1/patient/1/patient_attachment?page=3" } }

List Patient Attachment Folders By Patient

Request

Security
x-api-key and a-api-key
Path
client_idintegerrequired
Query
pageinteger>= 1
Example: page=1
page_sizeinteger[ 1 .. 200 ]
Example: page_size=50
sort_byArray of strings

Comma separated search fields. See Sorting

Example: sort_by=["attachment_client_folder_id"]
curl -i -X GET \
  'https://api.pracsuite.com/v1/patient/{client_id}/patient_attachment_folder?page=1&page_size=50&sort_by=%5B%22attachment_client_folder_id%22%5D' \
  -H 'a-api-key: YOUR_API_KEY_HERE' \
  -H 'x-api-key: YOUR_API_KEY_HERE'

Responses

Successful

Bodyapplication/json
attachment_client_foldersArray of objects(PatientAttachmentFolderWithMeta)
total_entriesinteger
linksobject
Response
application/json
{ "attachment_client_folders": [ {} ], "total_entries": 0, "links": { "self": "https://api.pracsuite.com/v1/patient/1/patient_attachment_folder?page=2", "previous": "https://api.pracsuite.com/v1/patient/1/patient_attachment_folder?page=1", "next": "https://api.pracsuite.com/v1/patient/1/patient_attachment_folder?page=3" } }

Create Patient Attachment Folder

Request

Security
x-api-key and a-api-key
Path
client_idintegerrequired
Bodyapplication/json
descriptionstringrequired
curl -i -X POST \
  'https://api.pracsuite.com/v1/patient/{client_id}/patient_attachment_folder' \
  -H 'Content-Type: application/json' \
  -H 'a-api-key: YOUR_API_KEY_HERE' \
  -H 'x-api-key: YOUR_API_KEY_HERE' \
  -d '{
    "description": "string"
  }'

Responses

Successful

Bodyapplication/json
row_numintegerread-only
total_rowsintegerread-only
linksobject(PatientAttachmentFolderLinks)
tenant_idinteger
attachment_client_folder_idinteger
client_idinteger
descriptionstring
Response
application/json
{ "row_num": 0, "total_rows": 0, "links": { "self": "https://api.pracsuite.com/v1/patient_attachment_folder/1", "patient_attachments": "https://api.pracsuite.com/v1/patient_attachment_folder/1/patient_attachment" }, "tenant_id": 0, "attachment_client_folder_id": 0, "client_id": 0, "description": "string" }

Patient Contact

SchemasOperations

Clinical Note

Rich text HTML is supported with a safe, limited set of elements and inline styles. Any unsupported tags, attributes, or CSS are removed automatically.

Supported elements

p, br, strong, em, i, u, blockquote, ul, ol, li, div, span, table, thead, tbody, tfoot, tr, td, th, colgroup, col, caption, img (base64 images only)

Images

Images must be embedded as base64 data URIs. Only PNG, JPEG/JPG, GIF, and WebP image types are supported. External image URLs and other formats are not permitted.

Supported inline CSS

Common formatting and table layout styles are allowed, including text styling, alignment, spacing, borders, and table sizing (color, font-size, text-align, padding, width, height, border, etc.). Unsupported styles are removed automatically.

Content limits

Rich text content must be 150,000 characters or less after processing.

Operations

Payer

SchemasOperations

Payer Contact

SchemasOperations

Practitioner

SchemasOperations

Practitioner Provider Number

SchemasOperations

Profession

SchemasOperations

Pronoun

SchemasOperations

Referrer

SchemasOperations

Referrer Type

SchemasOperations

Resource

SchemasOperations

Sex

SchemasOperations

Tag

SchemasOperations

Tag Category

SchemasOperations