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.

Convention: financials.operatingExpensesis the total of all expenses below gross profit, including owner compensation, depreciation, amortization, and interest. The engine subtracts that total and adds the separately supplied add-back fields back when computing seller's discretionary earnings, so do not pre-subtract them.

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 three events: valuation.created (from the app, the API, client intake, and bulk import), report.purchased, and review.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, from $99 per month. Request a walkthrough to get your firm set up, or try the product first with the free calculator.