Fund Connect API

The State Street Fund Connect API enables authorized participants (APs), fund managers, and custodians to programmatically manage ETF creation and redemption orders through the Fund Connect platform. The API supports FIX protocol and XML for order submission, and has executed the first API-based ETF order in Australian-domiciled ETFs (2025). Fund Connect is a global online portal processing ETF transactions across major markets.

OpenAPI Specification

state-street-fund-connect-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: State Street Fund Connect API
  description: >-
    The State Street Fund Connect API enables authorized participants (APs), ETF fund managers,
    and custodians to programmatically manage ETF creation and redemption orders through the
    Fund Connect platform. Fund Connect is a global online portal for the creation and redemption
    of ETFs. The API supports automated order entry, basket composition retrieval, order status
    tracking, and settlement confirmation. In 2025, Fund Connect executed the first API-based
    ETF order for an Australian-domiciled ETF. The platform processes ETF transactions across
    all major markets. Authentication uses OAuth 2.0 Client Credentials per RFC 6749 Section 4.4.2.
  version: 1.0.0
  contact:
    name: State Street API Support
    email: [email protected]
    url: https://developer.statestreet.com
  termsOfService: https://www.statestreet.com/us/en/individual-investor/tools-and-resources/terms-and-conditions
  license:
    name: Proprietary
    url: https://developer.statestreet.com/api-platform-standards
servers:
  - url: https://api.statestreet.com/v1/fund-connect
    description: State Street Fund Connect API Production
tags:
  - name: Orders
    description: ETF creation and redemption order operations
  - name: Baskets
    description: ETF portfolio composition basket operations
  - name: Funds
    description: ETF fund information operations
  - name: Settlement
    description: Order settlement and confirmation operations
security:
  - OAuth2:
      - fund-connect:orders:read
      - fund-connect:orders:write
      - fund-connect:baskets:read
paths:
  /funds:
    get:
      operationId: listFunds
      summary: List ETF Funds
      description: >-
        Retrieve a list of ETF funds available for creation and redemption through
        Fund Connect. Returns fund identifiers, names, tickers, base currencies,
        and authorized participant entitlements.
      tags:
        - Funds
      parameters:
        - name: market
          in: query
          description: Filter by market/exchange
          required: false
          schema:
            type: string
            example: US
        - name: pageSize
          in: query
          required: false
          schema:
            type: integer
            default: 25
            maximum: 100
        - name: pageToken
          in: query
          required: false
          schema:
            type: string
        - $ref: '#/components/parameters/XCorrelationId'
      responses:
        '200':
          description: List of ETF funds
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FundListResponse'
        '401':
          description: Authentication required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  /funds/{fundId}:
    get:
      operationId: getFund
      summary: Get ETF Fund
      description: >-
        Retrieve detailed information for a specific ETF fund including its
        composition requirements, minimum creation/redemption unit size,
        and authorized participant eligibility.
      tags:
        - Funds
      parameters:
        - name: fundId
          in: path
          description: Unique fund identifier
          required: true
          schema:
            type: string
            example: ETF-SPDR-SPY
        - $ref: '#/components/parameters/XCorrelationId'
      responses:
        '200':
          description: ETF fund details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Fund'
        '404':
          description: Fund not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  /funds/{fundId}/baskets:
    get:
      operationId: getFundBasket
      summary: Get ETF Portfolio Basket
      description: >-
        Retrieve the current portfolio composition basket for an ETF fund. Returns
        the in-kind securities list with required quantities for creation/redemption
        units, as well as any cash component. Baskets are published daily prior to
        market open.
      tags:
        - Baskets
      parameters:
        - name: fundId
          in: path
          description: Unique fund identifier
          required: true
          schema:
            type: string
            example: ETF-SPDR-SPY
        - name: date
          in: query
          description: Date for which to retrieve the basket composition
          required: false
          schema:
            type: string
            format: date
            example: '2026-05-02'
        - $ref: '#/components/parameters/XCorrelationId'
      responses:
        '200':
          description: ETF portfolio basket composition
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BasketResponse'
        '404':
          description: Fund or basket not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  /orders:
    post:
      operationId: createOrder
      summary: Create ETF Order
      description: >-
        Submit an ETF creation or redemption order through Fund Connect. Authorized
        participants can request creation of new ETF shares by delivering the in-kind
        basket, or redeem existing ETF shares to receive the underlying basket securities.
        Orders are processed at end-of-day NAV.
      tags:
        - Orders
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderRequest'
      responses:
        '201':
          description: Order successfully submitted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
        '400':
          description: Invalid order request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized as AP for this fund
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

    get:
      operationId: listOrders
      summary: List ETF Orders
      description: >-
        Retrieve a list of ETF creation and redemption orders submitted by the
        authenticated authorized participant. Supports filtering by order status,
        fund, and date range.
      tags:
        - Orders
      parameters:
        - name: fundId
          in: query
          description: Filter by fund identifier
          required: false
          schema:
            type: string
        - name: status
          in: query
          description: Filter by order status
          required: false
          schema:
            type: string
            enum:
              - PENDING
              - ACCEPTED
              - PROCESSING
              - SETTLED
              - REJECTED
              - CANCELLED
        - name: startDate
          in: query
          required: false
          schema:
            type: string
            format: date
        - name: endDate
          in: query
          required: false
          schema:
            type: string
            format: date
        - name: pageSize
          in: query
          required: false
          schema:
            type: integer
            default: 25
            maximum: 100
        - name: pageToken
          in: query
          required: false
          schema:
            type: string
        - $ref: '#/components/parameters/XCorrelationId'
      responses:
        '200':
          description: List of ETF orders
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderListResponse'

  /orders/{orderId}:
    get:
      operationId: getOrder
      summary: Get ETF Order
      description: >-
        Retrieve the current status and details of a specific ETF creation or
        redemption order including basket delivery confirmation and settlement status.
      tags:
        - Orders
      parameters:
        - name: orderId
          in: path
          description: Unique order identifier
          required: true
          schema:
            type: string
            example: FC-2026-0502-00123
        - $ref: '#/components/parameters/XCorrelationId'
      responses:
        '200':
          description: ETF order details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
        '404':
          description: Order not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  /orders/{orderId}/cancel:
    post:
      operationId: cancelOrder
      summary: Cancel ETF Order
      description: >-
        Cancel a pending ETF creation or redemption order before it has been
        accepted for processing. Orders can only be cancelled while in PENDING status.
      tags:
        - Orders
      parameters:
        - name: orderId
          in: path
          description: Unique order identifier
          required: true
          schema:
            type: string
            example: FC-2026-0502-00123
        - $ref: '#/components/parameters/XCorrelationId'
      responses:
        '200':
          description: Order successfully cancelled
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
        '404':
          description: Order not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Order cannot be cancelled in current state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

