
Referral partner integration guide
For the web developer of an Apex Motor Claims Group referral partner. A partner sends referrals to Apex by website form, by API, or both. Every referral is logged against the partner and returns a lead reference in the APXL format.
This page holds no keys or links. Apex issues each partner its own form link and API keys at onboarding. The form link comes in the credentials email. API keys are given by phone or in person, never by email.
Option A. Website form
No development needed. Your form link is unique to your business, so every claim submitted through it is tagged to you. Use it as a link or button on your website, in claim emails, or embed it in a page. It works on a phone and shows the client their lead reference on submission. Replace YOUR FORM LINK below with the link Apex sent you.
<a href="YOUR FORM LINK">Lodge a claim with Apex Motor Claims Group</a><iframe src="YOUR FORM LINK"
width="100%" height="900" style="border:0"
title="Apex Motor Claims referral"></iframe>The form asks for the client's name, mobile, email, accident date, registration, what happened, your reference if they have one, and a tick confirming the person named agrees to the referral. It also asks six optional questions about the accident. They are who was at fault, whether the client has car insurance and what cover, whether the other driver has insurance, whether the car can be driven safely, whether a replacement car is needed and whether there were witnesses. The API takes only the fields listed under Option B. It limits how many referrals one device can send in an hour.
Anyone who has your form link can send a referral, so publish it only where you want clients or your staff to use it. Apex replaces a link on request, and the old one stops working at once. Every referral sent through the form reaches the claims team as a real enquiry, so please do not use it to test.
Option B. API
For referrals sent straight from your claim or policy system. One JSON POST over HTTPS per claim. Authentication is an API key in the x-api-key header.
POST https://apexmotorclaims.com.au/api/public/partner-referral
Request fields
| Field | Required | Rule |
|---|---|---|
full_name | Yes | The client's full name, 120 characters or fewer |
mobile | Yes | The client's Australian mobile or landline, for example 0412 345 678 or 02 9123 4567 |
accident_date | Yes | YYYY-MM-DD, a real date, not in the future (Sydney time) |
vehicle_rego | Yes | The client's registration, 10 characters or fewer |
broker_reference | Yes | Your own claim or policy reference, 100 characters or fewer. Used to avoid duplicates |
consent_confirmed | Yes | The JSON value true, confirming the client agreed to the referral |
email | No | A valid email address, 100 characters or fewer |
at_fault_known | No | Your view of fault, one of claimant_not_at_fault, claimant_at_fault, disputed or unknown. The claimant is your client |
description | No | How the accident happened, 2000 characters or fewer |
Example request body
{
"full_name": "Client name",
"mobile": "0412 345 678",
"accident_date": "2026-10-01",
"vehicle_rego": "ABC123",
"broker_reference": "YOUR-REF-1001",
"consent_confirmed": true,
"email": "client@example.com",
"at_fault_known": "claimant_not_at_fault",
"description": "Rear ended at the lights."
}Responses
| Status | Body | Meaning |
|---|---|---|
| 200 | {"reference":"APXL-2026-00012"} | Accepted. The reference is the APXL lead reference, or APXT-... for the test key. Also answered for a repeated broker_reference |
| 400 | {"errors":[{"field":"mobile","reason":"..."}]} | A field failed validation. Every field that failed is listed with the reason |
| 401 | {"error":"The API key is missing or not recognised."} | No key, an unknown key, or a revoked key |
| 403 | {"error":"..."} | The request came from a browser, or a live key was used before your referral agreement with Apex is active |
| 413 | {"error":"..."} | The body is larger than 16 KB |
| 429 | {"error":"Rate limit reached. Retry later."} | Rate limit reached. The Retry-After header gives the seconds to wait |
| 500, 503 | {"error":"..."} | Apex could not take the referral just now. Retry later with the same broker_reference |
{
"errors": [
{ "field": "accident_date", "reason": "Must not be in the future." },
{ "field": "consent_confirmed", "reason": "Must be true, confirming the client agreed to the referral. Do not send a referral without the client's consent." }
]
}Rate limit
Each API key may send up to 60 requests an hour. Every request with a recognised key counts, refused ones included, and the hour starts with the first request. Past the limit the answer is 429 with a Retry-After header in seconds.
Avoiding duplicates
Give each claim its own broker_reference. A referral with a broker_reference you already sent in the last 30 days creates nothing and answers 200 with the first referral's APXL reference. So if a request times out, send it again with the same broker_reference.
Test key
Apex issues a test key, starting apx_test_, with your live key, starting apx_live_. A referral sent with the test key is checked exactly like a live one and answers a reference in the form APXT-YYYYMMDD-XXXXXX, but nothing is created at Apex. The test key works before your referral agreement is active. Duplicates are not checked for test referrals, so each answers a new APXT reference. Your first valid test referral tells Apex you are ready to go live. The live key is accepted once your referral agreement with Apex is active, and answers 403 before then.
Keep keys on your server
API keys stay server side. Never put a key in a web page, a mobile app, a URL or an email, and keep it out of your logs. The endpoint sends no CORS headers and answers 403 to any request from a browser. Apex keeps only a fingerprint of each key, so a lost key cannot be shown again. Ask Apex to revoke a key you no longer trust. A revoked key answers 401 at once, and a new key replaces it.
Examples
Each example sends one referral. Set APEX_API_KEY in your server's environment with the key Apex gave you, starting with the test key.
curl
curl -X POST "https://apexmotorclaims.com.au/api/public/partner-referral" \
-H "content-type: application/json" \
-H "x-api-key: $APEX_API_KEY" \
--data '{"full_name":"Client name","mobile":"0412 345 678","accident_date":"2026-10-01","vehicle_rego":"ABC123","broker_reference":"YOUR-REF-1001","consent_confirmed":true}'JavaScript (Node fetch)
// Node 18 or later. The key is read from the server's environment, never from a web page.
const response = await fetch("https://apexmotorclaims.com.au/api/public/partner-referral", {
method: "POST",
headers: {
"content-type": "application/json",
"x-api-key": process.env.APEX_API_KEY,
},
body: JSON.stringify({
full_name: "Client name",
mobile: "0412 345 678",
accident_date: "2026-10-01",
vehicle_rego: "ABC123",
broker_reference: "YOUR-REF-1001",
consent_confirmed: true,
}),
});
const answer = await response.json();
if (response.status === 200) console.log("Apex reference", answer.reference);
else if (response.status === 400) console.log("Fix these fields", answer.errors);
else if (response.status === 429) console.log("Retry after", response.headers.get("retry-after"), "seconds");
else console.log("Not accepted", response.status, response.headers.get("x-trace-id"));PHP
<?php
// The key is read from the server's environment, never from a web page.
$referral = [
'full_name' => 'Client name',
'mobile' => '0412 345 678',
'accident_date' => '2026-10-01',
'vehicle_rego' => 'ABC123',
'broker_reference' => 'YOUR-REF-1001',
'consent_confirmed' => true,
];
$ch = curl_init('https://apexmotorclaims.com.au/api/public/partner-referral');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'content-type: application/json',
'x-api-key: ' . getenv('APEX_API_KEY'),
],
CURLOPT_POSTFIELDS => json_encode($referral),
]);
$body = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
curl_close($ch);
$answer = json_decode($body, true);
if ($status === 200) {
echo 'Apex reference ' . $answer['reference'];
}Privacy and consent
Confirm the client's consent before sending any details, and set consent_confirmed to true only when they have agreed to the referral. A referral without it is refused. Personal information is handled under the Privacy Act 1988 (Cth). Send only the fields listed here, and never put client details in a web address.
Who to contact
For help with the set up, or to replace a form link or revoke a key, email info@apexmotorclaims.com.au.