API Documentation
Integrate AI-powered asset valuations into your applications with our REST API. Generate value estimates for any asset through multi-agent consensus with real-time market grounding.
Quick Start
Make a POST request to /api/v1/value with your API key and asset description to get a valuation:
curl -X POST "http://localhost:8000/api/v1/value" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "asset_description=1967 Fender Stratocaster electric guitar in sunburst finish. Original pickups, minor wear on fretboard, includes original hardshell case. Serial number verified, all electronics functional."
# With optional image for vision-enhanced valuation:
curl -X POST "http://localhost:8000/api/v1/value" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "asset_description=Vintage guitar, see photo for details" \
-F "image=@guitar.jpg"Example Response
{
"valuation_id": "550e8400-e29b-41d4-a716-446655440000",
"valuation_timestamp": "2025-01-15T10:30:00Z",
"currency": "USD",
"asset_description": "1967 Fender Stratocaster...",
"asset_type": "non_cash_flowing",
"asset_category": "instruments",
"classification_reasoning": "Vintage electric guitar...",
"estimate": 28500,
"range": {
"low": 22000, "high": 35000,
"low_multiple": 0.77, "high_multiple": 1.23
},
"confidence": 0.78,
"distribution": {
"p10": 22000, "p25": 25000, "p50": 28500,
"p75": 32000, "p90": 35000
},
"liquidity_tier": "weeks",
"recommended_refresh_days": 90,
"methodology_summary": "Factor-based valuation using...",
"valuation_summary": {
"participants": 1,
"final_estimates": [28500],
"estimates": [...],
"convergence": [...]
},
"cost": {
"total_input_tokens": 8500,
"total_output_tokens": 2100,
"total_cost_usd": 0.018
}
}
// Note: null fields are omitted from response for cleaner payloadsAuthentication
All API requests require authentication using a Bearer token. Include your API key in the Authorization header:
Authorization: Bearer impv_your_api_key_hereAPI Key Types
- •User API Keys — Generated from your account dashboard. Start with
impv_ - •Internal Keys — For frontend-to-backend communication (configured in environment)
Public endpoints that don't require authentication:/health,/docs,/redoc
Rate Limiting
Rate limits protect the API from abuse and ensure fair access. Limits are applied per API key or IP address.
5 requests/minute
1 request/minute
50 KB
10-2,000 chars
Content Policy
Requests are screened for ethical policy violations. The following categories will be blocked with a 400 response:
- • Illegal items — Drugs, stolen goods, counterfeit products
- • Human exploitation — Trafficking, organ sales, slavery-related
- • Endangered species — Protected wildlife products
- • Controversial historical — Items glorifying hate groups
Note: Collectible weapons (antique firearms, historical swords, military memorabilia) are allowed and will be valued appropriately.
Blocked Request Response
{
"error": "valuation_blocked",
"category": string, // "illegal_items"|"human_exploitation"|
// "endangered_species"|"controversial_historical"
"reason": string, // Human-readable explanation
"policy_url": string | null
}Base URL
All API endpoints are relative to the base URL:
http://localhost:8000Replace with your production URL when deploying. Interactive API documentation is also available at /docs (Swagger UI).
Endpoints
Submit an asset description (with optional image) to receive a value estimate using factor-based valuation with LLM-extracted factors. If an image is provided, a vision model will analyze it and enhance the description. Includes market research grounding and comprehensive analysis.
Request
// Content-Type: multipart/form-data
Form Fields:
asset_description: string // Required. 10-2,000 characters.
image: File | null // Optional. Image file (JPEG, PNG, WebP) for vision-enhanced valuation.
timeout: number | null // Optional. 5-120 seconds.
skip_cache: boolean // Optional. Force fresh valuation. Default: falseResponse
{
// === Fintech Integration Fields ===
"valuation_id": string, // UUID for tracking/audit
"valuation_timestamp": string, // ISO 8601 timestamp
"currency": "USD",
// === Core Valuation Fields ===
"asset_description": string, // Description used for valuation (may be vision-enhanced)
"original_description"?: string, // User's original description (only if image provided)
"vision_enhanced_description"?: string, // Vision-enhanced description (only if vision phase was used)
"asset_type": "cash_flowing" | "non_cash_flowing",
"asset_category": string,
"classification_reasoning": string,
"estimate": number, // Point estimate (median)
"range": {
"low": number, // 10th percentile
"high": number, // 90th percentile
"low_multiple": number, // Low as multiple of estimate
"high_multiple": number // High as multiple of estimate
},
"confidence": number, // 0-1 based on convergence
"distribution": {
"p10": number, "p25": number, "p50": number,
"p75": number, "p90": number
},
// === Market & Risk Indicators ===
"liquidity_tier": string, // "immediate"|"days"|"weeks"|"months"|"illiquid"
"recommended_refresh_days": number,
"methodology_summary": string,
"market_timing_status"?: string, // "appreciating"|"stable"|"depreciating"
"refresh_urgency"?: string, // Volatility classification
"average_annual_change_rate"?: number,
// === Analysis Fields (omitted when null) ===
"description_quality"?: object,
"uncertainty_analysis"?: object,
"attribution_analysis"?: object,
"framework_used"?: object,
"grounding_context"?: object, // Market research data
// === Cost & Timing ===
"cost": {
"total_cost_usd": number,
"total_duration_ms": number,
"total_llm_calls": number,
"total_input_tokens": number,
"total_output_tokens": number,
"phases": object
},
// === Valuation Details ===
"valuation_summary": {
"participants": number,
"final_estimates": number[],
"estimates": EstimateDetail[],
"convergence": ConvergencePoint[],
"value_min": number, "value_max": number,
"value_p25": number, "value_p75": number,
"convergence_percent"?: number
}
}
// Note: Fields marked with ? are optional and omitted when not setError Handling
The API returns standard HTTP status codes and error messages in a consistent format:
{
"detail": "Error message describing what went wrong"
}Notes
Caching
Valuation results are cached for identical descriptions (when using default parameters). Use skip_cache=true to force fresh valuations.
Response Time
Valuations typically take 5-15 seconds depending on market research complexity. Cached valuations return instantly.
Description Quality
More detailed descriptions yield more accurate valuations. Include condition, provenance, rarity, and any verifiable details.
Market Grounding
Responses include real-time market research with comparable sales, price ranges, and market trends in the grounding_context field.
Valuation IDs
Each response includes a unique valuation_id (UUID) for tracking and audit trails. Store these for reference.
Refresh Guidance
Check recommended_refresh_days and refresh_urgency for guidance on when to re-value volatile assets.