FLINTTECH x402

Live construction permit leads for Minneapolis, Chicago, Austin, Seattle, San Francisco, New York and Los Angeles, contractor permit history and website audits as clean JSON for AI agents. Pay per call in USDC on Base via x402: no API key, no signup, from $0.01.

Each paid route returns HTTP 402 with an x402 v2 payment requirement; your agent pays in USDC on Base mainnet (eip155:8453) and retries. Payments are verified and settled by the Coinbase CDP facilitator; settled calls are what list these endpoints in the Coinbase x402 Bazaar. Bulk/batch routes are the volume tier: lower cost per record. Free samples: /leads/preview, /audit/preview?url=, /trust/preview?name=.

EndpointPrice (USDC)InputWhat you get
GET /leads$0.25query: city=minneapolis|chicago|austin|seattle|san-francisco|new-york|los-angeles (default minneapolis), type (Minneapolis: Res|Commercial|Plumbing|Mechanical|Wrecking|Site; other cities: permit-type keyword), since=YYYY-MM-DD, status, minValue, q (scope keyword), limit<=100Metro Permit Leads: live construction permits for Minneapolis, Chicago, Austin, Seattle, San Francisco, New York and Los Angeles (each city's official open data) with job value, scope, address and the contractor who pulled it. Great for contractor/supplier sales prospecting.
GET /contractor$0.15query: name (required, partial match), since=YYYY-MM-DDContractor Permit History: a Minneapolis contractor's live permit count, total job value by trade, last permit, 10 most recent jobs (City open data) and MN DLI license status when the name matches. Vet or size a contractor.
GET /audit$0.10query: url (required)Website & Local Presence Audit: fetches a business site live and returns a 0-100 score, issue list and checks (HTTPS, speed, title/meta, mobile, LocalBusiness schema, tap-to-call, Google Maps/Business Profile link, sitemap, security headers).
GET /projects/early$1.50query: city (minneapolis default; calgary, edmonton, vancouver, melbourne), minValue (default 1000000, local currency), since=YYYY-MM-DD (default 90 days), type, q, limit<=100Early Commercial Projects: the biggest live Minneapolis construction permits ($1M+ or 10+ new units) with value, scope, units, address, parcel and GC. Get to the big jobs first.
GET /contractor/risk$1.50query: name (required), state=mn|wa (default mn)Contractor Risk Score: 0-100 risk score with each factor explained (MN DLI license status, enforcement flag, 24-month permit volume and recency, name ambiguity). For insurers, lenders and GCs.
GET /property$0.75query: address (required, with house number), city (optional)Property Intel: Hennepin County parcel (assessed value, land/building, tax, last sale, delinquency, business owner only) plus Minneapolis permit history at the address.
GET /license$0.20query: name (3-80 chars) or number, type (comma list of residential|registration|plumbing|electrical|mechanical)Minnesota License Lookup: official MN DLI license records (residential, registration, plumbing, electrical, mechanical bond) by business name or license number, with status, expiration and enforcement flag.
GET /leads/bundle$1.00same query as /leads (limit<=50, default 25) plus optional urlBundle: live Minneapolis permit leads, permit history and MN license records for the top 5 contractors, and an optional website audit, in one call.
GET /gbp-audit$0.25query: url (required)Google Business Profile readiness: scores a business site's schema, NAP, hours, maps link and tap-to-call, with fix steps. Fixes offered as FLINTmaps ($249 one-time).
GET /license/wa$0.20query: name (3-80 chars), license, or ubi (9 digits); limit<=25Washington Contractor License Lookup: official WA L&I registrations (construction, electrical, plumbing, elevator) with status, specialties, UBI, expiration and suspension dates. Add state=wa to /trust/contractor ($0.20) or /contractor/risk for WA trust and risk scores (WA L&I + Seattle permits).
GET /trust/bundle$3.00query: state=wa and name, license or ubiFLINTtrust Bundle: license + liability insurance + contractor bond + permit activity + trust and risk scores and a clear/review/decline verdict in one call. Free preview: GET /trust/bundle/preview?name=...
GET /license/or$0.20query: name (3-80 chars) or license (Oregon CCB number); limit<=25Oregon Contractor License Lookup: official Oregon CCB active license list with endorsements, expiration, bond and liability insurance on file, city and county. A miss means not on the active list (may be inactive, lapsed or not registered).
GET /contractor/history$0.50query: state=wa|mn, licenseFLINTwatch score history: dated license, suspension, insurance, bond and coverage-risk changes from daily snapshots.
POST /watchlist$0.50JSON: {state, license}Create a contractor watchlist with its first contractor; returns id + secret token and a baseline snapshot. $0.50 per contractor.
POST /watchlist/add$0.50JSON: {id, token, license}Add one contractor to a watchlist (up to 200).
GET /watchlist/changes$0.10query: id, token, since=YYYY-MM-DDLicense/insurance/bond/risk changes for the whole watchlist since a date, with alert flags.
POST /v1/audio/speech$0.01JSON: {input (<=1000 chars), lang?}FLINTvoice text-to-speech (MeloTTS, open model on Workers AI); audio as base64 (mp3 or wav).
POST /v1/audio/transcriptions$0.05JSON: {audio (base64, <=4 MB), language?}FLINTvoice speech-to-text (Whisper large-v3-turbo); text + timed segments.
POST /v1/images/generations$0.02JSON: {prompt, steps? 1-8}FLINTvoice image generation (FLUX.1 schnell), 1024x1024 JPEG as base64.
POST /v1/chat/completions$0.005JSON: OpenAI chat format {messages, max_tokens<=2048}FLINTinfer OpenAI-compatible chat on open-weight gpt-oss-20b (Workers AI).
GET /report/business$2.00query: name or license, state=mn|waFLINTreport one-call contractor compliance/due-diligence report: verdict, license, enforcement, WA insurance+bond, permits, scores, flags.
GET /report$0.05noneWeekly Minneapolis Permit Report: live last-7-days permit stats by trade (count, total and median value), value bands, top contractors and neighborhoods. Returns JSON.
POST /analyze$0.25JSON {"query": string (required), "context": object (optional)}Custom Analysis: answers your query from live data: Minneapolis permit activity by trade and time window, a named contractor's permit history, or x402 API pricing. Returns the answer plus the numbers behind it; a missing query is a free 400.
GET /leads/bulk$1.00same query as /leads, limit<=500 (default 500, since defaults to 30 days ago)Bulk tier: up to 500 live permit leads (any of the 7 cities) in one call (about $0.002/lead vs $0.0025 at /leads).
POST /contractor/batch$1.00JSON {"names": string[1-10], "since"?: "YYYY-MM-DD"}Batch tier: permit history for up to 10 contractors in one call ($0.10/name vs $0.15).
POST /audit/batch$0.75JSON {"urls": string[1-10]}Batch tier: website & local presence audits for up to 10 sites in one call ($0.075/site vs $0.10).
GET /contractor/verify$0.15query: name (required), since=YYYY-MM-DDMinnesota Contractor Check: MN DLI residential license status, expiration and enforcement flag plus Minneapolis permit history, in one call.
GET /trust/contractor$0.20query: name or license (MN DLI number)FLINTtrust Contractor Trust Check: 0-100 trust score with a point-by-point explanation, MN DLI license status, 24-month permit history by trade and recency (Minneapolis, plus Denver), red flags (expired/lapsed license, no permits in 2+ years, name mismatch, enforcement action) and data freshness dates. Call it before hiring or paying a contractor.
GET /trust/previewfreequery: name or licenseFLINTtrust free preview: score, band and flag count only.
GET /premium$0.01noneCheapest paid call: a tiny JSON payload. Use it to test your x402 client end to end on Base mainnet for one cent.
GET /leads/previewfreeoptional query: city (same cities as /leads)Free sample of Metro Permit Leads: the 3 newest permits for the chosen city, contractor and address partly masked. Full data: GET /leads.
GET /audit/previewfreequery: url (required)Free preview of the website audit: score, issue count and top 3 issues. No payment.

Try it

curl -i https://flinttech-x402.f1intt3ch.workers.dev/premium          # 402 + payment requirements
curl -i 'https://flinttech-x402.f1intt3ch.workers.dev/leads?type=Res&q=roof&limit=10'
curl -i 'https://flinttech-x402.f1intt3ch.workers.dev/contractor?name=Lucky%20Construction'
curl -i 'https://flinttech-x402.f1intt3ch.workers.dev/audit?url=example.com'
curl -i 'https://flinttech-x402.f1intt3ch.workers.dev/leads/bulk?type=Res&limit=500'
curl -i -X POST https://flinttech-x402.f1intt3ch.workers.dev/audit/batch -H 'content-type: application/json' -d '{"urls":["example.com","example.org"]}'
curl -i -X POST https://flinttech-x402.f1intt3ch.workers.dev/analyze -H 'content-type: application/json' -d '{"query":"Roofing permits in Minneapolis last 30 days"}'

Pay with @x402/fetch

import { x402Client, wrapFetchWithPayment } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";

const account = privateKeyToAccount(process.env.EVM_PRIVATE_KEY);
const client = new x402Client().register("eip155:8453", new ExactEvmScheme(account));
const fetchWithPay = wrapFetchWithPayment(fetch, client);

const res = await fetchWithPay("https://flinttech-x402.f1intt3ch.workers.dev/leads?type=Res&q=roof&limit=10");
console.log(await res.json());

const res2 = await fetchWithPay("https://flinttech-x402.f1intt3ch.workers.dev/analyze", {
  method: "POST", headers: { "content-type": "application/json" },
  body: JSON.stringify({ query: "Check Lucky Construction LLC" }),
});
console.log(await res2.json());

Machine-readable

Prefer a subscription?

Humans who want contractor license, insurance, bond and risk data without per-call payments can subscribe: FLINTleads $99/month, FLINTrisk $299/month or $2,990/year, FLINTunderwrite $999/month. Subscribe ($299/month) ยท free sample report

Legal

Terms | Privacy | Refunds

Refunds: Calls are final once paid; a call that fails due to our error is refunded to the paying wallet if you email the tx hash to f1intt3ch@gmail.com within 7 days.

Payments settle to 0x328c4Dbb5B9E0811835E7d8c58295857b4F7f7E5.