Developer guide

From input to vehicle data.

Australia is live. Choose your access route, make a request and use the response metadata to decide how the result fits your workflow.

01 / Application integration

RapidAPI: plate or VIN, one parameter.

Subscribe to the AU Rego Check listing and use the API key supplied by RapidAPI.

  1. Review and select a current marketplace plan.
  2. Send regoOrVin and an Australian state for plate lookups.
  3. Check HTTP status, then the vehicle fields and _meta.

These snippets describe the RapidAPI route. MCP and x402 use different authentication and parameter names. Keep API keys on your server.

Endpoint and parameters

GET https://au-rego-check.p.rapidapi.com/rego-check
Headers:
  x-rapidapi-host: au-rego-check.p.rapidapi.com
  x-rapidapi-key: YOUR_API_KEY

Query:
  regoOrVin  registration plate or 17-character VIN
  state      NSW | VIC | QLD | WA | SA | TAS | ACT | NT
             required for a plate; optional for a VIN

cURL

curl --get 'https://au-rego-check.p.rapidapi.com/rego-check' \
  --data-urlencode 'regoOrVin=1ABC123' \
  --data-urlencode 'state=VIC' \
  --header 'x-rapidapi-host: au-rego-check.p.rapidapi.com' \
  --header 'x-rapidapi-key: YOUR_API_KEY'

JavaScript / Node.js

const params = new URLSearchParams({
  regoOrVin: "1ABC123", state: "VIC"
});
const response = await fetch(
  `https://au-rego-check.p.rapidapi.com/rego-check?${params}`,
  { headers: {
    "x-rapidapi-host": "au-rego-check.p.rapidapi.com",
    "x-rapidapi-key": process.env.RAPIDAPI_KEY
  } }
);
if (!response.ok) throw new Error(`HTTP ${response.status}`);
const vehicle = await response.json();
if (vehicle.make == null) {
  console.log(vehicle._meta?.reason ?? "No vehicle identity");
} else {
  console.log(vehicle.year, vehicle.make, vehicle.model);
}

Python

import os
import requests

response = requests.get(
    "https://au-rego-check.p.rapidapi.com/rego-check",
    headers={
        "x-rapidapi-host": "au-rego-check.p.rapidapi.com",
        "x-rapidapi-key": os.environ["RAPIDAPI_KEY"],
    },
    params={"regoOrVin": "1ABC123", "state": "VIC"},
    timeout=30,
)
response.raise_for_status()
vehicle = response.json()
if vehicle.get("make") is None:
    print(vehicle.get("_meta", {}).get("reason", "No match"))
else:
    print(vehicle["year"], vehicle["make"], vehicle["model"])

Example inputs are illustrative and do not guarantee a matching vehicle. Also consult the current endpoint reference in your RapidAPI subscription.

02 / MCP

Tools with a Bearer key

Connect to https://api.csnb.net/mcp with a separately issued CSNB key. Tools are vehicle_lookup and coverage. Vehicle lookup accepts country, plate (or VIN) and state.

MCP setup & configuration

03 / x402 HTTP

A wallet instead of a key

Request /agent/check with country=AU, plate and state. The unpaid response provides x402 v2 terms. After authorization is verified and the lookup succeeds, payment is settled for 0.25 USDC on Base.

x402 quickstart & retries

RapidAPI keys, CSNB MCP keys and x402 authorizations are separate credentials. Paying for one HTTP lookup does not issue an MCP key or increase its quota.

Response contract

Vehicle identity, with explicit gaps.

RapidAPI returns the vehicle object directly. x402 wraps it in {vehicle, payment}; MCP returns it inside tool content.

Vehicle identity fields and their availability
FieldTypeMeaning
search, statestringYour lookup input and state value. Use an uppercase state code for a consistent request.
year, make, modelstring | nullVehicle identity supplied by the lookup provider or parsed from its description.
vinstring | nullVehicle identification number when available.
body, transmissionstring | nullBody type and transmission when supplied or derived.
descriptionstring | nullThe provider description. Additional specifications may appear in this text without dedicated fields.
nvicstring | nullCatalogue identifier for a matched variant, when supplied.
vehicleValueMin, vehicleValueMax, vehicleMinMarketValuenumber | nullReserved for future use. Currently null; no valuation is provided.
_metaobjectResult source, provider confidence and, when applicable, an empty-result reason. Confidence is not a calibrated probability.

Field completeness varies. This is a vehicle identity API, not an owner search, registration-status certificate, finance check or comprehensive history report. Data scope and freshness →

Errors & retries

Check the transport and the result.

Error handling by access route
RouteResponseWhat your client should do
RapidAPI vehicle lookup200 with vehicle fields or an empty resultInspect make and _meta.reason. Reasons include empty_rego, unsupported_state, no_vehicle_found, all_channels_failed and parse_error.
Gateway / infrastructure403, 429, 5xx and other gateway errorsHandle authorization, access restrictions, rate limits and temporary failures separately. The legacy data envelope does not override these statuses.
MCP401, JSON-RPC errors or a tool result with isErrorCheck the CSNB key and quota, then inspect the tool response.
x402 HTTP402 payment required; 200 settled resultValidate PAYMENT-REQUIRED, authorize with a compatible wallet, then send PAYMENT-SIGNATURE. Save the returned PAYMENT-RESPONSE.
x402 in progress202 settlement pending or 409 payment processingObserve Retry-After and retry the same URL and signed payload. Do not authorize another payment while its outcome is uncertain.
x402 lookup unavailable503 before settlementNo settlement is initiated for that failed lookup. Follow the response and keep the original authorization until its outcome is known.

Optional compatibility route

Direct-transfer invoices

Adding payment=transfer to /agent/check selects the CSNB-specific prepaid invoice flow, not standard x402. Pay the exact amount within 15 minutes, including its identifying tail below 0.01 USDC. Poll /agent/poll?id=<invoice-id>, then repeat the lookup with X-CSNB-Invoice.

Only confirmed, timely, exact transfer events can credit an invoice. One event pays one invoice. A timely payment can be reconciled even if polling resumes after the invoice shows expired. An unavailable lookup retains its paid credit, and a completed lookup replays its saved result.

Direct transfers are prepaid and are not automatically refunded. Do not send another transfer to retry a paid invoice. For new integrations, use standard x402.

Full headers, schemas and status codes in OpenAPI →