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:
| Header | Description |
|---|---|
X-RateLimit-Limit | Maximum requests per minute |
X-RateLimit-Remaining | Remaining requests in current window |
X-RateLimit-Reset | Unix timestamp when the window resets |
Error Codes
The API uses standard HTTP status codes to indicate success or failure:
| Code | Meaning |
|---|---|
| 200 | Success |
| 201 | Created |
| 400 | Bad Request — invalid parameters |
| 401 | Unauthorized — invalid or missing API key |
| 403 | Forbidden — insufficient scopes |
| 404 | Not Found |
| 429 | Rate limit exceeded |
| 500 | Internal 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
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | No | Max results (default 50, max 200) |
offset | integer | No | Pagination offset |
status | string | No | Filter by status: active, expired, cancelled |
carrier | string | No | Filter 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
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | No | Max results (default 50) |
offset | integer | No | Pagination offset |
status | string | No | Filter: 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
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | No | Max results (default 50) |
status | string | No | Filter: open, closed, investigating |
policyId | string | No | Filter 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
| Parameter | Type | Required | Description |
|---|---|---|---|
policyId | string | No | Filter by policy |
type | string | No | Filter: certificate, endorsement, declaration |
limit | integer | No | Max 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
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | No | Max results (default 50, max 200) |
offset | integer | No | Pagination offset |
search | string | No | Full-text search across name, email, company |
tag | string | No | Filter by tag |
funnelStage | string | No | Filter 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
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | No | Max results (default 50) |
stage | string | No | Filter by pipeline stage |
source | string | No | Filter 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
Search
GET /api/v1/search
Global search across all entities. search:read
| Parameter | Type | Required | Description |
|---|---|---|---|
q | string | Yes | Search query |
type | string | No | Filter: contacts, policies, quotes, agencies |
limit | integer | No | Max 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
| Parameter | Type | Required | Description |
|---|---|---|---|
metric | string | No | Specific metric: revenue, policies, claims, leads |
startDate | string | No | ISO date for period start |
endDate | string | No | ISO date for period end |
groupBy | string | No | Group: 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
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | No | Max results (default 50) |
contactId | string | No | Filter by recipient contact |
status | string | No | Filter: 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
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | No | Max results (default 50) |
mailbox | string | No | Filter by mailbox (dwight@, service@, etc.) |
classification | string | No | Filter: new_business, renewal, service, spam |
search | string | No | Full-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
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | No | Max results (default 50) |
status | string | No | Filter: open, completed, overdue |
assignedTo | string | No | Filter 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
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | No | Max results (default 50) |
type | string | No | Filter: commission, fee, premium |
startDate | string | No | ISO 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
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | Webhook endpoint URL (HTTPS required) |
events | string[] | Yes | Events to subscribe to |
Available webhook events:
quote.created,quote.updated,quote.status_changedpolicy.issued,policy.renewed,policy.cancelledclaim.filed,claim.updated,claim.closedcontact.created,contact.updateddocument.uploaded,document.processedtask.created,task.completedpayment.received,payment.failed
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"
}
]
}