---
title: "List CLO deals"
url: "https://console.9fin.com/apis/clo-api/versions/221fee01-d90e-4b49-9e39-50dbcbf0d81c/operations/list_clos_v0_clo_deals_get"
---

> Full API specification: https://console.9fin.com/apis/clo-api/versions/221fee01-d90e-4b49-9e39-50dbcbf0d81c.md

# List CLO deals

`GET` `/v0/clo/deals`

Operation ID: `list_clos_v0_clo_deals_get`

List CLO deals (Pre-Marketing, In market, Priced, and Called).

## Query parameters

- `limit` (integer, optional) - Maximum number of rows to return (1-200).
- `cursor` (optional) - Opaque keyset-pagination cursor from a previous response's `next_cursor`; omit for the first page.
- `since` (optional) - Only return rows with updated_at at or after this datetime (UTC).
- `until` (optional) - Only return rows with updated_at at or before this datetime (UTC).
- `deal_ids__in` (optional) - Comma-separated CLO deal IDs to include (max 10).
- `status` (optional) - Filter deal status (default: Pre-Marketing, In market, Priced, and Called).
- `region` (optional) - Filter coverage region.
- `pricing_type` (optional) - Filter pricing type.
- `deal_name` (optional) - Filter by CLO deal name (case-insensitive substring match).
- `manager` (optional) - Filter by manager name (case-insensitive substring match).
- `marketing_date_from` (optional) - Only return rows with marketing_date on or after this date.
- `marketing_date_to` (optional) - Only return rows with marketing_date on or before this date.
- `pricing_date_from` (optional) - Only return rows with pricing_date on or after this date.
- `pricing_date_to` (optional) - Only return rows with pricing_date on or before this date.
- `arranger` (optional) - Filter by lead or co-arranger name (case-insensitive substring match).
- `manager_counsel` (optional) - Filter by manager counsel name (case-insensitive substring match).
- `clo_type` (optional) - Filter by CLO structure type (case-insensitive exact match). One of: US BSL CLO, EU BSL CLO, US PC CLO, EU PC CLO, US CBO, EU CBO, Misc.
- `reinvestment_period_length_min` (optional) - Only return deals with reinvestment_period_length (years) at or above this value. May be negative: a post-reinvestment refinancing has a negative length.
- `reinvestment_period_length_max` (optional) - Only return deals with reinvestment_period_length (years) at or below this value. May be negative, and a negative bound is the way to select post-reinvestment refinancings.
- `non_call_period_length_min` (optional) - Only return deals with non_call_period_length (years) at or above this value. May be negative.
- `non_call_period_length_max` (optional) - Only return deals with non_call_period_length (years) at or below this value. May be negative.

## Responses

- `200` - Successful Response
- `400` - Bad request (e.g. invalid cursor).
- `422` - Validation Error
- `500` - Unexpected server error.
- `503` - Service unavailable (e.g. database down).

## OpenAPI definition

