CoverCore API

The insurance operating system API. Build integrations, automate workflows, and access your insurance data programmatically.

Get API Access →

Overview

The CoverCore API provides programmatic access to the insurance operating system. All API endpoints are RESTful and return JSON responses. The base URL for all requests is:

https://pulse.stuckey.com/api/v1

All requests must include a valid API key in the Authorization header. Request and response bodies use JSON format.

Authentication

Authenticate API requests by including your API key as a Bearer token in the Authorization header:

Authorization: Bearer pk_live_your_key_here

API keys are scoped to specific permissions. Each key can only access endpoints matching its assigned scopes. Keys follow the format pk_live_[40 hex chars].

Example Request

curl -H "Authorization: Bearer pk_live_your_key_here" \
  -H "Content-Type: application/json" \
  "https://pulse.stuckey.com/api/v1/contacts?limit=10"

Rate Limits

API keys are subject to rate limits configured at key creation time. Default limits are 60 requests per minute and 10,000 requests per day. When you exceed a rate limit, the API returns a 429 Too Many Requests response.

Rate limit headers are included in every response:

HeaderDescription
X-RateLimit-LimitMaximum requests per minute
X-RateLimit-RemainingRemaining requests in current window
X-RateLimit-ResetUnix timestamp when the window resets

Error Codes

The API uses standard HTTP status codes to indicate success or failure:

CodeMeaning
200Success
201Created
400Bad Request — invalid parameters
401Unauthorized — invalid or missing API key
403Forbidden — insufficient scopes
404Not Found
429Rate limit exceeded
500Internal server error

Error responses include a JSON body with an error field:

{
  "error": "Insufficient scope. Required: policies:read"
}

Policies

GET /api/v1/policies

List all policies with optional filtering. policies:read

ParameterTypeRequiredDescription
limitintegerNoMax results (default 50, max 200)
offsetintegerNoPagination offset
statusstringNoFilter by status: active, expired, cancelled
carrierstringNoFilter by carrier name
curl -H "Authorization: Bearer pk_live_your_key_here" \
  "https://pulse.stuckey.com/api/v1/policies?status=active&limit=10"
// JavaScript
const res = await fetch("https://pulse.stuckey.com/api/v1/policies?limit=10", {
  headers: { "Authorization": "Bearer pk_live_your_key_here" }
});
const data = await res.json();
// Response
{
  "data": [
    {
      "id": "pol_12345",
      "policyNumber": "HIG-2026-001234",
      "carrier": "Hartford",
      "lineOfBusiness": "BOP",
      "status": "active",
      "effectiveDate": "2026-01-15",
      "expirationDate": "2027-01-15",
      "premium": 2450.00
    }
  ],
  "pagination": { "total": 142, "limit": 10, "offset": 0 }
}

POST /api/v1/policies

Create a new policy record. policies:write

Quotes

GET /api/v1/quotes

List quote requests with filtering. quotes:read

ParameterTypeRequiredDescription
limitintegerNoMax results (default 50)
offsetintegerNoPagination offset
statusstringNoFilter: pending, quoted, bound, declined
curl -H "Authorization: Bearer pk_live_your_key_here" \
  "https://pulse.stuckey.com/api/v1/quotes?status=pending"

POST /api/v1/quotes

Submit a new quote request. quotes:write

Claims

GET /api/v1/claims

List claims with filtering. claims:read

ParameterTypeRequiredDescription
limitintegerNoMax results (default 50)
statusstringNoFilter: open, closed, investigating
policyIdstringNoFilter by policy
curl -H "Authorization: Bearer pk_live_your_key_here" \
  "https://pulse.stuckey.com/api/v1/claims?status=open"

POST /api/v1/claims

File a new claim. claims:write

Carriers

GET /api/v1/carriers

List all carrier partners. carriers:read

curl -H "Authorization: Bearer pk_live_your_key_here" \
  "https://pulse.stuckey.com/api/v1/carriers"
// Response
{
  "data": [
    {
      "id": "carrier_001",
      "name": "Hartford",
      "linesOfBusiness": ["BOP", "WC", "Auto"],
      "status": "active",
      "appointmentStates": ["CT", "NY", "FL", "TX"]
    }
  ]
}

Agencies

GET /api/v1/agencies

List all agencies. agencies:read

curl -H "Authorization: Bearer pk_live_your_key_here" \
  "https://pulse.stuckey.com/api/v1/agencies"

Licenses

GET /api/v1/licenses

List agent licenses. licenses:read

curl -H "Authorization: Bearer pk_live_your_key_here" \
  "https://pulse.stuckey.com/api/v1/licenses"

Documents

GET /api/v1/documents

List documents with filtering. documents:read

