The public API uses the same screens as the app. You mint a key after you have a paid (or complimentary) seat. Each call uses one score from that account’s monthly pool.
Screening estimates from public data — not a survey, perc test, title opinion, or investment advice.
Create a key in the app under Developer API keys. It is shown once.
Authorization: Bearer ts_live_…
Or header X-Api-Key: ts_live_…. Keys are stored as SHA-256 hashes.
curl -sS https://terrascore.diversifiedtechsolutions.com/api/v1/score \
-H "Authorization: Bearer ts_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"address":"600 Church St, Nashville, TN","persona":"off_grid"}'
Body: address (required), optional persona,
parcel_id, county_fips, force_refresh.
Response includes composite_score (0–100),
gate_flags, per-layer metrics, and research links.
GET /api/v1/personas — use-cases you can pass as personaGET /api/v1/layers — data-source catalogGET /api/health — version, no auth401 — missing or revoked key402 — seat not unlocked yet422 — address could not be geocoded429 — monthly score cap reached
In the app you can save an address and re-score it later. Each check uses
one score. The same routes are available as
GET/POST /api/watches and
POST /api/watches/{id}/check (session or API key).