x402

Quick turnover estimate (start here) (paid)

Paid lane (x402 v2, exact scheme, USDC on Base Sepolia testnet, $0.02 per call). Same body as POST /v1/property-turnover/quick_estimate, which stays free within its rate limits. Unpaid requests get HTTP 402 with PAYMENT-REQUIRED; only successful results are charged. Not available over MCP. The response adds payment (network, transaction, payer).

post/v1/x402/property-turnover/quick_estimate

Request

  • Base URL: https://tektolo.com (the document declares no server; this is the origin it was published from)
  • URL: https://tektolo.com/v1/x402/property-turnover/quick_estimate
  • Auth: none declared

Request body

client_refsobject nullable

Your own reference ids (e.g. unit_id, job_id). Echoed back, never used.

zipstring required

The user's 5-digit US ZIP code. If it is missing or not exactly 5 digits, ask the user; never guess, pad or correct it.

bedroomsinteger required

0 for a studio.

issuesstring[]

What was found in plain English, e.g. ['stained carpet in both bedrooms', 'nail holes everywhere', 'oven is filthy']. Read like pasted notes: an entry may hold several conditions ('carpet stained, nail holes'; one finding each); a room before or after the condition sets the location ('Bedroom 2 carpet torn', 'mold in bathroom'); a written count sets the quantity ('3 blinds broken'); an entry saying there is no work ('no mold', 'leak fixed by tenant') is reported as not billed.

unit_type'apartment' | 'single_family' | 'townhome' | 'condo' | 'duplex' | 'manufactured'
sq_ftinteger nullable

Interior sq ft.

year_builtinteger nullable

Drives lead-paint (pre-1978) handling.

carpetboolean nullable

Is there wall-to-wall carpet?

profile'minimum' | 'standard' | 'premium'
price_tier'bulk_contract' | 'pm_vendor' | 'retail_one_off'

Purchasing channel. Library prices are pm_vendor (a PM buying turns from a local vendor).

detail'summary' | 'full'

summary (default, small) or full (every line).

retainboolean

Optional (contract 0.5.1). false: keep none of this request's text, so the AI reader's answer for the issues is not stored either. By default the text is kept with contact details and access codes removed, to improve matching; the estimate is the same either way.

Response

Successful Response

client_refsobject
input_hashstring required

Hash of the question the rules answered: the request, or when free text was read by AI, the request with the read findings (reading.findings) in its place.

request_hashstring nullable

Hash of the request as sent; equal to input_hash when nothing was read by AI.

result_hashstring required

Changes

No recorded changes to this operation across all 1 revision of this API.