Valuation API

Run the full six-method Valzura valuation engine from your own practice management software, CRM, or internal tools. JSON in, JSON out, with signed webhooks for new valuations and report purchases. API access is included in the Advisor plan; keys are created in Dashboard → Settings.

Authentication

Every request carries an API key in the Authorization header: Authorization: Bearer vz_live_.... Keys are shown once at creation and can be revoked at any time. Requests are rate limited per key.

Endpoints

POST /api/v1/valuations

Runs a valuation server-side and saves it to your workspace (pass "save": false to compute without saving). Required: businessInfo.businessName, businessInfo.industryId, and financials.revenue. Optional: full financial detail, risk factors, assumption overrides, and a clientName tag. An unknown industry id returns the list of valid ids. Responds 201 with { id, results }, where results contains the blended range, all six methods, scores, scenarios, sensitivity, value conclusions, and the lender summary.

curl -X POST https://valzura.com/api/v1/valuations \
  -H "Authorization: Bearer vz_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "businessInfo": {
      "businessName": "Example Dental PLLC",
      "industryId": "dental-practice"
    },
    "financials": {
      "revenue": 1250000,
      "costOfGoodsSold": 180000,
      "operatingExpenses": 620000,
      "ownerCompensation": 220000
    },
    "riskFactors": { "recurringRevenuePercent": 35, "revenueTrend": "growing" },
    "clientName": "Dr. Jane Example"
  }'

GET /api/v1/valuations

Lists your 100 most recent valuations with business name, industry, client tag, pipeline stage, and midpoint value.

GET /api/v1/valuations/{id}

Fetches one valuation in full: inputs as submitted and the complete results object.

Webhooks

Configure one https endpoint in Dashboard → Settings. Valzura POSTs JSON for two events: valuation.created (from the app, the API, client intake, and bulk import) and report.purchased. Every delivery is signed: verify the X-Valzura-Signature header against the raw body with your signing secret.

import crypto from "node:crypto";

function verify(rawBody, signatureHeader, secret) {
  const expected =
    "sha256=" + crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(signatureHeader)
  );
}

Industry ids

The engine covers 43 industries. Ids follow the slugs on the industries directory (for example dental-practice, hvac, saas), and any request with an unknown id returns the complete valid list.

The API is part of the Advisor plan. Talk to our team to get your firm set up, or try the product first with the free calculator.