Helpdesk API
21 PracBill API endpoints for helpdesk. Base URL https://billing.pracbill.com.au/api.
Get all tickets for a customer
GET /{api_key}/helpdesk/customer/{cid}/tickets
Parameters
| Name | In | Type | Description |
|---|---|---|---|
status | query | integer | Filter by status |
limit | query | integer | Limit results |
Responses
200— Customer tickets retrieved successfully
Get a specific note
GET /{api_key}/helpdesk/note/{noteid}
Responses
200— Note retrieved successfully
Delete a note
POST /{api_key}/helpdesk/note/{noteid}/delete
Responses
200— Note deleted successfully
Update a note
POST /{api_key}/helpdesk/note/{noteid}/update
Request body
| Field | Type | Description |
|---|---|---|
note | string | |
internal | integer | |
ignore_response | boolean |
Responses
200— Note updated successfully
Create a new helpdesk ticket
POST /{api_key}/helpdesk/ticket/create
Request body
| Field | Type | Description |
|---|---|---|
cid required | integer | |
subject required | string | |
body | string | |
uid | integer | Assigned user ID |
priority | integer | 1=low, 2=medium, 3=high, 4=critical |
ostype | string | |
internal | integer | Internal note flag (0 or 1) |
contacts | array of object |
Responses
200— Ticket created successfully
Get a specific helpdesk ticket with full details
GET /{api_key}/helpdesk/ticket/{htid}
Responses
200— Ticket retrieved successfully
Assign a ticket to a user
POST /{api_key}/helpdesk/ticket/{htid}/assign/{uid}
Responses
200— Ticket assigned successfully
Upload a single attachment to an existing helpdesk ticket. The request must be multipart/form-data with the binary in the `file` field; JSON or base64 bodies are not accepted. Files larger than 10MB are rejected. The new attachment is listed by the ticket detail endpoint and served by the attachment download endpoint.
POST /{api_key}/helpdesk/ticket/{htid}/attachment
Responses
200— Attachment stored successfully, or a JSON error describing why it was rejected
Download a single attachment belonging to a helpdesk ticket. The file content is base64 encoded in the JSON response. Files larger than 10MB are not served.
GET /{api_key}/helpdesk/ticket/{htid}/attachment/{rdid}
Responses
200— Attachment retrieved successfully, or a JSON error describing why it could not be served
Close a helpdesk ticket
POST /{api_key}/helpdesk/ticket/{htid}/close
Request body
| Field | Type | Description |
|---|---|---|
note | string | Closing note |
uid | integer | User closing the ticket |
Responses
200— Ticket closed successfully
Add a note to a ticket. Optionally stores base64 encoded file attachments against the ticket (up to 10, each at most 10MB decoded) and, with send_notification set, sends the standard helpdesk update email for the note with those files attached. Invalid attachment input is rejected before the note or any attachment is written.
POST /{api_key}/helpdesk/ticket/{htid}/note/add
Request body
| Field | Type | Description |
|---|---|---|
note required | string | |
uid | integer | |
internal | integer | 0=customer visible, 1=internal only |
ignore_response | boolean | |
send_notification | integer | 1 to send the standard helpdesk update email for this note (attachments from this request included). Default 0: nothing is emailed. Internal notes/tickets keep the notifier's customer-email suppression. |
attachments | array of object | Files to attach to the ticket. Each is stored in the department's attacheddocs directory and listed on the ticket, exactly as a UI upload. Names must be plain file names (no path separators or control characters); content must be valid base64 decoding to 1..10485760 bytes. |
Responses
200— Note added successfully
Get all notes for a ticket
GET /{api_key}/helpdesk/ticket/{htid}/notes
Responses
200— Notes retrieved successfully
Set ticket priority
POST /{api_key}/helpdesk/ticket/{htid}/priority/{priority}
Responses
200— Priority updated successfully
Reopen a closed helpdesk ticket
POST /{api_key}/helpdesk/ticket/{htid}/reopen
Request body
| Field | Type | Description |
|---|---|---|
note | string | Reopening note |
uid | integer | User reopening the ticket |
Responses
200— Ticket reopened successfully
Update a helpdesk ticket
POST /{api_key}/helpdesk/ticket/{htid}/update
Request body
| Field | Type | Description |
|---|---|---|
subject | string | |
uid | integer | |
priority | integer | |
status | integer | |
ostype | string | |
cid | integer |
Responses
200— Ticket updated successfully
Void a helpdesk ticket
POST /{api_key}/helpdesk/ticket/{htid}/void
Request body
| Field | Type | Description |
|---|---|---|
note | string | Void reason |
uid | integer | User voiding the ticket |
Responses
200— Ticket voided successfully
Get paginated list of helpdesk tickets with filtering
GET /{api_key}/helpdesk/tickets
Parameters
| Name | In | Type | Description |
|---|---|---|---|
status | query | integer | Filter by status (0=open, 1=closed, 2=void) |
cid | query | integer | Filter by customer ID |
uid | query | integer | Filter by assigned user ID |
priority | query | integer | Filter by priority (1=low, 2=medium, 3=high, 4=critical) |
search | query | string | Search in subject and company |
limit | query | integer | Records per page (default: 20) |
Responses
200— Tickets retrieved successfully
Get all outstanding (open) tickets
GET /{api_key}/helpdesk/tickets/outstanding
Responses
200— Outstanding tickets retrieved successfully
Get outstanding tickets for a specific user
GET /{api_key}/helpdesk/tickets/outstanding/{uid}
Responses
200— Outstanding tickets retrieved successfully
Get paginated list of helpdesk tickets
GET /{api_key}/helpdesk/tickets/page/{page_number}
Responses
200— Tickets retrieved successfully
Search helpdesk tickets
POST /{api_key}/helpdesk/tickets/search
Request body
| Field | Type | Description |
|---|---|---|
query required | string | Search term |
status | integer | |
limit | integer |
Responses
200— Search results retrieved successfully