ProducerSync API Overview
AgentSync’s ProducerSync API provides access to insurance producer compliance data sourced from NIPR (National Insurance Producer Registry). It exposes endpoints for licenses, appointments, regulatory actions, addresses, contact information, biographical details, and alternative names.
ProducerSync vs. Producer Profile: ProducerSync surfaces compliance data sourced from NIPR — licenses, appointments, regulatory actions. It reflects what the state knows about a producer. The Producer Profile API holds the data your organization knows about a producer — name, contact info, bank accounts, E&O coverage — which comes from you or the producer directly.
Core Concepts
NPNs
Every insurance producer has a National Producer Number (NPN) — a unique identifier issued by NIPR. The NPN is the primary key across all ProducerSync API endpoints. You query data by NPN, subscribe NPNs for monitoring, and receive webhook events scoped to your NPN population.
Subscriptions and Your Monitored Population
To access data for a producer, you subscribe their NPN to your account. This adds them to your monitored population — the set of NPNs AgentSync actively tracks for your organization.
Subscriptions matter for two reasons:
- Performance: Subscribed NPNs respond at P90 < 1s. Unsubscribed NPNs can take 10s+ as data must be fetched on demand.
- Webhooks: The
producersync.updates_availableevent notifies you of changes across your monitored population only.
⚠️ Data for a newly subscribed NPN is not immediately available. AgentSync fetches it from NIPR on the next daily update cycle. If you subscribe an NPN and immediately query it, you may receive an empty response.
NIPR Daily Update Cycle
NIPR publishes updated producer data once per day. AgentSync processes this update and fires a producersync.updates_available webhook event containing a runDate. Use runDate as the value for the updatedSince query parameter to fetch only changed records — this is the recommended pattern for efficient daily sync.
NIPR data is not real-time. Newly issued licenses or appointments may not appear until the following day’s update cycle.
Entity Relationships
Entity (npn, type: INDIVIDUAL or FIRM)
|-- Individual: firstName, middleName, lastName, suffix, dateOfBirth
|-- Firm: companyName, feinId, stateCoId, stateDomicile
|-- noLicenses (boolean), niprDeleted (boolean), updatedAt
|
|-- License (licenseNum, forState, licenseClass, licenseClassCode, residencyStatus)
| |-- active (boolean), niprDeleted (boolean)
| |-- originalIssueDate, expirationDate
| |-- adhsHomeState (Adjuster Designated Home State)
| |-- agentTypes[] (calculated: adjuster, producer, travel, surplus)
| |-- renewalPeriods (calculated: renewal, lateRenewal, reinstatement, renewalType)
| |
| |-- LicenseLoa (loa, loaCode, status, statusReason)
| |-- issueDate, statusReasonDate
| |-- ceRenewalDate, ceCreditsNeeded, ceCompliance
| |-- loaMapping (calculated: categories[])
|
|-- Appointment (companyName, coCode, feinId, loa, loaCode)
| |-- forState
| |-- status, statusReasonDate, terminationReason
| |-- renewalDate
| |-- agencyName, agencyStateCoId
| |-- loaMapping (calculated: categories[])
|
|-- Address (line1, line2, line3, city, state, zip, country)
| |-- type (AddressType, e.g. MAILING)
| |-- forState
|
|-- ContactInfo (value)
| |-- type (ContactInfoType, e.g. EMAIL, PHONE)
|
|-- RegulatoryAction (actionId, forState)
| |-- actionDate, effectiveDate, enterDate
| |-- fileRef, penaltyFineForfeiture, lengthOfOrder
| |-- regulatoryActionValues[]
| |-- type (RegulatoryActionValueType), value
|
|-- OtherName (name)
|-- type (OtherNameType: ALIAS, FIRM_BRANCH, PREVIOUS)
Data Model
NPN (producer identifier)
├── Entity /v2/entities/{npn}
├── Licenses /v2/licenses?npn={npn}
│ └── License LOAs /v2/licenseLoas?npn={npn}
├── Appointments /v2/appointments?npn={npn}
├── Addresses /v2/addresses?npn={npn}
├── Contact Info /v2/contactInfos?npn={npn}
├── Regulatory Actions /v2/regulatoryActions?npn={npn}
└── Other Names /v2/otherNames?npn={npn}
All /v2/ collection endpoints support:
updatedSince— return only records changed on or after a given date (YYYY-MM-DD)size— records per page (default250, max1000)includeDeleted— include NIPR-deleted records (defaults totrue)
⚠️ v1 endpoints deprecated.
/v1/licenses,/v1/appointments, and all other v1 collection endpoints were deprecated in October 2025. Use/v2/equivalents for all new integrations.
Use Cases
Insurance Carriers
- Verify producer licensing status before appointment
- Monitor compliance across your distribution network
- Track regulatory actions automatically
Managing General Agents (MGAs)
- Validate producer credentials during onboarding
- Maintain a compliance database synced daily with NIPR
- Monitor ongoing compliance for your full producer population
Technology Partners
- Integrate compliance data into agency management systems or producer portals
- Build automated compliance checkpoints
- Develop regulatory reporting solutions
Getting Started
See the Quick Start Guide to authenticate, subscribe your first NPNs, and set up the daily sync workflow.
For all available endpoints, request/response schemas, and field details, see the interactive API Reference.
Customers with Manage
If you haven’t purchased ProducerSync API, you may be looking for Salesforce resources to interact with your Manage instance. Helpful references include:
Support
Need help? Contact us at support@agentsync.io