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

# List a Market's Contacts

> The carrier's people on this relationship

Returns the **carrier's** people on this market — underwriters, territory managers, the shared submissions mailbox — with the roles they hold.

A contact is either a named person or a mailbox; `contactType` says which. Roles come from a mix of standard roles and roles the carrier defined itself, and both are resolved to display names here rather than returned as ids.

This is the carrier's side. For your own people on this market, use [List Your Own Contacts on a Market](/api-reference/v2/downstream/markets/entity-contacts).


## OpenAPI

````yaml openapi/v2.json GET /v2/downstream/markets/{upstreamDownstreamAssociationId}/market-contacts
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/markets/{upstreamDownstreamAssociationId}/market-contacts:
    get:
      tags:
        - downstream/markets
      summary: List a market contacts
      description: >-
        Returns the people to talk to at this carrier: the contacts the carrier
        published for this relationship or across all of its relationships, plus
        any your agency recorded against it. Roles are the ones that apply to
        THIS market; where a contact is assigned both carrier-wide and here, the
        assignment made here wins. Ordered by display name.
      operationId: MarketsController_getMarketContacts_v2
      parameters:
        - name: upstreamDownstreamAssociationId
          required: true
          in: path
          description: >-
            The unique identifier of the market (the
            upstreamDownstreamAssociationId returned by the List Markets
            endpoint).
          schema:
            example: 6627f1a9c2e0a51b8c0d4e3a
            type: string
        - 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
      responses:
        '200':
          description: A page of market contacts
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      items:
                        type: array
                        items:
                          $ref: '#/components/schemas/DownstreamMarketContactResponse'
                      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 market id or 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: Market not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
components:
  schemas:
    DownstreamMarketContactResponse:
      type: object
      properties:
        contactId:
          type: string
          description: Unique identifier of the contact
          example: 66a1b2c3d4e5f6a7b8c9d0e2
        displayName:
          type: string
          description: >-
            The name to show. Resolved live from the carrier member record where
            the contact is linked to one, then the stored name, then the email.
          example: Jordan Alvarez
        contactType:
          type: string
          description: A named individual, or a shared functional mailbox
          enum:
            - person
            - mailbox
          example: person
        firstName:
          type: string
          description: Given name
          example: Jordan
        lastName:
          type: string
          description: Surname
          example: Alvarez
        label:
          type: string
          description: Display label, used by mailbox contacts
          example: New Business Submissions
        email:
          type: string
          description: Email address
          example: example@test.com
        phone:
          type: string
          description: Phone number
          example: '+12125550188'
        roles:
          type: array
          description: Built-in roles held on THIS market
          example:
            - underwriter
          items:
            type: string
            enum:
              - territory manager
              - underwriter
              - credentialing
              - account manager
              - claims
              - general
        customRoles:
          description: Carrier-defined roles held on this market, resolved to their names
          type: array
          items:
            $ref: '#/components/schemas/DownstreamMarketContactCustomRoleResponse'
        isOwnedByYou:
          type: boolean
          description: >-
            True when your agency recorded this contact, false when the carrier
            assigned it
          example: false
        isCarrierWideAssignment:
          type: boolean
          description: >-
            True when the roles above come from a carrier-wide assignment rather
            than one pinned to this market. A carrier-wide contact appears on
            every market you hold with that carrier.
          example: false
        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:
        - contactId
        - displayName
        - contactType
        - roles
        - customRoles
        - isOwnedByYou
        - isCarrierWideAssignment
    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
    DownstreamMarketContactCustomRoleResponse:
      type: object
      properties:
        customRoleId:
          type: string
          description: Identifier of the carrier-defined role
          example: 66a1b2c3d4e5f6a7b8c9d0e1
        name:
          type: string
          description: Carrier-defined display name for the role
          example: Surplus Lines Desk
      required:
        - customRoleId
        - name

````

## Related topics

- [List Market Contacts](/api-reference/v1/market-contacts/list-market-contacts.md)
- [List Your Own Contacts on a Market](/api-reference/v2/downstream/markets/entity-contacts.md)
- [Changelog](/changelog.md)
