Run PropertyPredator's appraisal engines and Legal-Pack reader from your own server, with your own API keys, and see every request and credit it used.
Status: open. Every signed-in account gets the free Sandbox tier. The Developer and Developer Pro add-ons add volume and the metered Legal-Pack endpoint, on any plan. Predator Business includes a small allowance.
Version 1 covers the calculation engines and the Legal-Pack reader listed on this page. It does not include property data, comparables, ownership, maps, planning or other website tools; the website's own browser endpoints are not part of this API.
Checking your account…
The API is priced separately from the app plans. Prices below are loaded from the same configuration checkout charges, in GBP, VAT as applicable at checkout. Annual billing is twelve months for the price of nine.
Predator Business members have an included allowance without the add-on: 5,000 calculation requests a month, 30 a minute, 2 active keys, and Legal-Pack reviews charged to the plan's own lookup credits. Apex and other plans use the Sandbox tier unless they add Developer or Developer Pro.
Business includes up to 50 standard Legal-Pack AI review attempts and a £25 monthly supplier-cost budget, shared across the app and API. Whichever limit is reached first applies. Failed AI attempts and retries count; an idempotent API replay does not start a new review. Limits reset on the 1st of each month (UTC). Standard reviews must fit a conservative 50p supplier-cost reservation and complete-reading limits; larger packs need a separate quote before AI processing. Successful reviews still use 3 lookup credits; refunded lookup credits do not erase supplier costs.
curl https://propertypredator.com/api/v1/account \
-H "Authorization: Bearer $PP_API_KEY"
The response shows your plan, the key's scopes, your current lookup-credit allowance and the limits below.
Send the key in the Authorization header on every request: Authorization: Bearer ppk_…. API keys work only on /api/v1; browser sign-in tokens do not work there, and API keys do not work anywhere else.
| Scope | Allows |
|---|---|
appraisals | The appraisal, offer, scenario and international appraisal endpoints. |
legal_pack | Legal-Pack reviews, which use lookup credits. |
usage | Reading credit usage and the request log. |
Any valid key can call /account and /countries. Active keys per account: Sandbox 1, Business allowance 2, Developer 5, Developer Pro 15.
When a key stops working: when you revoke it, or when the account's sign-in security is reset (for example a password reset or account recovery) — create a new key afterwards. If the add-on lapses, keys keep working on the Sandbox tier and metered requests answer 403 addon_required.
Base URL https://propertypredator.com/api/v1. Requests and responses are JSON unless stated. Money is in the currency of the inputs you send; rates and percentages are decimals (0.25 means 25%). Responses may gain new fields, so ignore fields you do not use.
Plan, this key's id, prefix and scopes, your lookup-credit allowance, credit costs and rate limits.
The same appraisal engine and BUY / BUY-IF / PASS verdict as the app. Body: strategy, inputs and, for flips, finance_mode (cash or mortgaged).
| strategy | Required inputs | Common optional inputs (default) |
|---|---|---|
brr | purchase_price, value_after_refurb, expected_monthly_rent | construction_costs, legal_fees, stamp_duty, deposit_rate (0.25), btl_rate_pa (0.0525), refi_ltv (0.75), lettings_agent_pct (0.12) |
flip | purchase_price, sale_value | time_months (12), construction_costs, holding_monthly, conveyancing, agent_pct, stamp_duty |
hmo | purchase_price, gross_room_income_pcm | value_after_refurb, running_costs_pcm, management_pct (0.12), voids_pct (0.08) |
r2r | room_income_pcm, rent_to_landlord_pcm | running_costs_pcm, setup_costs, term_years (3) |
conversion | purchase_price and a GDV basis | gdv_method (comparable) with saleable_area and sale_per_sqft, or manual_gdv; construction_costs |
ground_up | land and a GDV basis | as conversion, plus target_margin (0.20) |
Stamp duty: send your own stamp_duty figure. If you leave it out, the app's existing estimate is applied from nation, additional_property and first_time_buyer; that estimate is not tax advice.
curl https://propertypredator.com/api/v1/appraisals \
-H "Authorization: Bearer $PP_API_KEY" \
-H "Content-Type: application/json" \
-d '{"strategy":"brr","inputs":{"purchase_price":150000,"value_after_refurb":210000,
"expected_monthly_rent":1200,"construction_costs":25000,"legal_fees":1500,"stamp_duty":4500}}'
{"strategy":"brr","result":{"stamp_duty":4500,"refinance_release":157500.0,
"after_refurb":{"money_left_in":23500.0,"net_monthly_return":366.9375,"ROCE":0.187…},
"verdict":{"stamp":"BUY","label":"Strong","score":4,"max":4,"checks":[…]}, …}}
Back-calculates the most you can pay for a flip and still meet the return thresholds. Body: inputs (needs sale_value), optional finance_mode, and optional thresholds min_return, min_profit_cash, min_profit, min_roci (the app's defaults apply if omitted).
curl https://propertypredator.com/api/v1/appraisals/offer \
-H "Authorization: Bearer $PP_API_KEY" -H "Content-Type: application/json" \
-d '{"inputs":{"sale_value":250000,"construction_costs":30000,"time_months":6,"legal_fees":1500,"stamp_duty":3000}}'
# {"result":{"max_offer":173833.33,"first_offer":156450.0,"second_offer":165141.67,"feasible":true}}
Base versus stressed results for brr or flip. inputs must include nation (england, wales, scotland or northern_ireland) and only fields used by that strategy. stress needs all four: exit_value_down_pct, rent_down_pct, works_up_pct, time_up_pct (percentages as whole numbers).
curl https://propertypredator.com/api/v1/appraisals/scenarios \
-H "Authorization: Bearer $PP_API_KEY" -H "Content-Type: application/json" \
-d '{"strategy":"flip","inputs":{"purchase_price":160000,"sale_value":250000,"construction_costs":30000,
"time_months":6,"stamp_duty":3000,"nation":"england"},
"stress":{"exit_value_down_pct":10,"rent_down_pct":0,"works_up_pct":15,"time_up_pct":25}}'
/countries lists the eight appraisal profiles with currency, area unit and strategies (hold, flip, brr). The appraisal uses only the figures you send: no automatic currency conversion, local tax calculation or market data. Missing targets are listed in missing_inputs and the verdict stays HOLD.
curl https://propertypredator.com/api/v1/international/appraisals \
-H "Authorization: Bearer $PP_API_KEY" -H "Content-Type: application/json" \
-d '{"country_code":"FR","strategy":"hold","inputs":{"purchase_price":200000,"acquisition_costs":15000,
"refurb_cost":10000,"loan_fees":1500,"finance_mode":"interest_only","loan_amount":140000,
"annual_rate":0.04,"rent_amount":1100,"rent_period":"monthly","vacancy_pct":0.05,
"management_pct":0.08,"maintenance_annual":900,"property_tax_annual":1200,"insurance_annual":400,
"hoa_annual":0,"other_costs_annual":0,"target_cashflow_monthly":250,"target_coc_pct":0.04}}'
# {"result":{"currency_code":"EUR","metrics":{"cashflow_monthly":286.4,"dscr":1.61,…},"verdict":{…},…}}
AI red-flag triage of a legal pack PDF you are entitled to share, using the same reader as the app. Needs the Developer or Developer Pro add-on, or a Predator Business plan; Sandbox keys answer 403 addon_required. Upload it as multipart form field file, up to 30 MB. An Idempotency-Key header is required. The response's review holds the summary, tenure, flags by severity, searches to order and a page-by-page reading-coverage note; charge shows the credits used.
curl https://propertypredator.com/api/v1/legal-pack/reviews \
-H "Authorization: Bearer $PP_API_KEY" \
-H "Idempotency-Key: pack-14-high-street-v1" \
-F "file=@legal-pack.pdf;type=application/pdf"
# {"review":{"verdict":"REVIEW NEEDED","summary":"…","flags":[…],"coverage":{…}},
# "charge":{"credits":3,"reservation_id":"…"}}
This is triage to direct your solicitor's attention, not legal advice, and pages it could not read are listed rather than ignored.
/usage lists lookup-credit charges on the account from the app and the API, with the tool, whether it was refunded, and for API charges the key prefix. /requests lists API requests made with any of the account's keys. Both page with limit (up to 100) and offset.
| Request | Cost |
|---|---|
| Account, countries, usage, requests | No credits |
| UK appraisal, offer, scenarios, international appraisal | No credits |
| Legal-Pack review | 3 lookup credits, the same as in the app |
Metered API requests draw on your account's monthly lookup allowance and banked top-ups, the same pot the app uses. Developer adds 60 and Developer Pro adds 300 lookup credits a month to that allowance for API requests only; the app does not see them. Credits are reserved before the AI read starts and returned automatically if the read fails, so a failed review costs nothing. See lookup-credit costs for the wider catalogue.
| Limit | Sandbox | Business allowance | Developer | Developer Pro |
|---|---|---|---|---|
Calculation requests a month (per account; every authenticated request counts; 429 monthly_limit_reached) | 1,000 | 5,000 | 25,000 | 150,000 |
Requests a minute per key (429 rate_limited with Retry-After) | 10 | 30 | 60 | 180 |
| Active keys | 1 | 2 | 5 | 15 |
| Shared Business Legal-Pack allowance (app + API) | — | 50 standard attempts and £25 supplier-cost budget/month, whichever first | Business accounts retain the shared limit with any add-on | |
| Metered endpoints | No | Yes, plan credits | Yes, +60 credits | Yes, +300 credits |
| Fixed limit | Value |
|---|---|
| Legal-Pack reviews per account | 30 a UTC day through the API; replays of a completed request do not count |
| JSON body | 32,000 bytes |
| Legal-Pack PDF | 30 MB |
Calculation endpoints have no side effects and charge nothing, so they are safe to retry.
Legal-Pack reviews charge credits, so each needs an Idempotency-Key header: 8–100 letters, numbers or - _ . :, unique per review. Keys are scoped to your account.
Idempotent-Replayed: true, and charges nothing more, for 24 hours.422 idempotency_key_reused.409 request_in_progress; wait and retry.Every v1 error has the same shape, and every response carries an X-Request-Id header.
{"error":{"code":"insufficient_scope","message":"This key does not have the 'appraisals' scope.",
"status":403,"request_id":"req_3f2a9c…"}}
| Status | code | Meaning |
|---|---|---|
| 400 | idempotency_key_required, invalid_idempotency_key | A credit-charging request needs a valid Idempotency-Key. |
| 401 | invalid_api_key | Missing, malformed, revoked or no-longer-valid key. |
| 403 | addon_required, insufficient_scope | A metered endpoint on the Sandbox tier, or the key lacks the scope. |
| 404 | not_found | No such v1 endpoint or method. |
| 409 | request_in_progress | The same Idempotency-Key is still being processed. |
| 413 / 415 | payload_too_large, unsupported_media_type | Body too large, not JSON, or not a PDF. |
| 422 | invalid_request, invalid_json, missing_input, invalid_input, idempotency_key_reused | Fix the request; details.fields lists field problems where known. Unreadable packs use the reader's code, such as scanned_or_empty or bad_pdf. |
| 429 | rate_limited, monthly_limit_reached, daily_limit_reached, insufficient_credits | Slow down, upgrade the tier or wait for the month, wait for the daily reset, or add credits; details shows the allowance. |
| 500 / 502 / 503 | internal_error, ai_failed, ai_off, unavailable | Our side or the AI reader failed; nothing is charged. Retry later and quote the request id if it persists. |
For each API request we record the key's prefix, the endpoint, method, status, error code, duration, credits and the credit reservation id, for 90 days. We do not record the key itself, request bodies, query strings, uploaded files or responses in that log. The response to a completed Legal-Pack review is kept for 24 hours only so a retry can be replayed, then deleted. Charges also appear in your account's credit history with the tool and key prefix.
Email support@propertypredator.com with the request_id from the error or the X-Request-Id header, the endpoint and the time. Never send your API key; we will never ask for it.