ParameterTypeRequiredDescription
policyIdstringNoFilter by policy
typestringNoFilter: certificate, endorsement, declaration
limitintegerNoMax results (default 50)
curl -H "Authorization: Bearer pk_live_your_key_here" \
  "https://pulse.stuckey.com/api/v1/documents?policyId=pol_12345"

POST /api/v1/documents

Upload a new document. documents:write

Contacts

GET /api/v1/contacts

List contacts with search and filtering. contacts:read

ParameterTypeRequiredDescription
limitintegerNoMax results (default 50, max 200)
offsetintegerNoPagination offset
searchstringNoFull-text search across name, email, company
tagstringNoFilter by tag
funnelStagestringNoFilter by funnel stage
curl -H "Authorization: Bearer pk_live_your_key_here" \
  "https://pulse.stuckey.com/api/v1/contacts/262188"
// Response
{
  "data": {
    "id": "262188",
    "fullName": "Melissa Freeman",
    "email": "melissa.freeman@greatflorida.com",
    "state": "FL",
    "partnerName": "Great Florida Insurance",
    "tags": ["hartford_property_webinar_apr2026"],
    "funnelStage": "requested_access",
    "leadSource": "hartford_property_webinar_apr2026"
  }
}

GET /api/v1/contacts/:id

Get a single contact by ID (UUID, conId, or numeric). contacts:read

POST /api/v1/contacts

Create a new contact. contacts:write

PATCH /api/v1/contacts/:id

Update an existing contact. contacts:write

Opportunities

GET /api/v1/opportunities

List sales opportunities. opportunities:read

ParameterTypeRequiredDescription
limitintegerNoMax results (default 50)
stagestringNoFilter by pipeline stage
sourcestringNoFilter by lead source
curl -H "Authorization: Bearer pk_live_your_key_here" \
  "https://pulse.stuckey.com/api/v1/opportunities?stage=qualified"

POST /api/v1/opportunities

Create a new opportunity. opportunities:write

Campaigns

GET /api/v1/campaigns

List email campaigns. campaigns:read

curl -H "Authorization: Bearer pk_live_your_key_here" \
  "https://pulse.stuckey.com/api/v1/campaigns"

POST /api/v1/campaigns

Create a new campaign. campaigns:write

Thumbtack

GET /api/v1/thumbtack

List Thumbtack professional leads. thumbtack:read

curl -H "Authorization: Bearer pk_live_your_key_here" \
  "https://pulse.stuckey.com/api/v1/thumbtack?limit=20"

POST /api/v1/thumbtack

Create or import Thumbtack leads. thumbtack:write

GET /api/v1/search

Global search across all entities. search:read

ParameterTypeRequiredDescription
qstringYesSearch query
typestringNoFilter: contacts, policies, quotes, agencies
limitintegerNoMax results (default 20)
curl -H "Authorization: Bearer pk_live_your_key_here" \
  "https://pulse.stuckey.com/api/v1/search?q=hartford&type=contacts"

Analytics

GET /api/v1/analytics

Retrieve analytics data and dashboard metrics. analytics:read

ParameterTypeRequiredDescription
metricstringNoSpecific metric: revenue, policies, claims, leads
startDatestringNoISO date for period start
endDatestringNoISO date for period end
groupBystringNoGroup: day, week, month, quarter
curl -H "Authorization: Bearer pk_live_your_key_here" \
  "https://pulse.stuckey.com/api/v1/analytics?metric=policies&groupBy=month"

POST /api/v1/analytics

Submit custom analytics events. analytics:write

Social Intelligence

GET /api/v1/social-intel

Retrieve social media intelligence data. social_intel:read

curl -H "Authorization: Bearer pk_live_your_key_here" \
  "https://pulse.stuckey.com/api/v1/social-intel?platform=instagram"

POST /api/v1/social-intel

Submit social intelligence data. social_intel:write

Social Queue

GET /api/v1/social-queue

List queued social media posts. social_queue:read

curl -H "Authorization: Bearer pk_live_your_key_here" \
  "https://pulse.stuckey.com/api/v1/social-queue?status=pending"

POST /api/v1/social-queue

Add a post to the social queue. social_queue:write

Publisher

GET /api/v1/publisher

List content publisher entries. publisher:read

curl -H "Authorization: Bearer pk_live_your_key_here" \
  "https://pulse.stuckey.com/api/v1/publisher"

POST /api/v1/publisher

Create a publisher entry. publisher:write

Emails

GET /api/v1/emails

List sent emails with filtering. emails:read

