> ## 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.

# Assign a Producer to Entities

> Attach an existing producer to more of your entities

Associates a producer you already work with to additional entities in your subtree.

## Already-associated entities are skipped, not rejected

Unlike [Add a Producer](/api-reference/v2/downstream/producers/add-producer), sending an entity the producer is already on is not an error. The two requests mean different things: "create this person" twice is a mistake worth a **409**, while "make sure they are on these entities" twice is the same instruction, and a caller adding one branch to a list of five should not have to diff the list first.

## Scope

The producer must already be associated with at least one entity in your subtree, or the request returns **404** — you cannot pull an arbitrary producer id off the platform into your organization. Every id in `entityIds` must be in your subtree as well.

Send an `Idempotency-Key` header. See [Idempotency](/guides/idempotency).


## OpenAPI

````yaml openapi/v2.json POST /v2/downstream/producers/{producerId}/entities
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/producers/{producerId}/entities:
    post:
      tags:
        - downstream/producers
      summary: Assign a producer to entities
      description: >-
        Associates an existing producer with more of your entities. Entities the
        producer is already on are skipped rather than rejected, so the request
        is safe to repeat with a full list. Returns the producer in the same
        shape List Producers uses. Returns 404 if the producer is not already
        associated with your organization.
      operationId: ProducersController_assignProducerEntities_v2
      parameters:
        - name: producerId
          required: true
          in: path
          description: >-
            The unique identifier of the producer (the producerId returned by
            the List Producers endpoint).
          schema:
            example: 6627f2b5c2e0a51b8c0d4e7c
            type: string
        - name: idempotency-key
          in: header
          description: UUID to ensure idempotent request processing
          required: false
          schema:
            type: string
            example: 550e8400-e29b-41d4-a716-446655440000
        - name: x-idempotency-key
          in: header
          description: Alternative UUID header for idempotent request processing
          required: false
          schema:
            type: string
            example: 550e8400-e29b-41d4-a716-446655440000
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssignProducerEntitiesDto'
      responses:
        '201':
          description: The producer, with its entities
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/DownstreamProducerResponse'
                  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 producer id or request body
          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: >-
            Producer not found, or one of the entity ids is not in your
            organization
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
components:
  schemas:
    AssignProducerEntitiesDto:
      type: object
      properties:
        entityIds:
          description: >-
            The entities to associate the producer with. Ids the producer is
            already associated with are skipped rather than duplicated, so the
            request is safe to repeat.
          example:
            - 6610b3d2c2e0a51b8c0d1f02
          type: array
          items:
            type: array
        email:
          type: string
          description: Contact email on the new associations
          example: example@test.com
        tel:
          type: string
          description: Contact phone number on the new associations
          example: '+12155550100'
        position:
          type: string
          description: Job title on the new associations
          example: Producer
        drlpStates:
          type: array
          description: >-
            States where this producer is a Designated Responsible Licensed
            Producer for the new associations.
          example:
            - PA
          items:
            type: string
            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
      required:
        - entityIds
    DownstreamProducerResponse:
      type: object
      properties:
        producerId:
          type: string
          description: Unique identifier of the producer
          example: 6627f2b5c2e0a51b8c0d4e7c
        firstName:
          type: string
          description: Given name
          example: Jon
        middleName:
          type: string
          description: Middle name
          example: R
        lastName:
          type: string
          description: Surname
          example: Doe
        npn:
          type: string
          description: National Producer Number
          example: '7654321'
        mainEmail:
          type: string
          description: The producer login email
          example: example@test.com
        nasdCrd:
          type: string
          description: FINRA CRD number
          example: '5551234'
        entities:
          description: The entities in your organization this producer is associated with
          type: array
          items:
            $ref: '#/components/schemas/DownstreamProducerEntityResponse'
        createdAt:
          type: string
          description: ISO 8601 creation timestamp
          example: '2025-01-15T10:30:00.000Z'
        updatedAt:
          type: string
          description: ISO 8601 last-update timestamp
          example: '2025-06-02T08:12:44.000Z'
      required:
        - producerId
        - firstName
        - lastName
        - entities
    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
    DownstreamProducerEntityResponse:
      type: object
      properties:
        associationId:
          type: string
          description: Identifier of the producer-to-entity relationship itself
          example: 6627f1a9c2e0a51b8c0d4e3a
        downstreamEntityId:
          type: string
          description: The entity this producer is associated with
          example: 6610b3d2c2e0a51b8c0d1f02
        branchName:
          type: string
          description: Branch name of that entity
          example: Philadelphia Branch
        drlpStates:
          type: array
          description: >-
            States where this producer is a Designated Responsible Licensed
            Producer for that entity
          example:
            - PA
          items:
            type: string
            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
        email:
          type: string
          description: >-
            Email held on this relationship, which may differ per entity. Not
            the producer login.
          example: example@test.com
        position:
          type: string
          description: Job title at that entity
          example: Producer
      required:
        - associationId
        - downstreamEntityId
        - branchName
        - drlpStates

````

## Related topics

- [Add a Producer](/api-reference/v2/downstream/producers/add-producer.md)
- [Changelog](/changelog.md)
- [Create Policy](/api-reference/v1/policies/create-policy.md)
