Homen8n

n8n integration

Verify contractor licenses in any n8n workflow

Drop a licensing check into onboarding, lead routing, or compliance flows. One HTTP Request node returns license status, trade, and expiration from state boards across 28 states. You only pay for the items we match.

License verification for any workflow

Onboarding a subcontractor, routing an inbound lead, or running a compliance gate? Add one node and you know whether the contractor is licensed and active before the workflow continues.

The HTTP Request node calls our verify endpoint per item and hands back the license status, number, trade, expiration, and any contact on file. Branch on match_confidence to auto-approve, flag for review, or reject.

1. Get an API key

Emailed in under a minute. The same key works on the REST API and the MCP server. No card, no call.

2. Add an HTTP Request node

Point an HTTP Requestnode at the verify endpoint, and map each item’s fields into the body with expressions.

Method & URL

POST https://contractorroster.com/api/v1/verify

Headers

X-API-Key:    cr_live_YOUR_KEY
Content-Type: application/json

Body (JSON, with expressions)

{
  "name":  "{{ $json.company_name }}",
  "state": "{{ $json.state }}",
  "city":  "{{ $json.city }}"
}

Pass name for a fuzzy match, or license_no for an exact one. The response comes back as parsed JSON you can reference downstream.

Two settings to get right

  • Turn Send Body on and set Body Content Type to JSON.
  • Store the key as a Header Auth credential (name X-API-Key) so it is reused and never sits in plain text.

3. What comes back

Each call returns the matched license plus a confidence score. Use the fields you need from the response: record.license_no, record.status, match_confidence, and the rest.

{
  "matched": true,
  "match_confidence": 1,
  "match_method": "exact",
  "record": {
    "license_no":      "1000002",
    "business_name":   "RANDALL MARK DOCKERY",
    "status":          "CLEAR",
    "trade":           "C57",
    "issue_date":      "2015-01-10",
    "expiration_date": "2027-01-31",
    "city":            "LODI",
    "zip":             "95242",
    "phone":           "(925) 383-0487",
    "email":           null,
    "website":         null
  }
}

No confident match returns { "matched": false } with any near candidates, and never charges you. Gate your flow on match_confidence to set your own bar.

Coverage & pricing

10¢ per match, from a prepaid balance. A miss costs nothing, so you only pay for hits. Top up from $50 via Stripe.

Coverage spans 28 stateswith 17 trades, sourced directly from each state’s licensing board. A contractor in a state we don’t cover yet returns matched: false. New states are added regularly.

Prefer to pull whole lists instead of verifying one at a time? The same key works on the MCP server and the HTTP API.