Investorlift Data Services API
Rehab-aware valuation, maximum allowable offer and recorded transaction history — for a single property address or a batch of them.
The Investorlift Data Services API scores a property address and returns a rehab-aware valuation and the maximum allowable offer — the most a flip buyer on standard financing can pay and still clear the target margin.
Authentication. Every request carries an API Key as Authorization: Bearer <API Key>. Issue and revoke API Keys from the Portal.
Metering. POST /v1/predict is a Metered Call: it consumes Credits from the Account's Balance. The Credit cost of a call is resolved by the Ledger at the moment of the Spend and is published in the Portal — it is never sent by the client and never appears in this document. POST /v1/validate is free: it consumes no Credits and keeps working at a zero Balance. With an API Key it makes no Ledger call at all, so it answers even while the Ledger is down. A connected app — one that signed you in instead of holding an API Key — makes one Ledger read there to confirm the connection is still approved, so while that read is failing it answers 503 call-not-started. Nothing is charged either way.
Idempotency. Send an Idempotency-Key header on POST /v1/predict to make a retry safe. The header is optional; a request without one is never an error and is charged per call. Keys are scoped to the Account that sent them — one Account can never replay another Account's result.
No automatic retry. This API never retries a request on your behalf. A Metered Call can consume a Credit before it fails, so retry is yours to control and your Idempotency-Key is what makes it safe.
Errors. Every error response is an RFC 9457 Problem Detail sent as application/problem+json. The type member is a stable URI you can branch on; it never changes without a documented deprecation. Every response, success or failure, carries a trace-id header, and every Problem Detail repeats it as trace_id. That Trace ID is the only handle support needs to find your call.
Reading a 503. The three 503 types mean different things and must not be treated alike. ledger-unreachable states that the call was never started and no Credits were consumed. spend-indeterminate makes no claim about what was consumed, because the outcome is not known; any Credit recorded for that call is returned to the Account as a Refund. call-not-started makes the same no-charge claim ledger-unreachable makes, and is sent when the failure happened before the Ledger was called at all, so no Spend was ever recorded.
Support. Questions about a call, an Account or a Refund go to [email protected]. Quote the Trace ID from the response.