Developers
A place. The facts behind it.
Look up a location once to get parcel boundaries, flood zones, zoning, utilities, records, and weather—with the source and coverage of every answer.
Make your first request
- Sign in with Google or a one-time email code.
- Open your account, choose API keys, and create a named key.
- Copy the key into your server environment. It is shown only once.
export MAP_API_KEY='sk_map_your_key'
curl --fail-with-body --get \
'https://map.pascal.app/api/v1/location' \
--header "Authorization: Bearer $MAP_API_KEY" \
--data-urlencode 'address=200 Central Ave, St Petersburg, FL' \
--data-urlencode 'layers=parcel,flood,zoning'Send Authorization: Bearer <key> on every data request. Keep keys in a secret manager. Revoke or replace them from your account.
Ask for the facts you need
Use /api/v1/location?ll=27.77,-82.64 for coordinates, or address= for a full mailing address. Coordinates in ll are latitude first. Choose sections using layers=parcel,flood,zoning.
Available sections: parcel, flood, wetlands, structures, soils, code_basis, weather, elevation, boundaries, market, tax, zoning, permits, utilities. Omit the filter for all 14. Geometry and neighboring parcels are opt-in with include_geometry=true and include_adjacent=true.
Use /api/v1/search?q=... to find a location and /api/v1/coverage to check coverage in Florida and California. Parcel-key lookups require an ingested database record; coordinate and address lookups have broader coverage.
Know what an answer means
A successful response may have gaps. Every section includes a status, a plain-language summary, and source provenance.
| Status | Meaning |
|---|---|
| available | Checked, with an answer—including a negative finding. |
| empty | Checked, with nothing found. |
| not_covered | The source cannot answer here. |
| not_available | The source could not answer now. |
Missing data never means no risk. Keep source links, caveats, vintage, and units when presenting results.
Errors you can act on
Errors return error.code, message, an optional param and hint, and a request_id. The same identifier is in X-Request-Id.
Each key allows 300 requests per 60 seconds. On 429, wait for Retry-After. Fix 400 inputs; replace invalid credentials on 401; retry 502/503 with bounded backoff. Allow up to 90 seconds for a full dossier and request fewer layers for speed.
Give your agent a starting point
Provide llms.txt and the OpenAPI 3.1 document. For OpenAI Responses, use the strict tool definitions and runnable Python example. Your application runs the HTTP calls; the model never needs your API key.
ChatGPT Actions can import the OpenAPI document with Bearer API-key authentication. The full guide covers parameters, retries, response semantics, and integration details.