REST API · v1

Embed compliance directly
in your workflow.

Single-loan validation, batch processing, MISMO-normalized confidence scoring, and cryptographic audit trails — all via a clean REST API that integrates with any LOS, valuation platform, or internal system.

JSON over HTTPSAPI key authenticationScoped permissionsAvailable on Professional + Enterprise
POST/v1/validate

Single-loan AVM compliance validation with full MISMO response and optional SOPA session creation.

POST/v1/batch

Batch validation for loan tapes. Sync for small batches, async with webhook for large volumes.

GET/v1/sessions

Query compliance sessions with filtering by status, loan type, state, date range, and pagination.

GET/v1/sessions/:id

Retrieve a single session with full compliance proof, MISMO normalization audit, and nondiscrimination tags.

Authentication

API keys with scoped permissions.

Create API keys from the dashboard with granular permission scopes. Keys are hashed at rest — the raw key is shown exactly once at creation. Each key can be named, scoped, rate-limited, and revoked independently.

Pass your key in the X-API-Key header. Every request is attributed to the key's tenant and recorded in the protocol chain.

Authentication
# Every request requires an API key

POST /api/v1/validate
Host: api.avms.ai
X-API-Key: avms_live_k7x9m2...
Content-Type: application/json

# Available scopes:
# validate:write — validate + create sessions
# validate:read — validate only (no session)
# batch:write — batch processing
# sessions:read — query sessions
# reports:read — download reports
Single-Loan Validation

One loan. Full compliance. One request.

Submit loan and AVM data. Receive the five-factor policy check result, MISMO-normalized confidence, nondiscrimination tags, and an optional cryptographic session — all in a single synchronous response.

Request BodyPOST /v1/validate
{
"loan": {
"loanNumber": "LN-2025-04821",
"loanType": "conventional",
"loanPurpose": "purchase",
"loanAmount": 485000,
"property": {
"street": "2847 Maple Drive",
"city": "Salt Lake City",
"state": "UT",
"zipCode": "84106",
"propertyType": "single_family"
},
"originator": {
"name": "Sarah Chen",
"nmlsId": "1234567",
"company": "Mountain West Lending"
}
},
"avm": {
"vendor": "CoreLogic",
"model": "PASS",
"confidenceScore": 87,
"estimatedValue": 512000,
"valuationDate": "2025-11-15"
},
"options": {
"mode": "compliance",
"createSession": true,
"includeAuditTrail": true
}
}
Response200 OK
{
"status": "passed",
"sessionId": "ses_a7f3c9d1...",
"factors": {
"eligibility": { "status": "passed" },
"factor1": {
"status": "passed",
"normalizedScore": 87,
"threshold": 80,
"tier": "HIGH"
},
"factor2": { "status": "passed" },
"factor3": { "status": "passed" },
"factor5": { "status": "passed" }
},
"normalizedAvm": { ... },
"ndTags": { ... },
"auditTrail": { ... },
"policyVersion": "2.1.0",
"processingTimeMs": 142
}
MISMO Normalized Output

The normalizedAvm object.

Every response includes the full MISMO normalization result: the original score, the normalized MISMO CCS score, the confidence tier, the PP10 basis, the normalization method used, and any warnings the engine emitted.

The pp10Basis field tells you exactly how much to trust the confidence score:

vendor_reported

The vendor publishes this metric as PP10-aligned. We're passing it through directly.

platform_inferred

We derived a percentage from a non-PP10 metric (FSD inversion, scale transform). The output approximates a probabilistic claim but isn't the vendor's own.

not_applicable

The source metric type (letter grade, qualitative term) doesn't support a probabilistic claim.

normalizedAvm
{
"vendorKey": "corelogic",
"vendorOriginal": "CoreLogic",
"normalizedScore": 87,
"originalScore": 87,
"metricType": "PERCENTAGE",
"tier": "HIGH",
"pp10Basis": "vendor_reported",
"normalizationMethod": "VENDOR_SPECIFIC",
"normalizationConfidence": 0.95,
"usageGuidance": "Suitable for...",
"warnings": []
}

