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.
- • Paying. Keys can only be created on the Team plan, and every call re-checks that the account still has API access — a lapsed account is cut off automatically (
SUBSCRIPTION_INACTIVE). - • Approved. A key must be approved to integrate; a pending or suspended key is refused (
KEY_NOT_APPROVED). - • Scoped. Each endpoint requires a scope the key carries (
FORBIDDEN_SCOPEotherwise).
Quickstart
Get a key
On a Team 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.
/api/v1/mescope: —Introspect the calling API key (id, owner, scopes). A credential health check.
/api/v1/properties/:id/insurabilityscope: insurability:readInsurability assessment derived from the property risk profile.
/api/v1/team/membersscope: team:readPull the company’s members + seat usage (HRIS / CRM / IdP sync).
/api/v1/team/membersscope: team:writeProvision a seat — invite a user by email with a role. PATCH/DELETE the same path to re-role or deprovision.
Webhooks
Register an HTTPS endpoint (Developer settings) 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.
| Event | Fires when |
|---|---|
quote_request.created | A quote request was created. |
quote_request.updated | A quote request changed status. |
deal.updated | A pipeline deal changed. |
property.saved | A property was saved. |
carrier.exit | A carrier stopped writing in a market. |
subscription.payment_failed | A renewal payment failed (dunning started). |
subscription.payment_recovered | A previously-failed payment recovered. |
team.member.invited | A user was provisioned under the company. |
team.member.updated | A member’s role changed. |
team.member.removed | A user was deprovisioned. |
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 / code | Meaning | Remediation |
|---|---|---|
401 MISSING_API_KEY | No key on the request. | Send X-API-Key or Authorization: Bearer cg_live_… |
401 INVALID_API_KEY | Unknown or revoked key. | Check the value; rotate if compromised. |
403 KEY_NOT_APPROVED | Key is pending approval or suspended. | Contact CoverGuard to enable the key. |
403 SUBSCRIPTION_INACTIVE | Account has no active plan with API access. | Renew or upgrade to the Team plan. |
403 FORBIDDEN_SCOPE | Key lacks the required scope. | Re-issue the key with the scope it needs. |
429 RATE_LIMITED | Per-minute limit exceeded. | Back off; honor the Retry-After header. |
429 QUOTA_EXCEEDED | Monthly quota used up. | Wait for the reset or raise the quota. |
Versioning
- • The API is versioned in the path (
/api/v1). Pin a version and upgrade deliberately. - • Additive changes (new fields, new endpoints) can ship within a version — ignore unknown fields.
- • Breaking changes get a new version path and a migration window.
Ready to integrate?
Create keys in-app on the Team plan, or talk to us about production partner access.
From the CoverGuard Record to bound coverage — without the surprises
With carriers exiting major markets, insurance is killing deals at closing. CoverGuard's AI reads the CoverGuard Record, models which carriers will write the risk, and pulls back indicative pricing with a quote request — before anyone signs on the dotted line.
Free to start — no credit card required. Available in all 50 states.