> ## Documentation Index
> Fetch the complete documentation index at: https://docs.turrisfi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Producer Licensing Summary

> One row per producer and entity: counts and sync state

Returns licence counts and sync state for your producers.

<Warning>
  **One row per producer AND entity, not per producer.** Each of your entities holds its own compliance data subscription for a producer it is associated with, so a producer working for two branches has two sync states and appears twice, once per entity. Merging them would mean publishing whichever sync happened to finish first as if it covered both.

  Group by `producerId` in your client if you want one row per person.
</Warning>


## OpenAPI

````yaml openapi/v2.json GET /v2/downstream/producer-license-summary
openapi: 3.0.0
info:
  title: Turris Public API
  description: API for managing insurance compliance data
  version: 2.0.0
  contact: {}
servers:
  - url: https://public.api.live.turrisfi.com
    description: Production
  - url: https://public.api.sandbox.turrisfi.com
    description: Sandbox
security: []
tags: []
paths:
  /v2/downstream/producer-license-summary:
    get:
      tags:
        - downstream/license-overview
      summary: Producer licensing summary
      description: >-
        Returns one row per producer AND agency entity, with the same fields as
        the entity summary. The split is deliberate: each agency entity holds
        its own NIPR subscription for a producer it is associated with, so a
        producer working for two of your branches has two sync statuses rather
        than one. Producers we hold no NIPR subscription for are absent; List
        Producers returns them. Narrow with producerId or downstreamEntityId.
      operationId: LicenseOverviewController_getProducerLicenseSummary_v2
      parameters:
        - name: page
          required: false
          in: query
          description: 1-based page number
          schema:
            minimum: 1
            default: 1
            example: 1
            type: number
        - name: limit
          required: false
          in: query
          description: Page size (max 100)
          schema:
            minimum: 1
            maximum: 100
            default: 50
            example: 50
            type: number
        - name: downstreamEntityId
          required: false
          in: query
          description: >-
            Narrow the results to a single entity in your organization. Defaults
            to your whole subtree (your entity plus every branch beneath it).
            Returns 404 if the id is not in your subtree.
          schema:
            example: 6610b3d2c2e0a51b8c0d1f02
            type: string
        - name: producerId
          required: false
          in: query
          description: >-
            Narrow to a single producer. Returns an empty page if the producer
            is not one of yours.
          schema:
            example: 6627f2b5c2e0a51b8c0d4e7c
            type: string
      responses:
        '200':
          description: A page of producer summaries
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      items:
                        type: array
                        items:
                          $ref: >-
                            #/components/schemas/DownstreamLicenseSummaryResponse
                      total:
                        type: integer
                        description: Total rows matching the query across all pages
                        example: 137
                      page:
                        type: integer
                        description: 1-based page number
                        example: 1
                      limit:
                        type: integer
                        description: Page size
                        example: 50
                      totalPages:
                        type: integer
                        description: Number of pages, or 0 when there are no rows
                        example: 3
                    required:
                      - items
                      - total
                      - page
                      - limit
                      - totalPages
                  requestId:
                    type: string
                    description: Unique request identifier
                    example: dev-2c5e7cf2-9acf-4c8c-ab2f-b81f39d775a8
                  timestamp:
                    type: string
                    description: Response timestamp
                    example: '2025-11-12T20:49:03.293Z'
                required:
                  - data
                  - requestId
                  - timestamp
        '400':
          description: Invalid query parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
        '401':
          description: Invalid or missing auth token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
        '403':
          description: Your organization is not entitled to the public API
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
        '404':
          description: downstreamEntityId is not in your organization
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
components:
  schemas:
    DownstreamLicenseSummaryResponse:
      type: object
      properties:
        holderType:
          type: string
          description: Whether an agency entity or a producer holds this position
          enum:
            - entity
            - producer
          example: entity
        holderId:
          type: string
          description: The entity or producer this summary is for
          example: 6610b3d2c2e0a51b8c0d1f02
        holderName:
          type: string
          description: Name of the holder
          example: Philadelphia Branch
        downstreamEntityId:
          type: string
          description: The agency entity whose NIPR subscription produced this row
          example: 6610b3d2c2e0a51b8c0d1f02
        domicileStates:
          description: States the holder holds a resident license in, active or not
          type: array
          items:
            $ref: '#/components/schemas/DownstreamDomicileStateResponse'
        licensedStateCount:
          type: number
          description: Distinct states the holder holds an ACTIVE license in
          example: 12
        complianceDataSynchronizationStatus:
          type: string
          description: >-
            How current our copy of this holder NIPR data is. Absent when no
            subscription record backs the row.
          enum:
            - not started
            - queued
            - processing
            - success
            - NIPR error
            - processing error
            - not applicable
            - no data
          example: success
      required:
        - holderType
        - holderId
        - holderName
        - downstreamEntityId
        - domicileStates
        - licensedStateCount
    ErrorResponseDto:
      type: object
      properties:
        statusCode:
          type: number
          description: HTTP status code
        requestId:
          type: string
          description: Unique request identifier for debugging
        errorType:
          type: string
          description: >-
            Machine-readable error classification. Branch on this rather than on
            `errorMessage`, which is prose and may change. Authentication
            failures returned by our identity provider are forwarded verbatim,
            so a 401 can carry a code outside this list; treat an unrecognised
            value as a generic failure of its HTTP status.
          enum:
            - conflict
            - contact_not_authorized
            - document_exceeds_page_limit
            - downstream_entity_member_exists
            - duplicate_external_id_error
            - duplicate_member_email
            - duplicate_producer_code_error
            - forbidden
            - gateway_timeout
            - inactive_email
            - internal_server_error
            - invalid_email
            - invalid_email_for_invites
            - invalid_organization_category
            - invalid_organization_slug
            - invalid_phone_number
            - invalid_token
            - invite_limit_reached
            - jwt_invalid
            - m2m_client_not_found
            - not_found
            - organization_already_exists
            - organization_slug_already_used
            - payment_required
            - producer_agreement_required
            - product_feature_subscription_required
            - service_unavailable
            - session_authorization_error
            - some_custom_error_string
            - throttled
            - too_many_requests
            - unauthorized
            - unauthorized_client
            - unexpected_400_stytch_error
            - unexpected_403_stytch_error
            - unexpected_404_stytch_error
            - unexpected_error
            - unexpected_stytch_error
            - unprocessable_entity
            - validation_error
          example: validation_error
        errorMessage:
          description: Array of error messages
          type: array
          items:
            type: string
        timestamp:
          type: string
          description: ISO timestamp when the error occurred
        details:
          type: object
          description: Additional error context
      required:
        - statusCode
        - requestId
        - errorType
        - errorMessage
        - timestamp
    DownstreamDomicileStateResponse:
      type: object
      properties:
        stateCode:
          type: string
          description: State or territory the holder is resident in
          enum:
            - AL
            - AK
            - AZ
            - AR
            - CA
            - CO
            - CT
            - DE
            - FL
            - GA
            - HI
            - ID
            - IL
            - IN
            - IA
            - KS
            - KY
            - LA
            - ME
            - MD
            - MA
            - MI
            - MN
            - MS
            - MO
            - MT
            - NE
            - NV
            - NH
            - NJ
            - NM
            - NY
            - NC
            - ND
            - OH
            - OK
            - OR
            - PA
            - RI
            - SC
            - SD
            - TN
            - TX
            - UT
            - VT
            - VA
            - WA
            - WV
            - WI
            - WY
            - GU
            - PR
            - VI
            - DC
          example: PA
        hasActiveLicense:
          type: boolean
          description: Whether the resident license in this state is currently active
          example: true
      required:
        - stateCode
        - hasActiveLicense

````

## Related topics

- [Entity Licensing Summary](/api-reference/v2/downstream/license-overview/entity-license-summary.md)
- [Producer Licensing Position by State](/api-reference/v2/downstream/license-overview/producer-license-overview.md)
- [Entity Licensing Position by State](/api-reference/v2/downstream/license-overview/entity-license-overview.md)
