Investorlift DS
  • Getting started
  • The contract
  • Errors
  • API reference
QuickstartAuthenticationConnecting an AI agent (MCP)
Getting started

Quickstart

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. One request is enough to see it work.

Before you start

  • The API is prepaid. Your Account holds a Balance of Credits, and one Credit is spent per Scored Call at every Tier — a Balance of N means N calls. There is nothing recurring: you buy Credits, you spend Credits.
  • You need an API Key. Issue one from the Portal. It is shown to you in full at creation, and it stays viewable: the Portal's API Keys page shows the masked prefix at rest, and Reveal key shows the full value again at any time.

Score a property

Replace YOUR_API_KEY with your own API Key. Everything else runs as written.

Trying it in the API playground? This API accepts JSON bodies only. Keep the playground's body in its plain-text mode with valid JSON in it, and make sure a Content-Type: application/json header is active before you send — any other body mode, or a missing content type, is answered with a 400. Picking the request example from the playground's Examples menu sets the body and the header in one step.

TerminalCode
curl https://api.investorliftdata.com/v1/predict \ -X POST \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: 8b2f6c1a-4d0e-4f7a-9c3b-2e5d8a1f0b64" \ -d '{"address": "1026 N Beckley Ave, Dallas, TX 75203"}'

The Idempotency-Key header is there so a retry can never charge you twice: send the same request with the same key and you get the stored result back instead of a second Spend. Any value unique to the request works — a UUID is the usual choice. The header is optional, and a request without one is never an error; it is simply charged per call. The full contract is on the Idempotency page.

A success is an HTTP 200 whose body carries the valuation members — comp_band, max_allowable_offer, cost_stack and the rest. What each member means, and what this valuation is and is not, is on Reading a score. The complete request and response schema is in the API reference.

Already integrated? POST /v1/predict is the one and only scoring path — there is no second path to move to and no sunset date on this one. How this API versions, and what happens when a breaking change does arrive, is on the Versioning page.

Check a key or an address shape for free

POST /v1/validate is free: it consumes no Credits and keeps working at a zero Balance. It requires only a valid API Key. It also ignores any Idempotency-Key header — there is no Spend to protect, so there is nothing for the key to do.

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 a key — makes one Ledger read here to confirm the connection is still approved, so while that read is failing it answers 503 call-not-started. Nothing is charged either way.

TerminalCode
curl https://api.investorliftdata.com/v1/validate \ -X POST \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"address": "1026 N Beckley Ave, Dallas, TX 75203"}'

When something fails

Every error this API returns is an RFC 9457 Problem Detail with a stable type URI that resolves to its own page in the error reference — the link inside the error body you are holding is the documentation for it. Each page states what the error costs and whether it is worth retrying. No automatic retry happens on our side, ever: 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.

Last modified on September 1, 2026
Authentication
On this page
  • Before you start
  • Score a property
  • Check a key or an address shape for free
  • When something fails