
Property | Value |
URL | |
Method | POST |
Auth | None (this endpoint returns the token) |
Field | Description | Required | Rules |
Username | The API username (email address of the RTO admin user) | Yes | Must not be null or empty. Returns 401 Unauthorized if authentication fails. |
lmsToken | The API token/key issued to the RTO for API access | Yes | Must not be null or empty/whitespace. Returns 401 Unauthorized if invalid or missing. |
SubDomain | The RTO subdomain identifier (RTO number) | Yes | Must not be null or empty. Returns 401 Unauthorized if the combination of Username + lmsToken + SubDomain does not match a valid RTO. |
| Property | Value |
| URL | https://api.rto.net.au/api/Student/login |
| Method | POST |
| Auth | This API function needs a valid token added to the HTTP header for authorization |
| Field | Description | Required | Rules |
| The student's email address | Yes | Must be a valid email. Returns validation error if missing. | |
| Password | The student's password | Yes | Returns validation error if missing |
| RTO | The RTO identifier/subdomain | Yes | Returns validation error if missing. Returns empty object {} if credentials do not match. |
| Property | Value |
| URL | https://api.rto.net.au/api/Student |
| Method | GET |
| Auth | This API function needs a valid token added to the HTTP header for authorization |
| Property | Value |
| URL | https://api.rto.net.au/api/Student/{id} |
| Method | GET |
| Auth | This API function needs a valid token added to the HTTP header for authorization |
| Field | Description | Required | Rules |
| id (URL path)) | The student ID | Yes | Must be a valid student number belonging to the authenticated RTO. |
| Property | Value |
| URL | https://api.rto.net.au/api/ExternalEnrolment/Student?id={studentId} |
| Method | GET |
| Auth | This API function needs a valid token added to the HTTP header for authorization |
| Field | Description | Required | Rules |
| id (query parameter) | The student ID | Yes | Must be a valid student ID belonging to the authenticated RTO. Returns 404 Not Found if student does not exist. |
| Property | Value |
| URL | https://api.rto.net.au/api/ExternalEnrolment/Student |
| Method | POST |
| Auth | This API function needs a valid token added to the HTTP header for authorization |
| Field | Description | Required | Rules |
rto | RTO identifier | Yes | Must match authenticated tenant/RTO |
studentTitle | Title | No | String |
studentName | First name | Yes (observed) | String |
studentPreferredName | Preferred name | No | String |
studentMiddleName | Middle name | No | String |
studentSurname | Surname | Yes (observed) | String |
studentDOB | Date of birth | No | Sent as yyyy-mm-dd in API payload |
studentGender | Gender | No | String/code |
| studentCountryOfBirth | Country of birth | No | String |
| Field | Description | Required | Rules |
| studentEmail | Student email | Yes | Valid email |
| studentPassword | Student password | Yes (observed) | String |
| studentEmailAlt | Alternative email | No | Valid email |
| Duplicate email used by integration | Yes (integration) | Mirrors studentEmail | |
| password | Duplicate password used by integration | Yes (integration) | Mirrors studentPassword |
| Field | Description | Required | Rules |
| studentHomeNumber | Home phone | No | String |
| studentMobileNumber | Mobile phone | No | String |
| studentWorkNumber | Work phone | No | String |
| Field | Description | Required | Rules |
| studentPropertyName | Property/building name | No | String |
| studentFlatNumber | Flat/unit number | No | String |
| studentStreetNumber | Street number | No | String |
| studentStreetName | Street name | No | String |
| studentSuburb | Suburb | No | String |
| studentPostcode | Postcode | No | String |
| studentState | State | No | String/code |
| studentCountryOfResidence | Country of residence | No | String |
| Field | Description | Required | Rules |
| chbPostalAddressSame | Postal same as residential flag | No | Observed value: on |
| studentPostalPropertyName | Postal property name | No | String |
| studentPostalFlatNumber | Postal flat number | No | String |
| studentPostalStreetNumber | Postal street number | No | String |
| studentPostalStreetName | Postal street name | No | String |
| studentPostalSuburb | Postal suburb | No | String |
| studentPostalPostcode | Postal postcode | No | String |
| studentPostalState | Postal state | No | String/code |
| Field | Description | Required | Rules |
| studyReason | Reason for study | No | String |
| PriorQualQuestion | Prior qualification question | No | Flag/string |
| studentIsCurrentlyAttendingSchool | Currently attending school | No | Flag/string |
| studentSchoolTypeID | School type ID | No | String/code |
| commencedWhileAtSchoolFlag | Commenced while at school | No | Flag/string |
| studentEducationSchoolLevelIdentifier | School level identifier | No | String/code |
| currentSchoolLevelID | Current school level | No | String/code |
| yearHighestSchool | Highest school year completed | No | Year/string |
yearLeftSchool | Year left school | No | Year/string |
citizenResidentCode | Citizen/resident code | No | String/code |
residencyStatus | Residency status | No | String/code |
citizenshipEffectiveFromDate | Citizenship effective date | No | Date string |
occupationIdentifier | Occupation identifier | No | String/code |
clientOccupationIdentifier | Client occupation identifier | No | String/code |
clientIndustryofEmployment | Industry of employment | No | String/code |
studentIndividualEmploymentStaus | Employment status | No | String |
studentIndividualIndigenousStaus | Indigenous status | No | String |
studentIndividualMainLanguageSpokenAtHome | Main language at home | No | String/code |
studentReferralSource | Referral source | No | String |
isNewToVictorianEducationSystem | New to Victorian education system | No | Flag/string |
victorianStudentNumber | VSN | No | String |
saceID | SACE ID | No | String |
schoolLocationID | School location ID | No | String |
educationIdentifier | Education identifier | No | String |
learnerUniqueIdentifier | Learner unique identifier | No | String |
studentUniqueStudentIdentifier | USI | No | String |
programEnrolmentIdentifier | Program enrolment identifier | No | String |
| Field | Description | Required | Rules |
| disabilityQuestion | Disability question | No | Flag/String |
| disabilityOptions | Disability option codes | No | Array of codes |
| disabilityEffectiveFromDate | Disability effective from | No | Date string |
| disabilityEffectiveToDate | Disability effective to | No | Date string |
| health | Health cover indicator | No | Flag/String |
| studentHasOverseasHealthCover | Has overseas health cover | No | Flag/String |
| studentHealthCoverInsurerName | Health cover insurer | No | String |
| studentHealthCoverMemberNumber | Health cover membership no. | No | String |
studentHealthCoverExpiryDate | Health cover expiry date | No | Date string |
| Field | Description | Required | Rules |
| studentRegWelfareEmergencyContact | Emergency contact name | No | String |
| studentRegWelfareRelationship | Emergency contact relationship | No | String |
| studentRegWelfareEmail | Emergency contact email | No | Valid email |
| studentRegWelfareMobilePhone | Emergency contact mobile | No | String |
| studentGuardianFirstName | Guardian first name | No | String |
| studentGuardianSurname | Guardian surname | No | String |
| studentGuardianEmail | Guardian email | No | Valid email |
| studentGuardianPhone | Guardian phone | No | String |
| Field | Description | Required | Rules |
| studentOverseas | Overseas student flag | No | Observed values: Y/N |
| studentPassportStatus | Passport status | No | String/flag |
| studentIssuedBy | Passport issued by | No | String |
| studentPassportNumber | Passport number | No | String |
| studentPassportExpiryDate | Passport expiry date | No | Date string |
| visa | Visa flag | No | String/flag |
| studentHasCurrentVisa | Has current visa | No | String/flag |
| studentVisaType | Visa type | No | String |
studentVisaStatus | Visa status | No | String |
studentVisaNumber | Visa number | No | String |
studentVisaExpiryDate | Visa expiry date | No | Date string |
studentVisaCurrentlyInAustralia | Currently in Australia | No | String/flag |
studentEnroledWithOtherProvider | Enrolled with other provider | No | String/flag |
studentVisaCountryofLodgement | Visa country of lodgement | No | Nullable string |
studentVisaCityofLodgement | Visa city of lodgement | No | Nullable string |
studentInternationalRefusedVisa | Visa refusal history | No | Nullable string/flag |
english | English indicator | No | String/flag |
studentCompletedEnglishTest | Completed English test | No | String/flag |
studentInternationalEnglishTest | English test type | No | String |
studentInternationalEnglishTestScore | English test score | No | String/number |
studentInternationalEnglishTestDate | English test date | No | Date string |
studentInternationalEnglishTestProposedDate | Proposed English test date | No | Date string |
studentInternationalEnglishSkills | English skills | No | Nullable string |
studentInternationalEnglishatHome | English at home | No | Nullable string |
| Field | Description | Required | Rules |
| qualification | Qualification flag | No | String/flag |
| studentInternationalRequestedCourseCredits | Requested course credits | No | String |
| previousQualifications | Previous qualification entries | No | Array of objects |
| previousEducation | Previous education flag | No | String/flag |
| xStudentPrioEducation | Prior education entries | No | Array of objects with priorEducationId and recognitionId |
| customFields | Custom field values | No | Array |
| Property | Value |
| URL | https://api.rto.net.au/api/ExternalEnrolment/Student |
| Method | PUT |
| Auth | This API function needs a valid token added to the HTTP header for authorization |
| Field | Description | Required | Rules |
| rto | RTO identifier | Yes | Must match authenticated tenant/RTO |
studentId | The student ID to update | Yes | Must be a valid student ID. |
| studentTitle | Title | No | String |
| studentName | First name | Yes (observed) | String |
| studentPreferredName | Preferred name | No | String |
| studentMiddleName | Middle name | No | String |
| studentSurname | Surname | Yes (observed) | String |
| studentDOB | Date of birth | No | Sent as yyyy-mm-dd in API payload |
| studentGender | Gender | No | String/code |
| studentCountryOfBirth | Country of birth | No | String |
| Field | Description | Required | Rules |
| studentEmail | Student email | Yes | Valid email |
| studentPassword | Student password | Yes (observed) | String |
| studentEmailAlt | Alternative email | No | Valid email |
| Duplicate email used by integration | Yes (integration) | Mirrors studentEmail | |
| password | Duplicate password used by integration | Yes (integration) | Mirrors studentPassword |
| Field | Description | Required | Rules |
| studentHomeNumber | Home phone | No | String |
| studentMobileNumber | Mobile phone | No | String |
| studentWorkNumber | Work phone | No | String |
| Field | Description | Required | Rules |
| studentPropertyName | Property/building name | No | String |
| studentFlatNumber | Flat/unit number | No | String |
| studentStreetNumber | Street number | No | String |
| studentStreetName | Street name | No | String |
| studentSuburb | Suburb | No | String |
| studentPostcode | Postcode | No | String |
| studentState | State | No | String/code |
| studentCountryOfResidence | Country of residence | No | String |
| Field | Description | Required | Rules |
| chbPostalAddressSame | Postal same as residential flag | No | Observed value: on |
| studentPostalPropertyName | Postal property name | No | String |
| studentPostalFlatNumber | Postal flat number | No | String |
| studentPostalStreetNumber | Postal street number | No | String |
| studentPostalStreetName | Postal street name | No | String |
| studentPostalSuburb | Postal suburb | No | String |
| studentPostalPostcode | Postal postcode | No | String |
| studentPostalState | Postal state | No | String/code |
| Field | Description | Required | Rules |
| studyReason | Reason for study | No | String |
| PriorQualQuestion | Prior qualification question | No | Flag/string |
| studentIsCurrentlyAttendingSchool | Currently attending school | No | Flag/string |
| studentSchoolTypeID | School type ID | No | String/code |
| commencedWhileAtSchoolFlag | Commenced while at school | No | Flag/string |
| studentEducationSchoolLevelIdentifier | School level identifier | No | String/code |
| currentSchoolLevelID | Current school level | No | String/code |
| yearHighestSchool | Highest school year completed | No | Year/string |
| yearLeftSchool | Year left school | No | Year/string |
| citizenResidentCode | Citizen/resident code | No | String/code |
| residencyStatus | Residency status | No | String/code |
| citizenshipEffectiveFromDate | Citizenship effective date | No | Date string |
| occupationIdentifier | Occupation identifier | No | String/code |
| clientOccupationIdentifier | Client occupation identifier | No | String/code |
| clientIndustryofEmployment | Industry of employment | No | String/code |
| studentIndividualEmploymentStaus | Employment status | No | String |
| studentIndividualIndigenousStaus | Indigenous status | No | String |
| studentIndividualMainLanguageSpokenAtHome | Main language at home | No | String/code |
| studentReferralSource | Referral source | No | String |
| isNewToVictorianEducationSystem | New to Victorian education system | No | Flag/string |
| victorianStudentNumber | VSN | No | String |
| saceID | SACE ID | No | String |
| schoolLocationID | School location ID | No | String |
| educationIdentifier | Education identifier | No | String |
| learnerUniqueIdentifier | Learner unique identifier | No | String |
| studentUniqueStudentIdentifier | USI | No | String |
| programEnrolmentIdentifier | Program enrolment identifier | No | String |
| Field | Description | Required | Rules |
| disabilityQuestion | Disability question | No | Flag/String |
| disabilityOptions | Disability option codes | No | Array of codes |
| disabilityEffectiveFromDate | Disability effective from | No | Date string |
| disabilityEffectiveToDate | Disability effective to | No | Date string |
| health | Health cover indicator | No | Flag/String |
| studentHasOverseasHealthCover | Has overseas health cover | No | Flag/String |
| studentHealthCoverInsurerName | Health cover insurer | No | String |
| studentHealthCoverMemberNumber | Health cover membership no. | No | String |
| studentHealthCoverExpiryDate | Health cover expiry date | No | Date string |
| Field | Description | Required | Rules |
| studentRegWelfareEmergencyContact | Emergency contact name | No | String |
| studentRegWelfareRelationship | Emergency contact relationship | No | String |
| studentRegWelfareEmail | Emergency contact email | No | Valid email |
| studentRegWelfareMobilePhone | Emergency contact mobile | No | String |
| studentGuardianFirstName | Guardian first name | No | String |
| studentGuardianSurname | Guardian surname | No | String |
| studentGuardianEmail | Guardian email | No | Valid email |
| studentGuardianPhone | Guardian phone | No | String |
| Field | Description | Required | Rules |
| studentOverseas | Overseas student flag | No | Observed values: Y/N |
| studentPassportStatus | Passport status | No | String/flag |
| studentIssuedBy | Passport issued by | No | String |
| studentPassportNumber | Passport number | No | String |
| studentPassportExpiryDate | Passport expiry date | No | Date string |
| visa | Visa flag | No | String/flag |
| studentHasCurrentVisa | Has current visa | No | String/flag |
| studentVisaType | Visa type | No | String |
| studentVisaStatus | Visa status | No | String |
| studentVisaNumber | Visa number | No | String |
| studentVisaExpiryDate | Visa expiry date | No | Date string |
| studentVisaCurrentlyInAustralia | Currently in Australia | No | String/flag |
| studentEnroledWithOtherProvider | Enrolled with other provider | No | String/flag |
| studentVisaCountryofLodgement | Visa country of lodgement | No | Nullable string |
| studentVisaCityofLodgement | Visa city of lodgement | No | Nullable string |
| studentInternationalRefusedVisa | Visa refusal history | No | Nullable string/flag |
| english | English indicator | No | String/flag |
| studentCompletedEnglishTest | Completed English test | No | String/flag |
| studentInternationalEnglishTest | English test type | No | String |
| studentInternationalEnglishTestScore | English test score | No | String/number |
| studentInternationalEnglishTestDate | English test date | No | Date string |
| studentInternationalEnglishTestProposedDate | Proposed English test date | No | Date string |
| studentInternationalEnglishSkills | English skills | No | Nullable string |
| studentInternationalEnglishatHome | English at home | No | Nullable string |
| Field | Description | Required | Rules |
| qualification | Qualification flag | No | String/flag |
| studentInternationalRequestedCourseCredits | Requested course credits | No | String |
| previousQualifications | Previous qualification entries | No | Array of objects |
| previousEducation | Previous education flag | No | String/flag |
| xStudentPrioEducation | Prior education entries | No | Array of objects with priorEducationId and recognitionId |
| customFields | Custom field values | No | Array |
| Parameter | Description | Required | Rules |
| ensureContactExists | If true, creates a contact record for the student if one doesn't exist | No | Boolean, defaults to false |
| Property | Value |
| URL | https://api.rto.net.au/api/ExternalEnrolment/ProfileImage?studentId={id} |
| Method | GET |
| Auth | This API function needs a valid token added to the HTTP header for authorization |
| Field | Description | Required | Rules |
| studentId (query parameter) | The student ID | Yes | Must be >= 1. Student must belong to the authenticated RTO. Returns 401 Unauthorized if student belongs to a different RTO. |
| Property | Value |
| URL | https://api.rto.net.au/api/ExternalEnrolment/ProfileImage |
| Method | POST |
| Auth | This API function needs a valid token added to the HTTP header for authorization |
Content-Type | multipart/form-data |
| Field | Description | Required | Rules |
| studentId | The student ID | Yes | Must be >= 1. Student must belong to the authenticated RTO. Returns 401 Unauthorized if student belongs to a different RTO. |
image | The image file | Yes | Must be a valid file upload (IFormFile). |
| Property | Value |
| URL | https://api.rto.net.au/api/Student/ExistsByEmail |
| Method | POST |
| Auth | This API function needs a valid token added to the HTTP header for authorization |
| Field | Description | Required | Rules |
| The email address to check | Yes | String | |
| Rto | The RTO identifier | Yes | String |
| Property | Value |
| URL | https://api.rto.net.au/api/Enrolment/New |
| Method | POST |
| Auth | This API function needs a valid token added to the HTTP header for authorization |
| Field | Description | Required | Rules |
| studentNumber | The student ID | Yes | Must be >= 1. Returns 404 Not Found if student doesn't exist in the RTO. |
| groupID | The group ID to enrol into | Yes | Must be >= 1. |
| rtoID | The RTO identifier | Yes | Must match the authenticated user's RTO. Returns { "success": false, "msg": "Invalid rtoID field" } if mismatched. |
| paymentPlanID | Payment plan ID | No | Must be >= 1 if provided. |
| customerId | Stripe customer ID | Conditional | Required when paymentReference is provided and RTO uses Stripe. Returns "customerId is required" if missing. |
| cardId | Stripe card/payment method ID | Conditional | Required when paymentReference is provided and RTO uses Stripe. Returns "cardId is required" if missing. |
| paymentReference | Payment transaction reference (Stripe charge ID or Payrix transaction ID) | No | If provided, triggers payment processing flow. |
| voucherCode | Voucher/discount code | No | Applied during payment processing if provided. |
| studyReason | Reason for study | No | String |
| studentSchoolTypeID | School type identifier | No | String |
| schoolLocationId | School location identifier | No | String |
| saceId | SACE identifier | No | String |
| currentSchoolLevelId | Current school level | No | String |
| customFields | Array of custom field values | No | Array of { customFieldId, textValue/numberValue/toggleValue } objects |
| invoiceTo | Company invoicing details | No | Object — see sub-fields below |
| Field | Description | Required | Rules |
| companyId | Existing company ID to invoice | Conditional | If provided and > 0, company must exist and belong to same RTO. Returns "CompanyId doesn't exists" if invalid. |
| abn | ABN for new company | Conditional | Required if companyId is not provided. Must not already exist. Returns "ABN alredy exists" if duplicate. |
| businessName | Business name | Conditional | Required if creating new company (no companyId). Returns "BusinessName is required" if missing. |
| tradingName | Trading name | No | String |
| acn | ACN number | No | String |
| mainContactEmail | Main contact email | Conditional | Required if creating new company. Returns "MainContactEmail is required" if missing. |
| billingEmail | Billing email | Conditional | Required if creating new company. Returns "BillingEmail is required" if missing. |
| billingContactName | Billing contact name | Conditional | Required if creating new company. Returns "BillingContactName is required" if missing. |
| billingContactPhoneNo | Billing contact phone | Conditional | Required if creating new company. Returns "BillingContactPhoneNo is required" if missing. |
| purchaseOrderNo | Purchase order number | No | String |
| Property | Value |
| URL | https://api.rto.net.au/api/StudentEnrolments/{studentId} |
| Method | GET |
| Auth | This API function needs a valid token added to the HTTP header for authorization |
| Field | Description | Required | Rules |
| studentId (URL path or query) | The student ID | Yes | Must be a valid student number. Returns empty list if no enrolments found. |
| Property | Value |
| URL | https://api.rto.net.au/api/Enrolment/Status |
| Method | PUT |
| Auth | This API function needs a valid token added to the HTTP header for authorization |
| Field | Description | Required | Rules |
| enrolmentId | The enrolment ID to update | Yes | Must be >= 1. Enrolment must belong to the authenticated RTO. Returns 403 Forbidden with "Enrolment does not belong to RTO" if invalid. |
| enrolmentStatus | The new status to set | Yes | Must not be empty. Must be a valid status configured for the RTO. Returns "Enrolment Status is not valid" (400) if the status doesn't exist. If already set to this status, returns success without making changes. |
| Property | Value |
| URL | https://api.rto.net.au/api/ProgramInstance?rtoId={rtoId} |
| Method | GET |
| Auth | This API function needs a valid token added to the HTTP header for authorization |
| Field | Description | Required | Rules |
| rtoId (query parameter) | The RTO identifier | Yes | Required. Returns 400 Bad Request with ModelState errors if missing. |
| Property | Value |
| URL | https://api.rto.net.au/api/Group |
| Method | POST |
| Auth | This API function needs a valid token added to the HTTP header for authorization |
| Field | Description | Required | Rules |
| GroupName | Name of the group | Yes | Must not be null/empty/whitespace. Returns { "success": false, "msg": "Group Name is Required" }. Max 45 characters — returns { "success": false, "msg": "Group name is too long. Please use 45 characters or less." } if exceeded. |
| ProgramInstanceId | The program instance (delivery mode) ID | Yes | Must not be null/empty/whitespace. Returns { "success": false, "msg": "Program Instance Id is Required" }. Must be a valid ID — returns { "success": false, "msg": "Program Instance Id Invalid" } if not found. |
| Active | Whether the group is active for enrolments | No | Boolean. Defaults to false if not provided. |
| StartDate | Group start date | Conditional | Required for Intake-type program instances. Returns { "success": false, "msg": "Start Date is Required for a Group that is Intake Related" }. Format: date string (e.g., "2024-02-01"). |
| EndDate | Group end date | Conditional | Required for Intake-type program instances. Returns { "success": false, "msg": "End Date is Required for a Group that is Intake Related" }. Must not be before StartDate — returns { "success": false, "msg": "End Date cannot be less than Start Date" }. |
| AutoRemove | Auto-remove from waitlist option | No | Must be one of: "Max Students or Date", "Max Students", "Date Only", "Never", or empty string. Returns { "success": false, "msg": "Auto Remove Options is Invalid" } for invalid values. |
| MaxStudents | Maximum number of students | Conditional | Required and must be > 0 when AutoRemove is "Max Students or Date" or "Max Students". Returns { "success": false, "msg": "Max Students is Required or Invalid" }. |
| PriorHours | Hours prior to start date for auto-removal | Conditional | Required and must be > 0 when AutoRemove is "Max Students or Date" or "Date Only". Returns { "success": false, "msg": "Remove Prior to Start is Required or Invalid" }. |
| Location | Location identifier/name | Yes | Must not be null/empty/whitespace. Returns { "success": false, "msg": "Location is Required" }. Must be a valid location — returns { "success": false, "msg": "Location is Invalid" } if not found. |
| Trainers | Array of trainer email addresses | No | Array of strings. Each email must match a valid trainer in the RTO. Returns { "success": false, "msg": "Trainer not Valid" } if any email is invalid. |
| Property | Value |
| URL | https://api.rto.net.au/api/Group |
| Method | PUT |
| Auth | This API function needs a valid token added to the HTTP header for authorization |
| Field | Description | Required | Rules |
GroupId | The ID of the group to update | Yes | Must not be null/empty. Returns { "success": false, "msg": "Group Id is Required" }. Must be a valid group — returns { "success": false, "msg": "Invalid Group Id" } if not found. |
| GroupName | Updated group name | Yes | If provided, must not be empty — returns { "success": false, "msg": "Group Name is Required" }. Max 45 characters — returns { "success": false, "msg": "Group name is too long. Please use 45 characters or less." }. |
| ProgramInstanceId | Updated program instance ID | No | If provided, must not be empty — returns { "success": false, "msg": "Program Instance Id is Required" }. Cannot be changed if students are enrolled — returns { "success": false, "msg": "Program Instance cannot be changed for the Group" }. Must be valid — returns { "success": false, "msg": "Program Instance Id Invalid" }. |
| Active | Whether the group is active | No | Boolean. Retains existing value if omitted. |
| StartDate | Group start date | No | Required for Intake-type if program instance is being set. Returns { "success": false, "msg": "Start Date is Required for a Group that is Intake Related" }. |
| EndDate | Group end date | No | Required for Intake-type if program instance is being set. Returns { "success": false, "msg": "End Date is Required for a Group that is Intake Related" }. Must not be before StartDate — returns { "success": false, "msg": "End Date cannot be less than Start Date" }. |
| AutoRemove | Auto-remove option | No | Same rules as Add Group. Returns { "success": false, "msg": "Auto Remove Options is Invalid" } for invalid values. |
| MaxStudents | Maximum students | Conditional | Same rules as Add Group. |
| PriorHours | Prior hours for auto-removal | Conditional | Same rules as Add Group. |
| Location | Location identifier | No | If provided, must not be empty — returns { "success": false, "msg": "Location is Required" }. Must be valid — returns { "success": false, "msg": "Location is Invalid" }. |
| AddTrainers | Array of trainer emails to add | No | Each email must be a valid trainer. Returns { "success": false, "msg": "Trainer not Valid" } if invalid. Already-assigned trainers are skipped. |
RemoveTrainers | Array of trainer emails to remove | No | Each email must be a valid trainer. Returns { "success": false, "msg": "Trainer not Valid" } if invalid. |
| Property | Value |
| URL | https://api.rto.net.au/api/Group?programInstanceId={id} |
| Method | GET |
| Auth | This API function needs a valid token added to the HTTP header for authorization |
| Field | Description | Required | Rules |
| programInstanceId (query parameter) | The program instance ID | Yes | Must be a valid long integer. Returns 400 Bad Request if missing or invalid. |
| Property | Value |
| URL | https://api.rto.net.au/api/Invoice?groupId={id} |
| Method | GET |
| Auth | This API function needs a valid token added to the HTTP header for authorization |
| Field | Description | Required | Rules |
| groupId (query parameter) | The group ID | Yes | Must be a valid long integer. Returns 400 Bad Request if missing or invalid. |
| Property | Value |
| URL | https://api.rto.net.au/api/Voucher |
| Method | GET |
| Auth | This API function needs a valid token added to the HTTP header for authorization |
Content-Type | application/json (body required even though GET) |
| Field | Description | Required | Rules |
| code | The voucher code to validate | Yes | Required. Returns 400 Bad Request if missing. |
| domain | The domain/website where the voucher is being applied | Yes | Required. Returns 400 Bad Request if missing. |
| toIdentifier | The RTO identifier | Yes | Required. Returns 400 Bad Request if missing. |
| programInstances | Array of program instance IDs to check the voucher against | Yes | Required, minimum 1 item. Returns 400 Bad Request if empty or missing. |
NOTE: This endpoint uses HttpGet with [FromBody] — the request body must be sent with a GET request.| Property | Value |
| URL | https://api.rto.net.au/api/SearchUnits |
| Method | GET |
| Auth | This API function needs a valid token added to the HTTP header for authorization |
| Field | Description | Required | Rules |
| EnrolID | The enrolment ID to search units for | Yes | Must be a valid enrolment ID (long integer). |
| StartDate | Start date for the search range | Yes | Date string format. |
| EndDate | End date for the search range | Yes | Date string format. |
| Property | Value |
| URL | https://api.rto.net.au/api/StudentUnits/Outcome |
| Method | PUT |
| Auth | This API function needs a valid token added to the HTTP header for authorization |
| Field | Description | Required | Rules |
| enrolID | The enrolment ID | Yes | Must be a valid enrolment ID (long integer). |
| UnitCode | The unit code | Yes | String — the unit code (e.g., "BSBCMM411"). |
| outcomeIdentifierNational | The unit outcome | No | String (e.g., "Competent", "Not Yet Competent"). |
| Property | Value |
| URL | https://api.rto.net.au/api/Company/ABN?abn={abn} |
| Method | GET |
| Auth | This API function needs a valid token added to the HTTP header for authorization |
| Field | Description | Required | Rules |
| abn (query parameter) | The ABN to search for | Yes | Required. Returns 400 Bad Request if missing. Returns "Company is inactive" (400) if company exists but is inactive. |
| Property | Value |
| URL | https://api.rto.net.au/api/Event/schedule |
| Method | POST |
| Auth | This API function needs a valid token added to the HTTP header for authorization |
| Field | Description | Required | Rules |
| ScheduleGroupUnits | Array of group/unit associations | Yes | Array of objects with GroupId (long) and UnitCodes (array of strings). At least one group required. |
| Title | Event title | Yes | Must not be empty. |
| Location | Location name/identifier | Yes | Must be a valid location for the RTO. |
| Room | Room name | No | String |
| TrainerEmails | Array of trainer email addresses | No | Each must be a valid trainer email. Returns error if invalid. |
| Color | Display color for the event | No | String (hex or named color) |
| StartDateTime | Event start date and time | Yes | Format: "yyyy-MM-dd HH:mm" or ISO 8601. Must not be empty. |
| EndDateTime | Event end date and time | Yes | Format: "yyyy-MM-dd HH:mm" or ISO 8601. Must not be empty. Must be after StartDateTime. |
| ScheduleHours | Scheduled hours | No | Format: "HH:mm" |
| CustomRecurrence | Recurrence type | No | Options: "NoRecurrence", "WeeklyDay", "MonthlyDay". |
| NumberOfWeeksRecurring | Number of weeks to recur | Conditional | Required for "WeeklyDay" recurrence. Integer > 0. |
| RecurrenceStartDate | Recurrence start date | Conditional | Required for recurring events. Date string. |
| RecurrenceStopRepeatOnSpecificDate | Recurrence end date | No | Date string |
| RecurrenceStartTime | Default start time for recurring events | Conditional | Format: "HH:mm" |
| RecurrenceEndTime | Default end time for recurring events | Conditional | Format: "HH:mm" |
| RecurrenceScheduleHours | Default hours per recurring session | No | Format: "HH:mm" |
| Days | Array of weekly day entries | Conditional | Required for "WeeklyDay". Array of { Day, StartTime, EndTime, ScheduledHours }. |
| scheduleDaterecurEvery | Monthly recurrence interval | Conditional | Required for "MonthlyDay". Integer (e.g., every N months). |
| monthlyDayWeek | Which week of month | Conditional | Required for "MonthlyDay". Enum: First, Second, Third, Fourth, Last. |
| monthlyDayDay | Which day of week | Conditional | Required for "MonthlyDay". DayOfWeek enum value. |
| Property | Value |
| URL | https://api.rto.net.au/api/Event/schedule |
| Method | PUT |
| Auth | This API function needs a valid token added to the HTTP header for authorization |
| Field | Description | Required | Rules |
EventId | The event/schedule ID to update | Yes | Must be a valid event ID. |
UpdateOtherEvents | Scope of the update | No | 1 = this instance only, 2 = all future events, 3 = all events in the occurrence. Defaults to this instance if omitted. |
| ScheduleGroupUnits | Updated group/unit associations | No | Array of { GroupId, UnitCodes } objects. |
| Title | Updated event title | No | String. If provided, must not be empty. |
| Location | Updated location | No | Must be a valid location for the RTO. |
| Room | Updated room | No | String |
| TrainerEmails | Updated trainer emails | No | Each must be a valid trainer. |
| Color | Updated display color | No | String |
| StartDateTime | Updated start date/time | No | Format: "yyyy-MM-dd HH:mm". Must not be empty string if provided. |
| EndDateTime | Updated end date/time | No | Format: "yyyy-MM-dd HH:mm". Must not be empty string if provided. Must be after StartDateTime. |
| ScheduleHours | Updated scheduled hours | No | Format: "HH:mm" |
Field | Type | Description |
StudentID | long | Unique student identifier |
StudentName | string | First name |
StudentSurname | string | Last name |
StudentEmail | string | Email address |
StudentMobileNumber | string | Mobile phone |
StudentDOB | DateTime | Date of birth |
StudentGender | string | Gender |
StudentSuburb | string | Suburb |
StudentPostCode | string | Postcode |
StudentState | string | State |
StudentStreetName | string | Street name |
StudentStreetNumber | string | Street number |
| Field | Type | Description |
| student_number | int | Student ID |
| StudentRegQualificationCode | string | Qualification code |
| groupIntakeInput | string | Group ID |
| EnrolmentStatus | string | Enrolment status |
| Field | Type | Description |
| StudentRegEnrolmentID | string | Enrolment ID |
| EnrolmentStatus | string | New enrolment status |
| StudentRegEnrolmentEndDate | string | Enrolment end date |
| GradePoint | string | Grade point value |
MaxGrade | string | Maximum grade |
smsrtoid | string | Optional RTO override |
| Field | Type | Description |
| enrolID | string | Enrolment ID |
| unitID | string | Unit/subject code |
| compID | string | Competency/component ID |
| outcome | string | Unit outcome |
| startDate | string | Unit start date |
endDate | string | Unit end date |
| smsrtoid | string | Optional RTO override |