REST API Reference
Account info, subscription status, identifier validation, and full read/write access to your monitored entities.
Authentication
Every request must include an Authorization header with a personal access token: Bearer {YOUR_AUTH_TOKEN}.
- Log in and go to Team Settings → API Tokens
- Create a token with the abilities you need (read, create, update, delete)
- Copy it immediately - it's only ever shown once
API access is scoped to your team's active subscription and rate-limited per token.
Account
APIs for account information
Get account information
Get detailed information about the authenticated user's account including team membership.
curl --request GET \
"https://monitorhq.com.au/api/v1/account" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json"
const headers = {
"Content-Type": "application/json",
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
};
fetch("https://monitorhq.com.au/api/v1/account", {
method: "GET",
headers,
}).then(response => response.json());
$response = Http::withHeaders([
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
])
->get('https://monitorhq.com.au/api/v1/account');
import requests
headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
}
response = requests.get("https://monitorhq.com.au/api/v1/account", headers=headers)
Example response (200)
{
"name": "John Doe",
"email": "admin@example.com",
"account_type": "admin",
"current_team": {
"name": "John's Team",
"personal_team": true,
"is_parent_team": true
},
"owned_teams": [
{
"name": "John's Team",
"personal_team": true,
"is_parent_team": true
}
],
"member_of_teams": [
{
"id": 2,
"name": "Another Team",
"role": "editor"
}
]
}
Subscription
APIs for subscription status and usage
Get subscription status
Get the current team's subscription status and usage information.
curl --request GET \
"https://monitorhq.com.au/api/v1/subscription" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json"
const headers = {
"Content-Type": "application/json",
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
};
fetch("https://monitorhq.com.au/api/v1/subscription", {
method: "GET",
headers,
}).then(response => response.json());
$response = Http::withHeaders([
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
])
->get('https://monitorhq.com.au/api/v1/subscription');
import requests
headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
}
response = requests.get("https://monitorhq.com.au/api/v1/subscription", headers=headers)
Example response (200)
{
"has_subscription": true,
"subscription": {
"plan": "Professional",
"status": "active",
"subscribed_at": "2026-01-15 10:00:00",
"expires_at": "2026-02-15 10:00:00",
"max_entities": 50,
"max_high_risk_entities": 10
},
"usage": {
"total": 25,
"high": 5,
"standard": 15,
"low": 5
},
"remaining": {
"slots": 25,
"high_risk_slots": 5
}
}
Returns {"has_subscription": false, "message": "No active subscription found"} when the team has no subscription.
Identifier Validation
APIs for validating and formatting ACN/ABN identifiers
Check identifier
Validate and format an ACN or ABN identifier. This endpoint determines the type of identifier and formats it correctly.
Body Parameters
- identifier string
- The ACN or ABN to validate.
curl --request POST \
"https://monitorhq.com.au/api/v1/identifier/check" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--data '{
"identifier": "123456789"
}'
const headers = {
"Content-Type": "application/json",
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
};
fetch("https://monitorhq.com.au/api/v1/identifier/check", {
method: "POST",
headers,
body: JSON.stringify({
"identifier": "123456789"
}),
}).then(response => response.json());
$response = Http::withHeaders([
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
])
->post('https://monitorhq.com.au/api/v1/identifier/check', [
'identifier' => '123456789',
]);
import requests
headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
}
response = requests.post(
"https://monitorhq.com.au/api/v1/identifier/check",
headers=headers,
json={
"identifier": "123456789"
}
)
Example response (200)
{
"valid": true,
"type": "acn",
"formatted": "123 456 789",
"number": "123456789"
}
Returns 422 with {"valid": false, "message": "...", "errors": [...]} when neither a valid ACN nor ABN.
Monitoring
APIs for managing monitored entities
List monitorings
Get a list of all monitorings for the current team. By default, only active monitorings are returned.
Query Parameters
- page integer (optional)
- Page number for pagination.
- per_page integer (optional)
- Number of items per page.
- risk_level string (optional)
- Filter by risk level (high, standard, low).
- is_active boolean (optional)
- Filter by active status (default: true). Set to false to see stopped monitorings.
- acn string (optional)
- Filter to the team's monitoring of this exact ACN, if any.
- abn string (optional)
- Filter to the team's monitoring of this exact ABN, if any.
curl --request GET \
"https://monitorhq.com.au/api/v1/monitorings?page=1&per_page=15&risk_level=high&is_active=true&acn=123456789&abn=12345678901" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json"
const headers = {
"Content-Type": "application/json",
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
};
fetch("https://monitorhq.com.au/api/v1/monitorings?page=1&per_page=15&risk_level=high&is_active=true&acn=123456789&abn=12345678901", {
method: "GET",
headers,
}).then(response => response.json());
$response = Http::withHeaders([
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
])
->get('https://monitorhq.com.au/api/v1/monitorings?page=1&per_page=15&risk_level=high&is_active=true&acn=123456789&abn=12345678901');
import requests
headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
}
response = requests.get("https://monitorhq.com.au/api/v1/monitorings?page=1&per_page=15&risk_level=high&is_active=true&acn=123456789&abn=12345678901", headers=headers)
Example response (200)
{
"data": [
{
"uuid": "123e4567-e89b-12d3-a456-426614174000",
"entity_name": "Example Pty Ltd",
"entity_type": "company",
"acn": "123456789",
"abn": "12345678901",
"risk_level": "high",
"added_at": "2026-01-15T10:00:00Z"
}
],
"links": {
"first": "https://monitorhq.com.au/api/v1/monitorings?page=1",
"last": null,
"prev": null,
"next": "https://monitorhq.com.au/api/v1/monitorings?page=2"
},
"meta": {
"current_page": 1,
"current_page_url": "https://monitorhq.com.au/api/v1/monitorings?page=1",
"from": 1,
"path": "https://monitorhq.com.au/api/v1/monitorings",
"per_page": 15,
"to": 1
}
}
Add monitoring
Add an entity to your monitoring list. The entity will be fetched and monitored automatically. Either acn or abn is required.
Body Parameters
- acn string (optional)
- The ACN number (9 digits).
- abn string (optional)
- The ABN number (11 digits).
- risk_level string
- The risk level (high, standard, low).
curl --request POST \
"https://monitorhq.com.au/api/v1/monitorings" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--data '{
"acn": "123456789",
"abn": "12345678901",
"risk_level": "high"
}'
const headers = {
"Content-Type": "application/json",
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
};
fetch("https://monitorhq.com.au/api/v1/monitorings", {
method: "POST",
headers,
body: JSON.stringify({
"acn": "123456789",
"abn": "12345678901",
"risk_level": "high"
}),
}).then(response => response.json());
$response = Http::withHeaders([
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
])
->post('https://monitorhq.com.au/api/v1/monitorings', [
'acn' => '123456789',
'abn' => '12345678901',
'risk_level' => 'high',
]);
import requests
headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
}
response = requests.post(
"https://monitorhq.com.au/api/v1/monitorings",
headers=headers,
json={
"acn": "123456789",
"abn": "12345678901",
"risk_level": "high"
}
)
Example response (201)
{
"message": "Monitoring added successfully",
"data": {
"uuid": "123e4567-e89b-12d3-a456-426614174000",
"entity_name": "Example Pty Ltd",
"entity_type": "APTY",
"acn": "123456789",
"abn": "12345678901",
"risk_level": "high",
"added_at": "2026-01-15T10:00:00Z"
}
}
Bulk add monitorings
Add up to 100 entities to your monitoring list in a single request. Available only on plans with bulk import enabled. Each entity is processed independently - one duplicate, invalid, or over-capacity row does not prevent the others in the same request from being added.
Body Parameters
- entities array
- The entities to add (max 100, min 1).
- entities.*.acn string (optional)
- The ACN number (9 digits). Either acn or abn is required per entity.
- entities.*.abn string (optional)
- The ABN number (11 digits). Either acn or abn is required per entity.
- entities.*.risk_level string
- The risk level (high, standard, low).
curl --request POST \
"https://monitorhq.com.au/api/v1/monitorings/bulk" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--data '{
"entities": "[{\"acn\": \"123456789\", \"risk_level\": \"standard\"}]",
"entities.*.acn": "123456789",
"entities.*.abn": "12345678901",
"entities.*.risk_level": "standard"
}'
const headers = {
"Content-Type": "application/json",
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
};
fetch("https://monitorhq.com.au/api/v1/monitorings/bulk", {
method: "POST",
headers,
body: JSON.stringify({
"entities": "[{\"acn\": \"123456789\", \"risk_level\": \"standard\"}]",
"entities.*.acn": "123456789",
"entities.*.abn": "12345678901",
"entities.*.risk_level": "standard"
}),
}).then(response => response.json());
$response = Http::withHeaders([
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
])
->post('https://monitorhq.com.au/api/v1/monitorings/bulk', [
'entities' => '[{"acn": "123456789", "risk_level": "standard"}]',
'entities.*.acn' => '123456789',
'entities.*.abn' => '12345678901',
'entities.*.risk_level' => 'standard',
]);
import requests
headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
}
response = requests.post(
"https://monitorhq.com.au/api/v1/monitorings/bulk",
headers=headers,
json={
"entities": "[{\"acn\": \"123456789\", \"risk_level\": \"standard\"}]",
"entities.*.acn": "123456789",
"entities.*.abn": "12345678901",
"entities.*.risk_level": "standard"
}
)
Example response (200)
{
"message": "Bulk import processed",
"summary": {
"total": 2,
"succeeded": 1,
"failed": 1
},
"results": [
{
"index": 0,
"success": true,
"uuid": "123e4567-e89b-12d3-a456-426614174000",
"error": null
},
{
"index": 1,
"success": false,
"uuid": null,
"error": "This entity is already in your portfolio"
}
]
}
Get monitoring details
Get detailed information about a specific monitoring by UUID.
URL Parameters
- uuid string
- The monitoring UUID.
curl --request GET \
"https://monitorhq.com.au/api/v1/monitorings/{uuid}" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json"
const headers = {
"Content-Type": "application/json",
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
};
fetch("https://monitorhq.com.au/api/v1/monitorings/{uuid}", {
method: "GET",
headers,
}).then(response => response.json());
$response = Http::withHeaders([
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
])
->get('https://monitorhq.com.au/api/v1/monitorings/{uuid}');
import requests
headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
}
response = requests.get("https://monitorhq.com.au/api/v1/monitorings/{uuid}", headers=headers)
Example response (200)
{
"uuid": "123e4567-e89b-12d3-a456-426614174000",
"risk_level": "high",
"added_at": "2026-01-15T10:00:00Z",
"entity_details": {
"entity_name": "Example Pty Ltd",
"entity_type": "APTY",
"acn": "123456789",
"abn": "12345678901",
"state": "VIC",
"acn_status": "REGD",
"acn_registration_date": "2020-01-15T00:00:00Z",
"acn_review_date": "2026-01-15T00:00:00Z",
"abn_status": "Active",
"abn_registration_date": "2020-01-15T00:00:00Z",
"gst_date": "2020-01-15T00:00:00Z",
"primary_address": {
"type": "RG",
"state": "VIC",
"locality": "MELBOURNE",
"postCode": "3000",
"addressLine": "123 Example St"
},
"secondary_address": {},
"business_names": [],
"former_names": []
},
"recent_history": [
{
"type": "abn_registration",
"effective_date": "2020-01-15T00:00:00Z",
"title": "ABN Registered",
"description": "Australian Business Number registered"
}
]
}
Get monitoring history
Get paginated check results history for a specific monitoring.
URL Parameters
- uuid string
- The monitoring UUID.
Query Parameters
- page integer (optional)
- Page number for pagination.
- per_page integer (optional)
- Number of items per page (max 100).
- event_type string (optional)
- Filter by event type (company_registration, abn_registration, gst_registration, etc).
curl --request GET \
"https://monitorhq.com.au/api/v1/monitorings/{uuid}/history?page=1&per_page=15&event_type=abn_registration" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json"
const headers = {
"Content-Type": "application/json",
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
};
fetch("https://monitorhq.com.au/api/v1/monitorings/{uuid}/history?page=1&per_page=15&event_type=abn_registration", {
method: "GET",
headers,
}).then(response => response.json());
$response = Http::withHeaders([
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
])
->get('https://monitorhq.com.au/api/v1/monitorings/{uuid}/history?page=1&per_page=15&event_type=abn_registration');
import requests
headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
}
response = requests.get("https://monitorhq.com.au/api/v1/monitorings/{uuid}/history?page=1&per_page=15&event_type=abn_registration", headers=headers)
Example response (200)
{
"data": [
{
"type": "abn_registration",
"effective_date": "2020-01-15T00:00:00Z",
"title": "ABN Registered",
"description": "Australian Business Number registered"
}
],
"links": {
"first": "https://monitorhq.com.au/api/v1/monitorings/{uuid}/history?page=1",
"last": null,
"prev": null,
"next": "https://monitorhq.com.au/api/v1/monitorings/{uuid}/history?page=2"
},
"meta": {
"current_page": 1,
"current_page_url": "https://monitorhq.com.au/api/v1/monitorings/{uuid}/history?page=1",
"from": 1,
"path": "https://monitorhq.com.au/api/v1/monitorings/{uuid}/history",
"per_page": 15,
"to": 3
}
}
Update monitoring
Update a monitoring's risk level.
URL Parameters
- uuid string
- The monitoring UUID.
Body Parameters
- risk_level string
- The risk level (high, standard, low).
curl --request PUT \
"https://monitorhq.com.au/api/v1/monitorings/{uuid}" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--data '{
"risk_level": "standard"
}'
const headers = {
"Content-Type": "application/json",
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
};
fetch("https://monitorhq.com.au/api/v1/monitorings/{uuid}", {
method: "PUT",
headers,
body: JSON.stringify({
"risk_level": "standard"
}),
}).then(response => response.json());
$response = Http::withHeaders([
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
])
->put('https://monitorhq.com.au/api/v1/monitorings/{uuid}', [
'risk_level' => 'standard',
]);
import requests
headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
}
response = requests.put(
"https://monitorhq.com.au/api/v1/monitorings/{uuid}",
headers=headers,
json={
"risk_level": "standard"
}
)
Example response (200)
{
"message": "Monitoring updated successfully",
"data": {
"uuid": "123e4567-e89b-12d3-a456-426614174000",
"entity_name": "Example Pty Ltd",
"entity_type": "company",
"acn": "123456789",
"abn": "12345678901",
"risk_level": "standard",
"added_at": "2026-01-15T10:00:00Z"
}
}
Stop monitoring
Stop monitoring an entity. The entity will be removed from your monitoring list. Only team owners can stop monitorings.
URL Parameters
- uuid string
- The monitoring UUID.
curl --request DELETE \
"https://monitorhq.com.au/api/v1/monitorings/{uuid}" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json"
const headers = {
"Content-Type": "application/json",
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
};
fetch("https://monitorhq.com.au/api/v1/monitorings/{uuid}", {
method: "DELETE",
headers,
}).then(response => response.json());
$response = Http::withHeaders([
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
])
->delete('https://monitorhq.com.au/api/v1/monitorings/{uuid}');
import requests
headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
}
response = requests.delete("https://monitorhq.com.au/api/v1/monitorings/{uuid}", headers=headers)
Example response (200)
{
"message": "Monitoring stopped successfully"
}