---
title: "GET /api/integration/v1/projects?customerId=... — list projects for a customer"
method: GET
path: "/api/integration/v1/projects/by-customer/{customerId}"
tags: ["Projects"]
---

# GET /api/integration/v1/projects?customerId=... — list projects for a customer

`GET /api/integration/v1/projects/by-customer/{customerId}`

## Request

- Base URL: `https://api.timix.ai`
- URL: `https://api.timix.ai/api/integration/v1/projects/by-customer/{customerId}`
- Auth: API key in header `X-Api-Key`

## Path parameters

- `customerId` string, required

## Query parameters

- `Page` integer
- `PageSize` integer
- `Skip` integer
- `CreatedAfter` string, date-time, nullable
- `UpdatedAfter` string, date-time, nullable

## Response `200`

- PagedResultOfBillingProjectView: Paginated list wrapper returned by all Integration API list endpoints. Total count is also available via the X-Total-Count response header.
  - `items` BillingProjectView[]: Current page items.
    - `id` string
    - `createdAt` string, date-time
    - `updatedAt` string, date-time
    - `parentId` string, required
    - `name` string
    - `allowedBillingTypes` BillingType[]
    - `poNumber` string
    - `description` string
    - `reporters` string[]
    - `status` 'Active' | 'OnHold' | 'Completed' | 'Cancelled'
    - `times` TimeSummaries
      - `tm` TimeSummary
        - `reported` integer
        - `limit` integer
      - `fix` TimeSummary
        - `reported` integer
        - `limit` integer
      - `ovh` TimeSummary
        - `reported` integer
        - `limit` integer
      - `all` TimeSummary, required
        - `reported` integer
        - `limit` integer
      - `financialSummary` FinancialSummary
        - `totalRevenue` number
        - `totalCost` number
        - `totalProfit` number
        - `profitMargin` number
        - `revenueByBillingType` object
        - `costByUser` object
        - `monthlyBreakdown` object
    - `organizationId` string
    - `customerId` string
    - `createdBy` string
    - `updatedBy` string
    - `fixedPrice` number
    - `currency` string
    - `budgetType` 'NotSet' | 'Fixed' | 'TM' | 'ProfitMargin'
    - `fixedBudgetAmount` number, nullable
    - `internalHoursLimit` number, nullable
    - `minimumProfitMargin` number, nullable
    - `isTmAllowed` boolean
    - `tmApprovedHours` number, nullable
    - `customerHourlyRate` number, nullable
    - `isFixAllowed` boolean
    - `fixHourLimit` number, nullable
    - `fixFixedAmount` number, nullable
    - `isOvhAllowed` boolean
    - `ovhHourLimit` number, nullable
    - `createGeneralActivity` boolean
    - `customFields` object, nullable
  - `totalCount` integer: Total number of matching records across all pages.
  - `page` integer: Current page number (1-based).
  - `pageSize` integer: Items per page.
  - `hasMore` boolean: Whether there are more pages.

---

[API](https://skmtc.dev/timix/apis/timix-ai-integration-api.md) · [All operations](https://skmtc.dev/timix/apis/timix-ai-integration-api/llms.txt) · [OpenAPI document](https://skmtc.dev/timix/apis/timix-ai-integration-api/revisions/ff7f1b6d7479?raw)