components:
  securitySchemes:
    OAuth2:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://api.statestreet.com/oauth/token
          scopes:
            fund-connect:orders:read: Read ETF order history and status
            fund-connect:orders:write: Submit and cancel ETF orders
            fund-connect:baskets:read: Read ETF portfolio basket compositions

  parameters:
    XCorrelationId:
      name: X-Correlation-ID
      in: header
      description: Client-provided correlation ID for request tracing
      required: false
      schema:
        type: string
        format: uuid

  schemas:
    FundListResponse:
      type: object
      properties:
        funds:
          type: array
          items:
            $ref: '#/components/schemas/Fund'
        nextPageToken:
          type: string
        totalCount:
          type: integer

    Fund:
      type: object
      description: An ETF fund available on Fund Connect
      properties:
        fundId:
          type: string
          description: Unique fund identifier
          example: ETF-SPDR-SPY
        fundName:
          type: string
          description: Full fund name
          example: SPDR S&P 500 ETF Trust
        ticker:
          type: string
          description: Exchange ticker symbol
          example: SPY
        isin:
          type: string
          description: ISIN code
          example: US78462F1030
        baseCurrency:
          type: string
          description: Fund base currency
          example: USD
        exchange:
          type: string
          description: Primary exchange
          example: NYSE Arca
        creationUnit:
          type: integer
          description: Number of shares per creation/redemption unit
          example: 50000
        fundManager:
          type: string
          description: Fund manager/sponsor name
          example: State Street Global Advisors
        custodian:
          type: string
          description: Fund custodian
          example: State Street Bank

    BasketResponse:
      type: object
      description: ETF portfolio basket composition
      properties:
        fundId:
          type: string
          example: ETF-SPDR-SPY
        date:
          type: string
          format: date
        cashComponent:
          type: number
          format: double
          description: Cash component per creation unit in base currency
          example: 1250.50
        securities:
          type: array
          description: In-kind securities required per creation/redemption unit
          items:
            type: object
            properties:
              securityId:
                type: string
                example: US0378331005
              securityIdType:
                type: string
                example: ISIN
              securityName:
                type: string
                example: Apple Inc
              ticker:
                type: string
                example: AAPL
              quantity:
                type: number
                format: double
                description: Shares per creation unit
                example: 1250

    OrderRequest:
      type: object
      required:
        - fundId
        - orderType
        - units
      description: ETF creation or redemption order request
      properties:
        fundId:
          type: string
          description: Fund identifier
          example: ETF-SPDR-SPY
        orderType:
          type: string
          description: Order type
          enum:
            - CREATION
            - REDEMPTION
          example: CREATION
        units:
          type: integer
          description: Number of creation/redemption units
          minimum: 1
          example: 5
        settlementType:
          type: string
          description: Settlement instruction type
          enum:
            - IN_KIND
            - CASH
          default: IN_KIND
        clientOrderId:
          type: string
          description: Client-provided reference ID
          example: CLIENT-ORDER-98765

    OrderListResponse:
      type: object
      properties:
        orders:
          type: array
          items:
            $ref: '#/components/schemas/Order'
        nextPageToken:
          type: string
        totalCount:
          type: integer

    Order:
      type: object
      description: An ETF creation or redemption order
      properties:
        orderId:
          type: string
          description: Unique Fund Connect order identifier
          example: FC-2026-0502-00123
        clientOrderId:
          type: string
          description: Client-provided reference ID
          example: CLIENT-ORDER-98765
        fundId:
          type: string
          example: ETF-SPDR-SPY
        orderType:
          type: string
          enum:
            - CREATION
            - REDEMPTION
          example: CREATION
        units:
          type: integer
          description: Number of creation/redemption units ordered
          example: 5
        status:
          type: string
          enum:
            - PENDING
            - ACCEPTED
            - PROCESSING
            - SETTLED
            - REJECTED
            - CANCELLED
          example: ACCEPTED
        submittedAt:
          type: string
          format: date-time
          description: Order submission timestamp
        tradeDate:
          type: string
          format: date
          description: Trade date
        settlementDate:
          type: string
          format: date
          description: Expected settlement date

    Error:
      type: object
      properties:
        code:
          type: string
          example: UNAUTHORIZED
        message:
          type: string
          example: Access token is missing or invalid.
        correlationId:
          type: string
          format: uuid