> ## 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 Contract Container Templates

> Retrieve active ContractContainer templates for your organization

Returns active ContractContainer templates available to your organization. Each item describes one template, including its underlying producer-agreement PDF and any additional folder documents.

## Which ID do I send on invite?

Each template carries three different IDs. Use the **top-level `_id`** as `contractContainerTemplateId` when calling [Invite Downstream Entity](/api-reference/v2/downstream-entity-associations/invite).

| Field in response                      | What it identifies                             | When to use it                                                                                                  |
| -------------------------------------- | ---------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
| `_id` (top-level)                      | The ContractContainer template itself          | `contractContainerTemplateId` on the [invite endpoint](/api-reference/v2/downstream-entity-associations/invite) |
| `producerAgreement.fileDocumentId`     | The PDF behind the producer-agreement document | Downloading the PDF via [List File Documents](/api-reference/v2/file-documents/list-documents)                  |
| `additionalDocuments[].fileDocumentId` | A PDF inside the template's folder set         | Downloading that document via [List File Documents](/api-reference/v2/file-documents/list-documents)            |

<Note>
  `_id` is the only value the [invite endpoint](/api-reference/v2/downstream-entity-associations/invite) accepts as `contractContainerTemplateId`. Sending one of the `fileDocumentId` values instead will return `400 No active contract template found for that contractContainerTemplateId`.
</Note>

### Example

Given a response item like:

```json theme={null}
{
  "_id": "6a0dee5f72ffa31272c65a6c",
  "name": "Producer Agreement",
  "status": "active",
  "producerAgreement": {
    "fileDocumentId": "6847fed985e35f21c00bfd79",
    "customFields": []
  },
  "additionalDocuments": [
    { "fileDocumentId": "6a0e01d5d4227d43c85af4cd", "name": "Compensation & Commission Schedules" }
  ]
}
```

The invite call uses the top-level `_id`:

```json theme={null}
POST /v2/upstream/downstream-entity-associations/invite
{
  "contractContainerTemplateId": "6a0dee5f72ffa31272c65a6c",
  ...
}
```


## OpenAPI

````yaml openapi/v2.json GET /v2/upstream/contract-container-templates
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/upstream/contract-container-templates:
    get:
      tags:
        - upstream/contract-container-templates
      operationId: ContractContainerTemplatesV2Controller_getContractContainerTemplates_v2
      parameters: []
      responses:
        '200':
          description: >-
            Active ContractContainer templates for your organization. Use the
            returned _id as contractContainerTemplateId on the Invite Downstream
            Entity endpoint.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: >-
                        #/components/schemas/ContractContainerTemplateResponseDto
                  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
        '401':
          description: Invalid or missing auth token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
components:
  schemas:
    ContractContainerTemplateResponseDto:
      type: object
      properties:
        _id:
          type: string
          description: Unique ContractContainer template ID
          example: 507f1f77bcf86cd799439011
        name:
          type: string
          description: Human-readable name of the contract template
          example: Standard Producer Agreement
        status:
          type: string
          description: Lifecycle status of the contract template
          enum:
            - submitted
            - processing
            - active
            - archived
          example: active
        producerAgreement:
          description: >-
            Producer agreement portion of the template. Absent for ACH-only
            signing containers (network/child agencies under an umbrella
            agreement).
          allOf:
            - $ref: >-
                #/components/schemas/ContractContainerTemplateProducerAgreementResponseDto
        additionalDocuments:
          description: >-
            Additional documents bundled with the template (folders flattened
            into a single list)
          type: array
          items:
            $ref: >-
              #/components/schemas/ContractContainerTemplateAdditionalDocumentResponseDto
        createdAt:
          format: date-time
          type: string
          description: Creation timestamp
        updatedAt:
          format: date-time
          type: string
          description: Last update timestamp
      required:
        - _id
        - name
        - status
        - createdAt
        - updatedAt
    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
    ContractContainerTemplateProducerAgreementResponseDto:
      type: object
      properties:
        fileDocumentId:
          type: string
          description: File document ID of the producer agreement PDF
          example: 507f1f77bcf86cd799439011
        customFields:
          description: Custom-field definitions baked into the producer agreement template
          type: array
          items:
            $ref: >-
              #/components/schemas/ContractContainerTemplateCustomFieldResponseDto
      required:
        - fileDocumentId
        - customFields
    ContractContainerTemplateAdditionalDocumentResponseDto:
      type: object
      properties:
        fileDocumentId:
          type: string
          description: File document ID of the additional document
          example: 507f1f77bcf86cd799439012
        name:
          type: string
          description: Display name of the additional document
          example: W-9 Tax Form
      required:
        - fileDocumentId
        - name
    ContractContainerTemplateCustomFieldResponseDto:
      type: object
      properties:
        fieldName:
          type: string
          description: Field name
          example: commissionNumber
        fieldType:
          type: string
          description: Field type
          enum:
            - string
            - number
          example: string
        value:
          type: string
          description: Current value (if set on the template)
        defaultValue:
          type: string
          description: Default value applied when none is provided
        isRequired:
          type: boolean
          description: Whether the field must be provided
          example: true
        minValue:
          type: number
          description: Inclusive minimum value (numeric fields only)
        maxValue:
          type: number
          description: Inclusive maximum value (numeric fields only)
      required:
        - fieldName
        - fieldType

````

## Related topics

- [Invite Downstream Entity](/api-reference/v2/downstream-entity-associations/invite.md)
- [Get Producer Agreement Templates](/api-reference/v2/file-documents/get-producer-agreement-templates.md)
- [Producer Agreement Executed](/guides/webhooks/producer-agreement-executed.md)