// Tiers: HIGH (85-100), MEDIUM_HIGH (75-84),
// MEDIUM (65-74), MEDIUM_LOW (50-64), LOW (0-49)
auditTrail
{
"tenantId": "tn_mwl_7k9x...",
"policyVersion": "2.1.0",
"validationStartedAt": "2025-11-15T...",
"validationCompletedAt": "2025-11-15T...",
"processingTimeMs": 142,

// Cryptographic integrity (Factor 2)
"integrityHash": "a3f7c9d1e8b2...",
"chainPosition": "e9d3a7f2b5c1...",
"integrityVerified": true,

// Result summary
"status": "passed",
"factorStatuses": {
"eligibility": "passed",
"factor1": "passed",
"factor2": "passed",
"factor3": "passed",
"factor5": "passed"
},
"issueCount": 0
}
Cryptographic Audit Trail

Proof, not just a result.

Set includeAuditTrail: true and the response includes the full cryptographic evidence for the validation event.

The integrity hash provides a cryptographic proof that the data was not modified between submission and evaluation. The chain position links this validation event into the institution's verifiable evidence sequence.

Per-factor timing breakdowns prove which checks ran and when. The integrity verification flag confirms the intake data is unchanged from submission to evaluation. This is the evidence structure an examiner would review when evaluating your Factor 2 controls.

Batch API

Thousands of loans.
One request.

Submit up to 10,000 loans in a single batch request. Each loan receives the same five-factor policy check, MISMO normalization, and nondiscrimination tagging as a single-loan validation.

Small batches (<100 loans) process synchronously. Larger batches process asynchronously with progress tracking and optional webhook notification on completion.

Batch results include per-loan status, issues, session IDs, and an aggregate summary — along with the same MISMO-normalized AVM data and compliance proof available on single-loan requests.

Max batch size:10,000 loans per request
Sync threshold:< 100 loans (synchronous response)
Async processing:Webhook or polling for large batches
Per-loan output:Status, issues, session ID, MISMO data
Aggregate summary:Passed / alerted / blocked counts
Batch RequestPOST /v1/batch
{
"loans": [
{
"loan": { ... },
"avm": { ... }
},
// ... up to 10,000 entries
],
"options": {
"mode": "compliance",
"async": true,
"webhookUrl": "https://..."
}
}

// Response (async):
{
"batchId": "bat_x9m2k7...",
"status": "processing",
"progress": {
"total": 2847,
"processed": 0
}
}
Integration Patterns

Where the API fits.

LOS Integration

Embed compliance validation in your loan origination workflow. Validate at the point of decision — before the loan closes, not after.

Call /v1/validate when the AVM is received. Use the response to gate or flag the loan in your LOS based on the five-factor result.

Bulk Portfolio Review

Validate existing portfolios against current policies. Process historical loan tapes to build retroactive compliance evidence.

Submit loan tapes via /v1/batch. Use analytics mode for non-session validation, or compliance mode to create full protocol sessions.

Secondary Market Diligence

Generate loan-level compliance proofs for securitization due diligence, investor reporting, and GSE seller/servicer requirements.

Process acquisition tapes with includeAuditTrail: true. Each loan receives a cryptographic proof packet with MISMO normalization and policy check evidence.

Nightly Batch

Automate daily compliance processing. Submit the day's originations via SFTP or API batch with webhook notification.

Schedule a nightly job that pushes the day's loans to /v1/batch with async: true. Receive results via webhook or poll for completion.

Vendor Evaluation

Compare AVM vendor performance before signing contracts. Process sample tapes from candidate vendors through the MISMO engine.

Submit sample data from each vendor. Compare normalized confidence distributions, tier breakdowns, and PP10 coverage across vendors.

Internal Analytics

Feed MISMO-normalized AVM data into your internal risk models, data warehouse, or business intelligence tools.

Use analytics mode (createSession: false) for lightweight validation without protocol session creation. Parse the normalizedAvm object for downstream consumption.

Your LOS. Our proof layer. Integrated.

Start your free trial. Create an API key from the dashboard. Validate your first loan in under five minutes. The API is available on Professional and Enterprise plans.

API available on Professional ($48K/yr) and Enterprise ($96K/yr) plans