Product & API Documentation
WorkClear supports both non-technical operations teams and developer integrations. Test licence coverage in the dashboard, inspect API response shapes, or verify/search via API across 8 states with 1.0M licence records across building and trades, real-estate, and current security coverage.
https://www.workclear.com.au/apiTest coverage first
Use web search and the status page to confirm the licence categories your workflow needs.
Try searchChoose an API tier
API access starts on Pro, with higher monthly call volume on Business and Enterprise.
Compare pricingBuild server-side
Keep API keys out of client code and call WorkClear from your own backend service.
AuthenticationQuick Start
Get your first API response in under two minutes.
Create an account
Sign up at workclear.com.au/signup — API access is available on paid plans.
Get your API key
Generate a key from your dashboard. Keys start with wc_live_.
Make your first request
Authentication
All API v1 endpoints require authentication. Pass your API key via the x-api-key request header.
Header Authentication (recommended)
Security tip: Never expose your API key in client-side code. Always call the WorkClear API from your backend server.
API Key Format
| Prefix | Description |
|---|---|
| wc_live_ | API key — requests count against your monthly quota |
Unauthenticated Endpoints
The following endpoints do not require an API key:
GET /api/status— System health check
Dashboard Workflows
Built for quick manual verification and integration testing. Search current coverage, inspect source fields, and compare the dashboard result with the `/api/v1/verify` response shape before wiring checks into your own system.
Test a licence type before you build against it
The dashboard is the quickest way to confirm whether WorkClear covers a register, what the official source publishes, and what your API integration should expect for a matching licence.
- Search by licence number, name, or ABN across contractor, real-estate, and security coverage.
- Scope searches by state and category where the API needs source-family context, such as NSW Design and Building Practitioners.
- Review status, class, expiry, source, and enriched fields before deciding how to map them in your platform.
- Copy a representative API request or JSON response for backend implementation and QA.
Endpoint
/api/v1/verify
Mode
Response preview
{
"status": "active",
"state": "QLD",
"licence_number": "15427909",
"valid_currently": true
}
state, sector, category where needed
What you test
Whether a licence type is covered, which state/category parameters matter, and whether the record returns active, inactive, expired, or not found.
What you inspect
Licence type, authorised classes, expiry, source, address fields, ABN/ACN, and source-specific enrichment when published.
What you build
Use the copied request and response shape as a reference for backend onboarding, compliance decisions, and QA fixtures.
Search & Verify
Fast single-licence checks from the dashboard
- Search by licence number, name, or ABN.
- View status, licence class, state, and expiry in one result card.
- Toggle between the UI summary, API response preview, and request example.
Licence: QLD-DEMO-54898
State: QLD
Class: Builder - Open
Expiry: 31 Jan 2028
Bulk CSV
Upload contractor lists and verify them in batches
CSV processing pipeline
218 / 320 rows processed
Post-run actions
- Filter invalid/expiring rows
- Download the verified CSV result set
- Use the API for ongoing or higher-volume verification
Free search
Fast manual checks for occasional verification
Use the dashboard when you need to look up a licence quickly or test how a source is represented.
API path
Programmatic checks for onboarding and compliance systems
Use API keys when checks need to run inside your own product, workflow, or database process.
Verify Licence
/api/v1/verifyLook up a licence by its licence number. Returns full details including holder name, status, expiry date, data source, and any published register metadata. Searches across all current coverage by default, or filter to a specific state and sector. State-scoped exact checks can use source-specific freshness paths where available.
Canonical endpoint: /api/v1/verify. The legacy /api/verify alias remains available for compatibility.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| licence_number | string | Required | The licence number to verify |
| state | string | Optional | State code: QLD, NSW, VIC, SA, WA, ACT, NT, TAS. Searches all states if omitted; required for QLD QBCC live exact fallback. |
| sector | string | Optional | "contractor" (default), "real_estate", or "security". Real-estate checks are live for VIC, NSW, QLD, WA, ACT, NT, and TAS; security coverage is source-specific, starting with QLD Security. |
| category | string | Optional | Optional specialised source category. Use "designer" or "nsw_dbp" for NSW Design and Building Practitioners records. |
Sector Values
Choose the sector that matches the register being checked. Security is a separate sector from contractor coverage; current security checks are live for QLD security employee and firm records.
Request
Security Request Example
For QLD security employee and firm checks, pass sector=security and state=QLD.
Specialised NSW DBP Example
NSW Design and Building Practitioners records share state=NSW and sector=contractor, so they are opt-in through category=designer or category=nsw_dbp. Ordinary NSW contractor checks do not return DBP rows unless this category is provided.
State Scope and Live Fallbacks
Licence numbers are not globally unique across Australian registers. For broad discovery you can omit state, but production exact checks should pass both sector and state. QLD QBCC contractor checks use the local WorkClear dataset first; when a scoped exact lookup misses, WorkClear may run a live QBCC exact check and cache a positive result.
Response
| Field | Type | Description |
|---|---|---|
| status | string | "active", "expired", "inactive", "unknown", "source_absent", or "not_found" |
| state | string | Australian state code (QLD, NSW, VIC, etc.) |
| licence_number | string | The licence number |
| licensee_name | string | Name of the licence holder |
| abn | string | null | Australian Business Number |
| acn | string | null | Australian Company Number |
| business_address | string | null | Published business or register address, where available |
| licence_type | string | null | Source-published licence, instrument, or category label |
| financial_category | string | null | Financial category where published by the source |
| licence_classes | array | Source-published authorised work classes or scopes, where available |
| issue_date | string | null | Licence issue date (YYYY-MM-DD) |
| expiry_date | string | null | Licence expiry date (YYYY-MM-DD) |
| source | string | Data source (e.g. "QBCC Licensed Contractors Register") |
| valid_currently | boolean | False when expired, inactive, unknown, or absent from the latest source refresh |
| source_absent_at | string | null | When the record was first missing from a completed source refresh |
| live_lookup | object | undefined | Present when a source-specific live lookup was attempted, skipped, or unavailable |
Licence Type and Classes
WorkClear preserves the wording published by each official register. Different states place the useful authorisation signal in different fields, so national integrations should not rely on licence_type = "Electrician" alone.
Use licence_typeas the source's licence or instrument label, and use licence_classes as the published classes or scopes where that register exposes them. An empty licence_classes array does not by itself mean the licence is not electrical; some registers express the relevant authorisation in licence_type.
Electrical Checks by State
| State | Where the electrical signal usually appears |
|---|---|
| NSW | Usually in licence_classes, for example Electrician. |
| ACT | licence_type may be Electrician, while licence_classes gives the class or scope, for example Class 2 - Unrestricted. |
| VIC | Often in licence_type, for example Registered Electrical Contractor, Licensed Electrical Worker, or Licensed Electrical Inspector. |
| WA | Often in licence_type, for example Electrician or Electrician's Training Licence. |
| NT | Often in licence_type, including restricted, unrestricted, mechanic, and fitter wording. |
| TAS | Both fields can matter, for example an electrical type plus Practitioner or Contractor class. |
| SA | Current live SA coverage is active Consumer and Business Services PGE and Builder/BLD records; assess the returned type/class values and active status. |
| QLD electrical | Not live yet through the gated Appian electrical source. QLD building/trades and real-estate coverage remain separate. |
Electrical Field Examples
These examples show field placement across registers. Always evaluate the actual values returned for the licence being checked.
Recommended Matching Logic
- Require
status = "active"andvalid_currently = true. - Evaluate both
licence_typeand everylicence_classes[].class. - Apply state-specific rules for accepted roles and scopes.
- Treat restricted, unrestricted, provisional, training, worker, and contractor labels according to your policy.
Search Licences
/api/v1/searchSearch for licences by name, ABN, or supported sector-specific fields. Supports state filtering, sector selection, and pagination.
Canonical endpoint: /api/v1/search. The legacy /api/search alias remains available for compatibility.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| q | string | Required | Search query — name, holder name, or ABN depending on sector |
| state | string | Optional | Filter by state (QLD, NSW, VIC, SA, WA, ACT, NT, TAS) |
| type | string | Optional | "name", "abn", or "licence_type" (auto-detected if omitted) |
| sector | string | Optional | "contractor" (default), "real_estate", or "security". Real-estate checks are live for VIC, NSW, QLD, WA, ACT, NT, and TAS; security coverage is source-specific, starting with QLD Security. |
| limit | integer | Optional | Max results to return (default: 10, max: 100) |
| include_absent | boolean | Optional | Set to "true" to include records absent from the latest source refresh. Hidden by default. |
Request
Response
Bulk Verify
/api/verify/bulkVerify multiple licence numbers in one request. Supports sector-aware batches, including VIC, NSW, QLD, WA, ACT, NT, and TAS real-estate lists and QLD security lists.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| licences | string[] | Required | Array of licence numbers to verify (max 100 per request) |
| state | string | Optional | Optional state filter. Use VIC, NSW, QLD, WA, ACT, NT, and TAS for current real-estate coverage and QLD for current security coverage. |
| sector | string | Optional | "contractor" (default), "real_estate", or "security". |
| category | string | Optional | Optional batch-wide specialised source category. Use "designer" or "nsw_dbp" for NSW Design and Building Practitioners records. |
Request
Response
Data Coverage
/api/v1/coverageReturns data coverage information — which states are available, record counts, data sources, and when data was last updated.
Request
Response
Current Coverage
This table summarises the main state coverage used by contractor-first API examples. For the live sector matrix, including real-estate and security source families, use the Status page or the coverage endpoint response.
| State | Records | Source | Status |
|---|---|---|---|
| QLD | 120K+ | QBCC | Live |
| NSW | 356K+ | NSW Fair Trading | Live |
| VIC | 185K+ | VBA / ESV | Live |
| SA | 35K+ | CBS active PGE + Builder/BLD slices | Live |
| WA | 98K+ | WA Building Commission | Live |
| ACT | 23K+ | ACT Construction Occupations | Live |
| NT | 13K+ | NT Licensing | Live |
| TAS | 14K+ | CBOS Tasmania | Live |
Need a source we don't cover yet?
Send us the register name, state, licence type, and a few sample licence numbers. If the official source is workable, we can assess it for onboarding.
Health Check
/api/healthNo auth requiredMinimal service health endpoint. Use this for uptime probes and infrastructure monitoring. This is not a licence lookup endpoint.
Request
Response
System Status
/api/statusNo auth requiredPublic system and data-status snapshot. Returns monitored state health and record coverage. No authentication required. For simple uptime checks, use /api/health.
Request
Response
See real-time status on our Status Page.
Check Licence Status
/api/v1/statusQuick validity check — returns whether a licence is currently valid with a simple boolean is_valid flag. Lighter response than the full verify endpoint.
Naming note: /api/status is platform status, while /api/v1/status is licence status.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| licence_number | string | Required | The contractor licence number |
| state | string | Optional | State code (QLD, NSW, VIC, etc.). Recommended for accuracy. |
Request
Response
API Usage
Standard API plans are for your own business workflows. Use the API from your backend to verify licences inside onboarding, procurement, compliance, marketplace, CRM, or back-office systems.
Included in standard API plans
- Embed licence checks into your own product or internal workflow.
- Show verification results to your users as part of your normal service.
- Store results for reasonable operational, audit, support, and compliance purposes.
Requires a separate agreement
- Reselling, white-labelling, or syndicating WorkClear-powered checks.
- Offering licence verification as a standalone third-party data service.
- Bulk redistributing results or building a substitute licence database from API output.
If your platform needs partner, reseller, or customer-facing verification rights, contact us and we can set up the right commercial API agreement.
Rate Limits
API calls are rate-limited based on your plan. Monthly API limits reset on the 1st of each month. Web lookups on workclear.com.au are free and unlimited for all plans.
| Plan | API Calls | Price | Best For |
|---|---|---|---|
| Free | Web only (no API access) | $0 | Manual lookups |
| Pro | 1,000 / month | $29/mo | Growing businesses |
| Business | 10,000 / month | $99/mo | High-volume applications |
| Enterprise | Unlimited | Custom | Custom SLAs & support |
Rate Limit Headers
When you exceed your rate limit, the API returns a 429 status with these headers:
| Header | Description |
|---|---|
| X-RateLimit-Limit | Your monthly limit |
| X-RateLimit-Remaining | Remaining calls this month |
| Retry-After | Seconds until the monthly limit can be retried |
Need higher limits? Compare plans or contact us for Enterprise pricing.
Error Codes
The API uses standard HTTP status codes. All error responses include a JSON body with an error field.
| Code | Meaning | What to Do |
|---|---|---|
| 200 | Success | Request succeeded. Check the response body — a 200 with "status": "not_found" means no licence was matched. |
| 400 | Bad Request | Invalid or missing parameters. Check that licence_number is provided and state is a valid code. |
| 401 | Unauthorized | Missing or invalid API key. Verify your x-api-key header. |
| 429 | Rate Limited | You've hit your monthly limit. Upgrade your plan or wait for the next monthly reset. |
| 500 | Server Error | Something went wrong on our side. Retry after a moment. If it persists, contact support. |
Error Response Format
Python Integration
Use the standard requestslibrary to integrate WorkClear into any Python application. Here's a ready-to-use client class:
No official Python package is required today.Use this client directly with your API key; we'll document a package if we add one.
JavaScript / Node Integration
Works with Node.js, Deno, Bun, or any runtime with fetchsupport. Here's a reusable client class:
No official npm package is required today.Use this client directly with your API key; we'll document a package if we add one.
Webhooks
Planned
Receive licence status-change events, renewal confirmations, and source-update notifications delivered to your endpoint.
Interested? Let us know and we'll notify you when it's live.
Ready to build licence checks into your workflow?
Start with free web search, then choose a paid plan when you need API access, bulk checks, or higher verification volume.