# Investorlift Data Services API > Real estate underwriting and property data for investors, one API. Underwrite a deal, pull a property's record and history, and find the buyers, sellers and lenders around any ZIP code. These are the developer docs for the Investorlift Data Services API. Start with /quickstart. The API reference is generated from the OpenAPI description at https://docs.investorliftdata.com/openapi.json. Error types are stable URLs under /errors/. Each call is charged its listed price from your balance (see /pricing/per-call-prices); /v1/validate is free. ## Documentation - [Quickstart](/quickstart.md): Create a key, check your setup for free and underwrite one property in five steps. - [Error catalogue](/errors.md): Find each error type, what it charges and the next action. - [Definitions](/definitions.md): Read the ten defined terms used by the API and Terms of Service. - [Changelog](/changelog.md): Read changes to the API and developer docs. - [Your balance](/balance.md): How your balance works: dollars, packs, bonuses, refunds and free calls. - [API keys](/api-keys.md): Create, reveal and rotate a key, and understand when revocation takes effect. - [Use your own repair budget and margin](/scoring/your-own-numbers.md): Set repair costs, profit margin and supported facts without changing the property being underwritten. - [Valuation and comparable sales](/scoring/valuation-and-comps.md): Separate the model estimate from recorded sales and check the property facts behind both. - [Underwrite a property](/scoring/score-a-property.md): Send one address and read the valuation, repair budget and maximum allowable offer. - [Underwrite a list of properties](/scoring/score-a-list.md): Underwrite several addresses and handle each result, refund and whole-batch refusal. - [The maximum allowable offer](/scoring/maximum-allowable-offer.md): Read the investor ceiling, the clamped flag and the costs behind the price. - [Accuracy and limits](/scoring/accuracy-and-limits.md): Separate verified arithmetic from unverified market accuracy and recognize thin evidence. - [Test without spending](/production/test-without-spending.md): Check the request shape for free before sending an underwriting call. - [Retry safely](/production/retry-safely.md): Reuse a request key to replay a stored success without another charge. - [Handle errors](/production/handle-errors.md): Choose the right fix from the error type, charge outcome and retry guidance. - [Go-live checklist](/production/go-live-checklist.md): Check timeouts, retries, error handling and your available balance before launch. - [Attribute calls to your customers](/production/customer-reference.md): Tag charged calls with your own customer identifier. - [Per-call prices](/pricing/per-call-prices.md): Every published call's price in dollars, its unit and who may buy it. - [Upstream service unavailable](/errors/upstream-unavailable.md): A data service we rely on could not complete this call, so no result was produced. Returned to your balance. - [Upstream service timed out](/errors/upstream-timeout.md): A data service we rely on did not answer in time, so no result was produced. Returned to your balance. - [Request rejected by an upstream data service](/errors/upstream-rejected-request.md): A data service we use did not accept part of this request, such as an identifier, place or option. Returned to your balance. - [Address cannot be scored](/errors/unscorable-address.md): We could not underwrite this address. Returned to your balance. - [No such endpoint](/errors/unknown-endpoint.md): No endpoint exists at this path. Nothing charged. - [Terms of Service not accepted](/errors/terms-not-accepted.md): The Account's owner has not accepted the current Terms of Service, so the call did not start. Nothing charged. - [Spend outcome indeterminate](/errors/spend-indeterminate.md): The call did not finish and we cannot yet tell whether it was charged. Any charge recorded for it will be returned to your balance. - [Daily spending cap reached](/errors/spend-cap-exceeded.md): This Account reached its daily spending cap, so the call did not start. Nothing charged. - [Endpoint temporarily switched off](/errors/route-unavailable.md): This endpoint is switched off for now. Other endpoints still work, and nothing was charged. - [Rate limit exceeded](/errors/rate-limited.md): Too many calls arrived in a short time. Nothing charged. - [Property not found](/errors/property-not-found.md): No property record matches this identifier. Returned to your balance. - [Batch too large](/errors/payload-too-large.md): This request carried more properties than this endpoint accepts. Nothing charged. - [Ledger unreachable](/errors/ledger-unreachable.md): Our balance records could not be reached, so the call never started. Nothing charged. - [Malformed request](/errors/invalid-request.md): The request does not match the documented form for this endpoint. Nothing charged. - [Invalid API Key](/errors/invalid-key.md): This API key is not valid or has been revoked. Nothing charged. - [Not enough balance](/errors/insufficient-credits.md): Your balance is not enough for this call. Nothing charged. - [Idempotency-Key conflict](/errors/idempotency-key-conflict.md): This Idempotency-Key was already used for a different request. Nothing charged. - [Save a card to unlock free calls](/errors/free-calls-locked.md): Free calls on this account need a saved card. We check the card and don't charge it. Nothing charged. - [Today's free calls are used up](/errors/free-call-limit.md): Your account has made 500 free calls today, across the app, the API and assistants. Nothing charged. - [Duplicate request in flight](/errors/duplicate-request-in-flight.md): The same request with this Idempotency-Key is still running. Nothing charged for this copy. - [This call needs a Desk](/errors/desk-only.md): Buyer and lender data is sold only with a Desk. Your account buys with packs, which cover underwrites, property files, listings and summaries. Nothing charged. - [Call never started](/errors/call-not-started.md): This call never started. Nothing charged. - [Address is ambiguous](/errors/ambiguous-address.md): This address matches several properties. Returned to your balance. - [Address outside current data coverage](/errors/address-out-of-coverage.md): This address is in a state we do not cover yet. Returned to your balance. - [Use these docs with an AI tool](/agents/docs-for-ai.md): Give your AI tool plain-text guides and the API description. - [Connect an AI assistant](/agents/connect.md): Connect Claude, Cursor, VS Code or another MCP client with a key or account sign-in. - [Check a property's history](/data/property-history.md): Read recorded sales, short holds, ownership, permits and listing changes for one property. - [Look up property and market data](/data/property-and-market-data.md): Find published property and market data calls by the information you hold.