```yaml
openapi: 3.1.0
info:
  title: 9fin CLO API
  version: 0.11.0
servers:
  - description: Production environment
    url: https://api.9fin.com
paths:
  /v0/clo/deals:
    get:
      description: List CLO deals (Pre-Marketing, In market, Priced, and Called).
      operationId: list_clos_v0_clo_deals_get
      parameters:
        - description: Maximum number of rows to return (1-200).
          in: query
          name: limit
          required: false
          schema:
            default: 50
            description: Maximum number of rows to return (1-200).
            maximum: 200
            minimum: 1
            title: Limit
            type: integer
        - description: Opaque keyset-pagination cursor from a previous response's
            `next_cursor`; omit for the first page.
          in: query
          name: cursor
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Opaque keyset-pagination cursor from a previous response's
              `next_cursor`; omit for the first page.
            title: Cursor
        - description: Only return rows with updated_at at or after this datetime (UTC).
          in: query
          name: since
          required: false
          schema:
            anyOf:
              - format: date-time
                type: string
              - type: "null"
            default: null
            description: Only return rows with updated_at at or after this datetime (UTC).
            title: Since
        - description: Only return rows with updated_at at or before this datetime (UTC).
          in: query
          name: until
          required: false
          schema:
            anyOf:
              - format: date-time
                type: string
              - type: "null"
            default: null
            description: Only return rows with updated_at at or before this datetime (UTC).
            title: Until
        - description: Comma-separated CLO deal IDs to include (max 10).
          in: query
          name: deal_ids__in
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Comma-separated CLO deal IDs to include (max 10).
            title: Deal Ids  In
        - description: "Filter deal status (default: Pre-Marketing, In market, Priced, and
            Called)."
          in: query
          name: status
          required: false
          schema:
            anyOf:
              - enum:
                  - Pre-Marketing
                  - In market
                  - Priced
                  - Called
                  - all
                type: string
              - type: "null"
            default: null
            description: "Filter deal status (default: Pre-Marketing, In market, Priced, and
              Called)."
            title: Status
        - description: Filter coverage region.
          in: query
          name: region
          required: false
          schema:
            anyOf:
              - enum:
                  - US
                  - Europe
                  - LATAM
                  - APAC
                  - CEEMEA
                  - North America
                  - Western Europe
                type: string
              - type: "null"
            default: null
            description: Filter coverage region.
            title: Region
        - description: Filter pricing type.
          in: query
          name: pricing_type
          required: false
          schema:
            anyOf:
              - enum:
                  - New issue
                  - Reset
                  - Refi
                type: string
              - type: "null"
            default: null
            description: Filter pricing type.
            title: Pricing Type
        - description: Filter by CLO deal name (case-insensitive substring match).
          in: query
          name: deal_name
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Filter by CLO deal name (case-insensitive substring match).
            title: Deal Name
        - description: Filter by manager name (case-insensitive substring match).
          in: query
          name: manager
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Filter by manager name (case-insensitive substring match).
            title: Manager
        - description: Only return rows with marketing_date on or after this date.
          in: query
          name: marketing_date_from
          required: false
          schema:
            anyOf:
              - format: date
                type: string
              - type: "null"
            default: null
            description: Only return rows with marketing_date on or after this date.
            title: Marketing Date From
        - description: Only return rows with marketing_date on or before this date.
          in: query
          name: marketing_date_to
          required: false
          schema:
            anyOf:
              - format: date
                type: string
              - type: "null"
            default: null
            description: Only return rows with marketing_date on or before this date.
            title: Marketing Date To
        - description: Only return rows with pricing_date on or after this date.
          in: query
          name: pricing_date_from
          required: false
          schema:
            anyOf:
              - format: date
                type: string
              - type: "null"
            default: null
            description: Only return rows with pricing_date on or after this date.
            title: Pricing Date From
        - description: Only return rows with pricing_date on or before this date.
          in: query
          name: pricing_date_to
          required: false
          schema:
            anyOf:
              - format: date
                type: string
              - type: "null"
            default: null
            description: Only return rows with pricing_date on or before this date.
            title: Pricing Date To
        - description: Filter by lead or co-arranger name (case-insensitive substring
            match).
          in: query
          name: arranger
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Filter by lead or co-arranger name (case-insensitive substring
              match).
            title: Arranger
        - description: Filter by manager counsel name (case-insensitive substring match).
          in: query
          name: manager_counsel
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Filter by manager counsel name (case-insensitive substring match).
            title: Manager Counsel
        - description: "Filter by CLO structure type (case-insensitive exact match). One
            of: US BSL CLO, EU BSL CLO, US PC CLO, EU PC CLO, US CBO, EU CBO,
            Misc."
          in: query
          name: clo_type
          required: false
          schema:
            anyOf:
              - enum:
                  - US BSL CLO
                  - EU BSL CLO
                  - US PC CLO
                  - EU PC CLO
                  - US CBO
                  - EU CBO
                  - Misc
                type: string
              - type: "null"
            default: null
            description: "Filter by CLO structure type (case-insensitive exact match). One
              of: US BSL CLO, EU BSL CLO, US PC CLO, EU PC CLO, US CBO, EU CBO,
              Misc."
            title: Clo Type
        - description: "Only return deals with reinvestment_period_length (years) at or
            above this value. May be negative: a post-reinvestment refinancing
            has a negative length."
          in: query
          name: reinvestment_period_length_min
          required: false
          schema:
            anyOf:
              - type: number
              - type: "null"
            default: null
            description: "Only return deals with reinvestment_period_length (years) at or
              above this value. May be negative: a post-reinvestment refinancing
              has a negative length."
            title: Reinvestment Period Length Min
        - description: Only return deals with reinvestment_period_length (years) at or
            below this value. May be negative, and a negative bound is the way
            to select post-reinvestment refinancings.
          in: query
          name: reinvestment_period_length_max
          required: false
          schema:
            anyOf:
              - type: number
              - type: "null"
            default: null
            description: Only return deals with reinvestment_period_length (years) at or
              below this value. May be negative, and a negative bound is the way
              to select post-reinvestment refinancings.
            title: Reinvestment Period Length Max
        - description: Only return deals with non_call_period_length (years) at or above
            this value. May be negative.
          in: query
          name: non_call_period_length_min
          required: false
          schema:
            anyOf:
              - type: number
              - type: "null"
            default: null
            description: Only return deals with non_call_period_length (years) at or above
              this value. May be negative.
            title: Non Call Period Length Min
        - description: Only return deals with non_call_period_length (years) at or below
            this value. May be negative.
          in: query
          name: non_call_period_length_max
          required: false
          schema:
            anyOf:
              - type: number
              - type: "null"
            default: null
            description: Only return deals with non_call_period_length (years) at or below
              this value. May be negative.
            title: Non Call Period Length Max
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PaginatedCLOs"
          description: Successful Response
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Bad request (e.g. invalid cursor).
        "422":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
          description: Validation Error
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/InternalServerErrorResponse"
          description: Unexpected server error.
        "503":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Service unavailable (e.g. database down).
      security:
        - HTTPBearer: []
      summary: List CLO deals
      tags:
        - Deals
security:
  - HTTPBearer: []
components:
  schemas:
    PaginatedCLOs:
      description: Cursor-paginated list of CLO deals.
      properties:
        items:
          description: CLO deals that match the provided filter criteria.
          items:
            $ref: "#/components/schemas/CLOItem"
          title: Items
          type: array
        next_cursor:
          anyOf:
            - type: string
            - type: "null"
          description: Cursor to pass in the next request to fetch the next page of deals.
          title: Next Cursor
      required:
        - items
      title: PaginatedCLOs
      type: object
    ErrorResponse:
      description: Client-facing error envelope.
      examples:
        - error_code: invalid_cursor
          message: The supplied cursor could not be decoded.
          trace_id: 202bde256c7d446f9623efdc96286c5d
        - error_code: service_unavailable
          message: Database is not available
          trace_id: c2416d52c6d14c8e831aad792407442c
      properties:
        error_code:
          title: Error Code
          type: string
        message:
          title: Message
          type: string
        trace_id:
          anyOf:
            - type: string
            - type: "null"
          title: Trace Id
      required:
        - error_code
        - message
      title: ErrorResponse
      type: object
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: "#/components/schemas/ValidationError"
          title: Detail
          type: array
      title: HTTPValidationError
      type: object
    InternalServerErrorResponse:
      properties:
        error_code:
          examples:
            - internal_server_error
          title: Error Code
          type: string
        message:
          examples:
            - An unexpected error occurred.
          title: Message
          type: string
        trace_id:
          anyOf:
            - type: string
            - type: "null"
          examples:
            - e7dfd20231374d308f04655eb0538be4
          title: Trace Id
      required:
        - error_code
        - message
      title: InternalServerErrorResponse
      type: object
    CLOItem:
      description: CLO deal row for the client-facing feed.
      properties:
        arranger_counsel:
          anyOf:
            - type: string
            - type: "null"
          description: Arranger counsel.
          title: Arranger Counsel
        bloomberg_ticker_prefix:
          anyOf:
            - type: string
            - type: "null"
          description: Bloomberg ticker prefix.
          title: Bloomberg Ticker Prefix
        clo_name:
          description: CLO deal name.
          title: Clo Name
          type: string
        clo_type:
          anyOf:
            - type: string
            - type: "null"
          description: CLO structure type.
          title: Clo Type
        closing_date:
          anyOf:
            - format: date
              type: string
            - type: "null"
          description: Closing date.
          title: Closing Date
        co_arranger:
          anyOf:
            - type: string
            - type: "null"
          description: Co-arranger.
          title: Co Arranger
        cost_of_debt:
          anyOf:
            - type: number
            - type: "null"
          description: Cost of debt.
          title: Cost Of Debt
        country:
          anyOf:
            - type: string
            - type: "null"
          description: Primary coverage country.
          title: Country
        currency:
          anyOf:
            - type: string
            - type: "null"
          description: Deal currency code.
          title: Currency
        deal_id:
          description: Unique CLO deal identifier.
          title: Deal Id
          type: string
        deal_size:
          anyOf:
            - type: number
            - type: "null"
          description: Target deal size.
          title: Deal Size
        entity_nf_id:
          anyOf:
            - type: string
            - type: "null"
          description: Permanent opaque organisation id for the CLO vehicle entity
            (`nf_ent_<hex>`). Optional in the contract for forward safety; db1
            requires every company to have an entity, so in practice this is
            always populated.
          title: Entity Nf Id
        expected_closing:
          anyOf:
            - $ref: "#/components/schemas/DateRange"
            - type: "null"
          description: Expected closing date range.
        former_manager_name:
          anyOf:
            - type: string
            - type: "null"
          description: Former manager name(s).
          title: Former Manager Name
        lead_arranger:
          anyOf:
            - type: string
            - type: "null"
          description: Lead arranger.
          title: Lead Arranger
        manager:
          anyOf:
            - type: string
            - type: "null"
          description: CLO manager name.
          title: Manager
        manager_counsel:
          anyOf:
            - type: string
            - type: "null"
          description: Manager counsel.
          title: Manager Counsel
        marketing_date:
          anyOf:
            - format: date
              type: string
            - type: "null"
          description: Marketing start date.
          title: Marketing Date
        non_call_date:
          anyOf:
            - format: date
              type: string
            - type: "null"
          description: Non-call date.
          title: Non Call Date
        non_call_period_length:
          anyOf:
            - type: number
            - type: "null"
          description: Non-call period length in years; fractional (e.g. 4.52). Negative
            when the non-call period had already ended by the time the deal
            closed (e.g. -0.5).
          title: Non Call Period Length
        pricing_date:
          anyOf:
            - format: date
              type: string
            - type: "null"
          description: Pricing date.
          title: Pricing Date
        pricing_type:
          anyOf:
            - type: string
            - type: "null"
          description: New issue, Reset, or Refi.
          title: Pricing Type
        region:
          anyOf:
            - type: string
            - type: "null"
          description: Primary coverage region.
          title: Region
        reinvestment_date:
          anyOf:
            - format: date
              type: string
            - type: "null"
          description: Reinvestment period end date.
          title: Reinvestment Date
        reinvestment_period_length:
          anyOf:
            - type: number
            - type: "null"
          description: Reinvestment period length in years; fractional (e.g. 4.52).
            Negative when the reinvestment period had already ended by the time
            the deal closed, which is normal for a post-reinvestment refinancing
            (e.g. -0.34).
          title: Reinvestment Period Length
        risk_retention_structure:
          anyOf:
            - type: string
            - type: "null"
          description: Risk retention structure.
          title: Risk Retention Structure
        risk_retention_vehicle:
          anyOf:
            - type: string
            - type: "null"
          description: Risk retention vehicle.
          title: Risk Retention Vehicle
        roller_deadline:
          anyOf:
            - format: date
              type: string
            - type: "null"
          description: Roller deadline date.
          title: Roller Deadline
        seniormost_triple_a:
          anyOf:
            - type: number
            - type: "null"
          description: Seniormost triple-A attachment.
          title: Seniormost Triple A
        status:
          description: Deal lifecycle status.
          title: Status
          type: string
        target_par:
          anyOf:
            - type: number
            - type: "null"
          description: Target par amount.
          title: Target Par
        target_pricing:
          anyOf:
            - $ref: "#/components/schemas/DateRange"
            - type: "null"
          description: Target pricing date range.
        updated_at:
          description: Timestamp when the deal row was last updated (UTC).
          format: date-time
          title: Updated At
          type: string
        wal_test_date:
          anyOf:
            - format: date
              type: string
            - type: "null"
          description: WAL test date.
          title: Wal Test Date
        wal_test_date_length:
          anyOf:
            - type: number
            - type: "null"
          description: WAL test date length in years; fractional (e.g. 4.52). Negative
            when the WAL test date had already passed by the time the deal
            closed.
          title: Wal Test Date Length
      required:
        - deal_id
        - clo_name
        - status
        - updated_at
      title: CLOItem
      type: object
    ValidationError:
      properties:
        ctx:
          title: Context
          type: object
        input:
          title: Input
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          title: Location
          type: array
        msg:
          title: Message
          type: string
        type:
          title: Error Type
          type: string
      required:
        - loc
        - msg
        - type
      title: ValidationError
      type: object
    DateRange:
      description: >-
        A date expressed as a (possibly open-ended) range.


        Used where a date is only known to fall within a window rather than on
        an

        exact day. Matches the pcred-api DateRange shape.
      properties:
        lower:
          anyOf:
            - format: date
              type: string
            - type: "null"
          description: Earliest date in the range; null if unbounded below.
          title: Lower
        lower_inclusive:
          description: Whether the lower bound is inclusive.
          title: Lower Inclusive
          type: boolean
        upper:
          anyOf:
            - format: date
              type: string
            - type: "null"
          description: Latest date in the range; null if unbounded above.
          title: Upper
        upper_inclusive:
          description: Whether the upper bound is inclusive.
          title: Upper Inclusive
          type: boolean
      required:
        - lower_inclusive
        - upper_inclusive
      title: DateRange
      type: object
  securitySchemes:
    HTTPBearer:
      bearerFormat: JWT
      scheme: bearer
      type: http
```
