Skip to main content
CoverGuard

API Reference

Build on top of CoverGuard. Property risk, carrier availability, and quote workflows — REST + JSON over HTTPS, with a self-serve sandbox so you integrate without touching real money or real binds.

Fast

Sub-200ms p95 on read endpoints.

Secure

OAuth 2.0 bearer tokens, TLS 1.3.

Predictable

Resource-oriented URLs, stable JSON.

Quickstart

Self-serve sandbox

Create an account and generate a CG_TEST_* key from Settings → Developer. Test keys hit live data but never bind real policies or move money.

Your first request
curl https://api.coverguard.io/v1/searches \
  -H "Authorization: Bearer $CG_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "address": "1247 Ridgeline Dr, Boulder, CO 80302" }'
Response
{
  "id": "prop_8f2a...",
  "insurability": { "score": 4, "scale": 10, "level": "HIGH",
                    "confidence": "MEDIUM", "asOf": "2026-06-16" },
  "perils": { "flood": 8, "fire": 3, "wind": 6, "earthquake": 7, "crime": 6 },
  "sources": ["FEMA NFHL", "USFS WUI", "USGS", "..."]
}

Endpoints

POST/v1/searches

Submit a property by address or coordinates and receive a risk + insurability report.

GET/v1/properties/:id/risk

Composite risk profile: flood, fire, wind, earthquake, and crime sub-scores with provenance.

GET/v1/properties/:id/carriers

Carriers currently writing coverage for this property, with appetite indicators and as-of timestamp.

GET/v1/quotes/:id

Status of a quote request and the carrier responses received so far.

Webhooks

Subscribe to events so your UI stays consistent with ours. Every delivery is signed, retried with exponential backoff for 24h, and carries an Idempotency-Key so you can safely de-duplicate.

EventFires when
score.updatedA property re-scores on new source data.
quote.readyA carrier returns a quote for a request.
quote.expiringA bindable quote is within 48h of expiry.
policy.boundA quote is bound into a policy.
Example payload — quote.ready
{
  "id": "evt_3b1c...",
  "type": "quote.ready",
  "created": "2026-06-16T18:04:22Z",
  "data": { "quoteId": "qt_77a...", "propertyId": "prop_8f2a...",
            "carrier": "Example Mutual", "premium": { "amount": 5200,
            "currency": "USD", "period": "year", "status": "estimate" } }
}

Errors

Errors are designed copy you can surface to your own users. Each response includes a stable error.code, a human message, and where relevant an error.param.

Status / codeMeaningRemediation
400 invalid_requestMalformed body or missing field.Check the field named in `error.param`.
401 unauthorizedMissing or invalid bearer token.Send a valid key in the Authorization header.
402 free_limit_reachedFree-tier capability cap hit.Upgrade the account or use a paid key.
404 not_foundNo such property or quote.Verify the resource id.
429 rate_limitedToo many requests.Back off; honor the `Retry-After` header.
503 source_unavailableAn upstream data source is degraded.Retry with backoff; partial data may be flagged low-confidence.

Versioning & deprecation

Ready to integrate?

Generate sandbox keys in-app, or talk to us about production access and partner embeds.

Now AI-native

From hazard report to real carrier quotes & pricing

The CoverGuard Advisor reads the risk, finds the carriers writing it, and pulls back live quotes — with every number sourced and auditable.