Skip to main content
CoverGuard

Partner API

CoverGuard API Reference

Build on top of CoverGuard. Property insurability, carrier availability signals, and team provisioning — REST + JSON over HTTPS, authenticated with a partner API key. Available to companies on a Team or Enterprise plan.

Predictable

Resource-oriented URLs, a stable { success, data } envelope.

Secure

Hashed API keys over TLS, per-key scopes, rate limits & quota.

Documented

A live OpenAPI 3.1 contract you can generate clients from.

Who can integrate

Access is gated on three independent axes — a call succeeds only when all three pass.

Quickstart

Get a key

On a Team or Enterprise plan, open Developer settings in-app and create an API key. The raw key (cg_live_…) is shown once — store it in your secrets manager. Send it as X-API-Key or Authorization: Bearer.

Your first request

curl https://api.coverguard.io/api/v1/me \
  -H "X-API-Key: $CG_KEY"

Response

{
  "success": true,
  "data": { "keyId": "…", "userId": "…", "scopes": ["insurability:read"] }
}

Endpoints

Base URL https://api.coverguard.io. Full schemas in the OpenAPI document.

GET/api/v1/mescope: —

Introspect the calling API key (id, owner, scopes). A credential health check.

GET/api/v1/properties/:id/insurabilityscope: insurability:read

Insurability assessment derived from the property risk profile. Its score is a 0–100 difficulty: higher means harder to insure.

GET/api/v1/scorescope: insurability:read + properties:read

An insurability score by address, without looking up a property id first: a small, stable set of scoring fields plus a per-peril summary. The score is a 0–100 difficulty (higher means harder to insure), not the CoverGuard Score.

POST/api/v1/property-checksscope: properties:read

Send an address, get back its risk and insurability. A new address is assessed in the background: subscribe to property.check_completed, or set wait: true in the request body.

GET/api/v1/propertiesscope: properties:read

Find a property CoverGuard already knows, by ?address=.

POST/api/v1/clientsscope: clients:write

Add a client to the key owner’s book.

GET/api/v1/clientsscope: clients:read

Find a client by ?email= (case-insensitive), scoped to the key owner.

POST/api/v1/dealsscope: deals:write

Open a pipeline deal.

PATCH/api/v1/deals/:idscope: deals:write

Update a deal’s stage, value or fallout.

POST/api/v1/quote-requestsscope: quotes:write

Send a quote request to CoverGuard’s brokerage team, which works with licensed insurance partners — never a promise of bindability, premium or coverage before a carrier confirms. The same request sent again within 2 minutes returns the original, with duplicate: true.

POST/api/v1/quote-requests/:id/statusscope: quotes:write

A carrier or broker integration reports a status update on a quote request your account owns. A status that cannot follow the current one is refused with 409 ILLEGAL_TRANSITION.

POST/api/v1/property-notesscope: clients:write

Attach a private note to a property.

GET/api/v1/team/membersscope: team:read

Pull the company’s members + seat usage (HRIS / CRM / IdP sync).

POST/api/v1/team/membersscope: team:write

Provision a seat — invite a user by email with a role.

PATCH/api/v1/team/members/:idscope: team:write

Change a member’s role.

DELETE/api/v1/team/members/:idscope: team:write

Deprovision a seat.

POST/api/v1/webhooksscope: webhooks:write

Subscribe an https URL to one or more events. Returns the subscription id and its signing secret, once.

GET/api/v1/webhooksscope: webhooks:write

List your subscriptions.

DELETE/api/v1/webhooks/:idscope: webhooks:write

Unsubscribe. Idempotent: 204 whether or not it existed.

GET/api/v1/webhooks/samplesscope: webhooks:write

Recent real payloads of one ?eventType= from your own account, for field mapping.

Webhooks

Register an HTTPS endpoint in Developer settings, or with POST /api/v1/webhooks, to receive signed events. Every delivery carries an X-CoverGuard-Signature: t=…,v1=… header — verify HMAC-SHA256(secret, "{t}.{body}") against the raw body and reject timestamps older than 5 minutes.

EventFires when
quote_request.createdA quote request was created.
quote_request.updatedA quote request changed status.
deal.updatedA pipeline deal changed.
property.savedA property was saved.
carrier.exitA carrier’s status for a saved property dropped from actively writing.
client.renewal_dueA client’s policy is coming up for renewal (60, 30 and 7 days out).
lead.capturedA shared snapshot turned a viewer into a prospect for the agent who shared it.
subscription.payment_failedA renewal payment failed (dunning started).
subscription.payment_recoveredA previously-failed payment recovered.
team.member.invitedA user was provisioned under the company.
team.member.updatedA member’s role changed.
team.member.removedA user was deprovisioned.
property.risk_changedA watched property’s risk, carrier depth or modeled premium changed since the last check.
property.check_completedA property check you requested finished.
client.createdA client was added to the book.
book.renewal_dueA policy in an insurance book of business is approaching expiry.
listing.status_changedA watched property’s listing status changed (for sale, recently sold, off market, for rent).
policy.boundReserved. CoverGuard does not bind coverage.

Delivery payload

{
  "id": "…",                 // delivery id
  "type": "carrier.exit",
  "created": 1751430000,      // unix seconds
  "data": { /* event-specific */ }
}

Errors

Errors use the same envelope with a stable error.code and a human message. Rate-limit responses set RateLimit-* and Retry-After headers.

Status / codeMeaningRemediation
401 MISSING_API_KEYNo key on the request.Send X-API-Key or Authorization: Bearer cg_live_…
401 INVALID_API_KEYUnknown or revoked key.Check the value; rotate if compromised.
403 KEY_NOT_APPROVEDKey is pending approval or suspended.Contact CoverGuard to enable the key.
403 SUBSCRIPTION_INACTIVEAccount has no active plan with API access.Renew, or move to a Team or Enterprise plan.
403 FORBIDDEN_SCOPEKey lacks the required scope.Re-issue the key with the scope it needs.
429 RATE_LIMITEDPer-minute limit exceeded.Back off; honor the Retry-After header.
429 QUOTA_EXCEEDEDMonthly quota used up.Wait for the reset or raise the quota.

Versioning

Ready to integrate?

Create keys in-app on a Team or Enterprise plan, or talk to us about production partner access.

From the CoverGuard Record to a quote request — without the surprises

With carriers exiting major markets, insurance is killing deals at closing. CoverGuard reads the CoverGuard Record, models which carriers are likely to write the risk and what cover should cost, and sends your quote request to CoverGuard’s brokerage team — before anyone signs on the dotted line.

CoverGuard is in Private Preview. Ask for an invitation and a member of our team will review it — usually within one business day. Available in all 50 states.

Now AI-native

Ask the CoverGuard Advisor what the risk means

The CoverGuard Advisor reads the risk, models which carriers are likely to write it, and estimates what cover should cost — with every number sourced and auditable.