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_available event 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 (default 250, max 1000)
  • includeDeleted — include NIPR-deleted records (defaults to true)

⚠️ 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