ParameterTypeRequiredDescription
limitintegerNoMax results (default 50)
contactIdstringNoFilter by recipient contact
statusstringNoFilter: sent, delivered, bounced, opened
curl -H "Authorization: Bearer pk_live_your_key_here" \
  "https://pulse.stuckey.com/api/v1/emails?status=delivered&limit=25"

POST /api/v1/emails

Send an email. emails:write

Email Inbox

GET /api/v1/email-inbox

List inbound emails with filtering and search. email_inbox:read

ParameterTypeRequiredDescription
limitintegerNoMax results (default 50)
mailboxstringNoFilter by mailbox (dwight@, service@, etc.)
classificationstringNoFilter: new_business, renewal, service, spam
searchstringNoFull-text search
curl -H "Authorization: Bearer pk_live_your_key_here" \
  "https://pulse.stuckey.com/api/v1/email-inbox?classification=new_business"

GET /api/v1/email-inbox/summary

Get inbox summary (unread count, classification breakdown). email_inbox:read

GET /api/v1/email-inbox/brief

Get morning brief (urgent items, needs-reply, auto-handled). email_inbox:read

POST /api/v1/email-inbox/:id/mark-read

Mark an email as read. email_inbox:write

POST /api/v1/email-inbox/:id/draft-reply

Create an AI-generated draft reply. email_inbox:write

Interactions

GET /api/v1/interactions

List interaction logs (calls, emails, meetings). interactions:read

curl -H "Authorization: Bearer pk_live_your_key_here" \
  "https://pulse.stuckey.com/api/v1/interactions?contactId=262188"

POST /api/v1/interactions

Log a new interaction. interactions:write

UTM Tracking

GET /api/v1/utm

List UTM visit data. utm:read

curl -H "Authorization: Bearer pk_live_your_key_here" \
  "https://pulse.stuckey.com/api/v1/utm?source=google"

POST /api/v1/utm

Record a UTM visit. utm:write

Tasks

GET /api/v1/tasks

List tasks. tasks:read

ParameterTypeRequiredDescription
limitintegerNoMax results (default 50)
statusstringNoFilter: open, completed, overdue
assignedTostringNoFilter by assignee user ID
curl -H "Authorization: Bearer pk_live_your_key_here" \
  "https://pulse.stuckey.com/api/v1/tasks?status=open"

POST /api/v1/tasks

Create a new task. tasks:write

Agents

GET /api/v1/agents

List licensed agents. agents:read

curl -H "Authorization: Bearer pk_live_your_key_here" \
  "https://pulse.stuckey.com/api/v1/agents?state=FL"
// Response
{
  "data": [
    {
      "id": "agent_001",
      "name": "John Smith",
      "email": "john@agency.com",
      "state": "FL",
      "licenseNumber": "W123456",
      "linesOfAuthority": ["Property", "Casualty"],
      "status": "active"
    }
  ]
}

Filings

GET /api/v1/filings

List compliance filings. filings:read

curl -H "Authorization: Bearer pk_live_your_key_here" \
  "https://pulse.stuckey.com/api/v1/filings?state=FL"

POST /api/v1/filings

Create a new filing. filings:write

Billing

GET /api/v1/billing

List billing activities and commission records. billing:read

ParameterTypeRequiredDescription
limitintegerNoMax results (default 50)
typestringNoFilter: commission, fee, premium
startDatestringNoISO date for period start
curl -H "Authorization: Bearer pk_live_your_key_here" \
  "https://pulse.stuckey.com/api/v1/billing?type=commission"

POST /api/v1/billing

Create a billing entry. billing:write

Webhooks

POST /api/v1/webhooks

Register a webhook subscription. webhooks:manage

ParameterTypeRequiredDescription
urlstringYesWebhook endpoint URL (HTTPS required)
eventsstring[]YesEvents to subscribe to

Available webhook events:

curl -X POST \
  -H "Authorization: Bearer pk_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://your-app.com/webhooks/covercore",
    "events": ["policy.issued", "claim.filed"]
  }' \
  "https://pulse.stuckey.com/api/v1/webhooks"

Webhook payloads include an X-Webhook-Signature header for verification using HMAC-SHA256.

Zoe Intelligence

GET /api/v1/zoe

Access Zoe email intelligence data and classifications. zoe:read

curl -H "Authorization: Bearer pk_live_your_key_here" \
  "https://pulse.stuckey.com/api/v1/zoe?limit=20"
// Response
{
  "data": [
    {
      "id": "zoe_001",
      "subject": "New Business Submission - BOP - FL",
      "from": "agent@insurance.com",
      "classification": "new_business",
      "confidence": 0.95,
      "needleScore": 8.5,
      "sentiment": "positive",
      "suggestedAction": "Route to underwriting team",
      "classifiedAt": "2026-04-12T10:30:00Z"
    }
  ]
}