> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developer.fortresstech.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer.fortresstech.io/_mcp/server.

# List Customers

GET https://api.fortresstech.io/v1/customers

List all customers


Reference: https://developer.fortresstech.io/api-reference/customers/list-customers

## Authentication

- `x-api-key` header (required) — API Key authentication via header

## Response

### 200

A paged array of customers

- `firstName` (string, optional)
- `middleName` (string, optional)
- `lastName` (string, optional)
- `preferredName` (string, optional)
- `suffix` (string, optional)
- `birthDate` (date, optional)
- `status` (enum, optional)
  - Allowed values: `APPLICANT`, `RESIDENT`, `PRIOR`
- `email` (string, optional)
- `phone` (string, optional)
- `gender` (string, optional)
- `headOfHousehold` (boolean, optional) — Indicates whether the customer is the head of household
- `relationship` (enum, optional) — Relationship of the customer to the head of household (null for head of household)
  - Allowed values: `PARTNER`, `PARENT`, `ADULT_CHILD`, `ROOMMATE`, `CHILD`, `GUARANTOR`, `OTHER`
- `passportNumberLastFour` (string, optional, nullable) — Last 4 characters of the passport number, spaces and dashes removed. null when no passport number is on file or it has 4 characters or fewer. The full number is never returned.
- `passportCountry` (string, optional, nullable) — Name of the country that issued the passport (for example "United States"). null when no passport country is on file.
- `alienRegistrationNumberLastFour` (string, optional, nullable) — Last 4 characters of the alien registration number (A-Number), spaces and dashes removed. null when no number is on file or it has 4 characters or fewer. The full number is never returned.
- `citizenshipStatus` (string, optional, nullable) — HUD member citizenship code from the affordable certification: EC (citizen or national), EN (non-citizen with eligible immigration status), IC (ineligible non-citizen child of head or spouse), IN (ineligible non-citizen), IP (ineligible parent of head or spouse), ND (no documentation submitted), PV (eligibility pending verification), XX (not a family member, for example a foster). Only records on certifications that are not deleted count; when the applicant has more than one, the most recently updated one is used. null when none is recorded.
- `maritalStatus` (string, optional, nullable) — Marital status from the rental application as stored, for example single, married, divorced, separated or widowed. null when not answered.
- `spouseName` (string, optional, nullable) — Spouse full name from the rental application (first, middle and last name). null when no spouse is recorded.
- `studentType` (string, optional, nullable) — Student type code from the rental application: f_tK_12 (full-time, kindergarten to grade 12), f_tPost12 (full-time, after grade 12) or p_t (part-time); a few older applications hold free text such as Full-time or Part-Time. Returned as stored, even when the application does not mark the customer as a student. null when the answer is not a student (n_s, Not a student or No es estudiante) or the question was not answered.
- `currentAddressStreet` (string, optional, nullable) — First street line of the current address the customer gave on the rental application. null when no current address is on file or the line is blank.
- `currentAddressStreet2` (string, optional, nullable) — Second street line (apartment, suite, unit) of the current address from the rental application. null when blank or no current address is on file.
- `currentAddressCity` (string, optional, nullable) — City of the current address from the rental application. null when blank or no current address is on file.
- `currentAddressState` (string, optional, nullable) — Two-letter state or territory code of the current address from the rental application (for example "NY"). null when no state is on file or the stored value is not a known state or territory code.
- `currentAddressZipCode` (string, optional, nullable) — ZIP code of the current address from the rental application, as entered. null when blank or no current address is on file.
- `lenderName` (string, optional, nullable) — Name of the landlord or mortgage lender for the current address, as entered on the rental application. null when blank or no current address is on file.
- `id` (string, optional)
- `readableId` (string, optional)
- `idempotencyId` (string, optional)
- `createdAt` (datetime, optional)
- `updatedAt` (datetime, optional)
- `deletedAt` (datetime, optional)
- `householdId` (string, optional)
- `propertyId` (string, optional)
- `organizationId` (string, optional)
- `property` (properties_components-schemas-Base, optional)
- `household` (households_components-schemas-Base, optional)
- `attachments` (list of attachments_components-schemas-Base, optional)
- `workOrders` (list of workorders_components-schemas-Base, optional)
- `assets` (list of assets_components-schemas-Base, optional)
- `glEntries` (list of glEntries_components-schemas-Base, optional)
- `reversals` (list of reversals_components-schemas-Base, optional)
- `transactions` (list of transactions_components-schemas-Base, optional)

## Types

### properties_components-schemas-Base

- `name` (string, optional)
- `shortName` (string, optional)
- `email` (string, optional)
- `phone` (string, optional)
- `physicalStreetAddress1` (string, optional)
- `physicalStreetAddress2` (string, optional)
- `physicalCity` (string, optional)
- `physicalState` (string, optional)
- `physicalZip` (string, optional)
- `physicalCountry` (string, optional)
- `mailingStreetAddress1` (string, optional)
- `mailingStreetAddress2` (string, optional)
- `mailingCity` (string, optional)
- `mailingState` (string, optional)
- `mailingZip` (string, optional)
- `mailingCountry` (string, optional)
- `phoneNumber` (string, optional)
- `faxNumber` (string, optional)
- `timezone` (string, optional)
- `longitude` (double, optional)
- `latitude` (double, optional)
- `turnMoveOutDays` (integer, optional) — Number of days after move-out to calculate make ready date
- `status` (enum, optional, nullable) — Property lifecycle status. Fortress aggregates occupancy only for ACTIVE properties.
  - Allowed values: `ACTIVE`, `INACTIVE`, `PENDING`
- `propertyClass` (enum, optional, nullable) — The property's class. Null for properties with no class assigned.
  - Allowed values: `Conventional`, `Affordable`, `Mixed`
- `organizationId` (string, optional)
- `id` (string, optional)
- `readableId` (string, optional)
- `idempotencyId` (string, optional)
- `createdAt` (datetime, optional)
- `updatedAt` (datetime, optional)
- `deletedAt` (datetime, optional)
- `offboardedAt` (datetime, optional)
- `countyName` (string, optional)
- `acquisitionDate` (datetime, optional)

### households_components-schemas-Base

- `status` (enum, optional)
  - Allowed values: `APPLICANT`, `RESIDENT`, `PRIOR`
- `isUnderEviction` (boolean, optional)
- `id` (string, optional)
- `readableId` (string, optional)
- `idempotencyId` (string, optional)
- `createdAt` (datetime, optional)
- `updatedAt` (datetime, optional)
- `deletedAt` (datetime, optional)
- `currentUnitId` (string, optional) — Current unit the household is associated with. Set only when the lease is active
- `currentLeaseId` (string, optional) — Current active lease for the household.
- `applicationId` (string, optional)
- `organizationId` (string, optional)
- `propertyId` (string, optional)
- `currentCertificationId` (string, optional)
- `prospectId` (string, optional)
- `primaryCustomerId` (string, optional)
- `totalActiveRentAmount` (double, optional) — Sum of all active RENT monthly lease transactions for the household
- `totalActiveSubsidyAmount` (double, optional) — Sum of all active SUBRENT monthly lease transactions for the household
- `totalActiveFeesAmount` (double, optional) — Sum of all active non-optional fee (charge) monthly lease transactions for the household
- `unitId` (string, optional, deprecated) — Deprecated, use currentUnitId instead

### attachments_components-schemas-Base

- `name` (string, required)
- `url` (string, required) — Storage reference for the file. It is not fetchable. Request a short-lived link from `GET /workOrders/{workOrderId}/attachments/{attachmentId}/downloadUrl`.
- `type` (enum, required)
  - Allowed values: `ISSUE`, `AFTER_SERVICE`
- `createdAt` (datetime, required)
- `updatedAt` (datetime, required)
- `workOrderId` (string, required)
- `propertyId` (string, required)
- `organizationId` (string, required)
- `notes` (string, optional)
- `id` (string, optional)
- `readableId` (string, optional)
- `idempotencyId` (string, optional)
- `deletedAt` (datetime, optional)
- `householdId` (string, optional)
- `customerId` (string, optional)

### workorders_components-schemas-Base

- `status` (enum, optional)
  - Allowed values: `OPEN`, `COMPLETED`, `CANCELED`, `ON_HOLD`, `IN_PROGRESS`
- `priority` (enum, optional)
  - Allowed values: `LOW`, `MEDIUM`, `HIGH`, `URGENT`, `WARRANTY`
- `hasPetAlert` (boolean, optional)
- `completedAt` (datetime, optional)
- `requestorPhone` (string, optional, nullable)
- `requestorEmail` (string, optional, nullable)
- `requestedStartDateFrom` (date, optional)
- `requestedStartDateTo` (date, optional)
- `requestedStartTimeFrom` (string, optional)
- `requestedStartTimeTo` (string, optional)
- `dueDate` (date, optional)
- `description` (string, optional)
- `serviceNotes` (string, optional)
- `vendorNotes` (string, optional)
- `entryNotes` (string, optional)
- `entryPreference` (enum, optional)
  - Allowed values: `24_HOUR_NOTICE`, `BY_APPOINTMENT`, `CALL_FIRST`, `NO_PREFERENCE`, `ANYTIME`
- `isDoorCodeActive` (boolean, optional)
- `isAlarmActive` (boolean, optional)
- `doorCode` (string, optional)
- `alarmCode` (string, optional)
- `holdReason` (string, optional)
- `otherLocationDetail` (string, optional)
- `attachmentIds` (string, optional)
- `technicianNotes` (string, optional) — Notes to the technician.
- `previouslyReported` (boolean, optional) — If the Issue was previously reported, this will be true.
- `id` (string, optional)
- `readableId` (string, optional)
- `idempotencyId` (string, optional)
- `createdAt` (string, optional)
- `updatedAt` (datetime, optional)
- `deletedAt` (datetime, optional)
- `assignedUserId` (string, optional)
- `householdId` (string, optional)
- `customerId` (string, optional)
- `unitId` (string, optional)
- `maintenanceIssueId` (string, optional)
- `maintenanceLocationId` (string, optional)
- `propertyId` (string, optional)
- `organizationId` (string, optional)
- `totalCostOfMaterialsUsed` (double, optional) — The total cost of materials used.
- `totalAmountOwedByResident` (double, optional) — The total amount owed by the resident.
- `totalAmountOwedByProperty` (double, optional) — The total amount owed by the property.
- `hourlyServiceRate` (double, optional) — The hourly service rate.
- `totalLaborCost` (double, optional) — The total labor cost.

### assets_components-schemas-Base

- `customerId` (string, required)
- `type` (enum, optional)
  - Allowed values: `CASH`, `ACCOUNT_CHECKING`, `ACCOUNT_SAVINGS`, `CARD`, `COD`, `TRUST`, `TREASURY_MMF`, `SECURITY_STOCK`, `SECURITY_BOND`, `RETIREMENT_PLAN`, `LIFE_INSURANCE`, `SOLD_ASSET`, `PERSONAL_PROPERTY`, `REAL_ESTATE`, `OTHER`
- `marketValue` (float, optional) — Balance or market value as entered on the asset checklist. For real estate the applicant rents out it is the yearly rent received; for SOLD_ASSET it is the market value minus the sale price.
- `interestRate` (float, optional) — Interest rate as entered, in percent (`1.5` is 1.5%).
- `cashConversionFee` (float, optional)
- `category` (enum, optional) — The asset checklist entry the asset was reported under. It tells apart assets that share a `type`: `stocksOrBonds` (`SECURITY_STOCK`; the checklist does not separate stocks from bonds), `ira`, `pension`, `keogh`, `k401` and `otherRetirementAccount` (`RETIREMENT_PLAN`), `realEstate` and `rentalProperty` (`REAL_ESTATE`), `other` and `federalTaxRefundOrCredit` (`OTHER`).
  - Allowed values: `cashHeld`, `checkingAccount`, `savingsAccount`, `payCard`, `certificateOfDeposit`, `trustAccount`, `treasuryMoneyMarketFund`, `stocksOrBonds`, `ira`, `pension`, `keogh`, `k401`, `otherRetirementAccount`, `lifeInsurance`, `realEstate`, `rentalProperty`, `investmentProperties`, `other`, `federalTaxRefundOrCredit`, `disposed`
- `cashValue` (float, optional) — Value after the cost to convert the asset to cash (`marketValue` minus `cashConversionFee`, as entered).
- `disposedDate` (date, optional) — Date the asset was disposed of. Only on `SOLD_ASSET`.
- `disposedAmount` (float, optional) — Amount disposed of for less than fair market value. Only on `SOLD_ASSET`.
- `propertyAddress` (string, optional) — Address of a real estate asset. Not populated yet; always null.
- `mortgageBalance` (float, optional) — Unpaid mortgage balance of a real estate asset. Not populated yet; always null. The checklist folds the mortgage into `cashConversionFee`.
- `rentReceived` (float, optional) — Monthly rent received from a real estate asset. Always null; for rented real estate the yearly rent is in marketValue.
- `description` (string, optional) — Free-text name of the asset where the checklist has one: the account type for retirement plans (`IRA`, `Pension`, `Keogh`, `401(k)` or the name entered for another plan), and the name or type entered for personal property and other assets.
- `listTruncated` (boolean, optional, nullable) — `true` when the checklist list this asset comes from holds more items than the API returns. Each list is returned up to a fixed number of items: 2 for `other` and 1 for every other list. Set on every asset read from a list: `true` when the list holds more, `false` when it ends within the cap. Null on assets not read from a list (cash held, sold assets, legacy-form entries).
- `id` (string, optional)
- `readableId` (string, optional)
- `idempotencyId` (string, optional)
- `createdAt` (datetime, optional)
- `updatedAt` (datetime, optional)
- `deletedAt` (datetime, optional)
- `applicantId` (string, optional) — The applicant (household member on the application) who reported the asset.
- `applicationId` (string, optional)
- `certificationId` (string, optional) — The certification whose asset checklist holds the asset. A customer has one checklist per certification, so the same asset can appear once per certification; filter on this field to read one certification's assets. Empty for assets reported on an application before it had a certification; read those by applicationId.
- `householdId` (string, optional)
- `propertyId` (string, optional)
- `organizationId` (string, optional)

### glEntries_components-schemas-Base

- `amount` (double, optional)
- `note` (string, optional)
- `date` (datetime, optional)
- `creditAmount` (double, optional)
- `debitAmount` (double, optional)
- `accountNumber` (string, optional)
- `fiscalPeriod` (string, optional)
- `id` (string, optional)
- `readableId` (string, optional)
- `idempotencyId` (string, optional)
- `createdAt` (datetime, optional)
- `updatedAt` (datetime, optional)
- `deletedAt` (datetime, optional)
- `householdId` (string, optional)
- `customerId` (string, optional)
- `propertyId` (string, optional)
- `organizationId` (string, optional)
- `transactionId` (string, optional)

### reversals_components-schemas-Base

- `amount` (double, required)
- `method` (string, required)
- `householdId` (string, required)
- `customerId` (string, required)
- `date` (datetime, optional)
- `note` (string, optional)
- `id` (string, optional)
- `readableId` (string, optional)
- `idempotencyId` (string, optional)
- `createdAt` (datetime, optional)
- `updatedAt` (datetime, optional)
- `deletedAt` (datetime, optional)
- `transactionId` (string, optional)
- `organizationId` (string, optional)

### transactions_components-schemas-Base

- `id` (string, optional)
- `readableId` (string, optional) — The readable ID for the transaction
- `customerId` (string, optional) — The ID of the customer associated with the transaction
- `householdId` (string, optional) — The ID of the household associated with the transaction
- `propertyId` (string, optional) — The ID of the property associated with the transaction
- `organizationId` (string, optional) — The ID of the organization associated with the transaction
- `depositId` (string, optional) — The ID of the deposit associated with the transaction
- `date` (datetime, optional)
- `amount` (double, optional)
- `note` (string, optional) — Notes about the transaction
- `code` (string, optional) — The code for the transaction
- `subjournal` (enum, optional) — The subjournal for the transaction
  - Allowed values: `RESIDENT`, `SUBSIDY`
- `ledger` (enum, optional) — The ledger for the transaction
  - Allowed values: `RESIDENT`, `SECURITY`
- `fiscalPeriod` (string, optional) — The fiscal period for the transaction
- `isPaid` (boolean, optional) — Whether the transaction is paid
- `type` (enum, optional) — The type of the transaction
  - Allowed values: `CREDIT`, `CHARGE`, `PAYMENT`, `RECONCILIATION`, `OTHER`, `SECURITY_CHARGE`, `SECURITY_PAYMENT`, `MISC_CHARGE`, `SECURITY_CREDIT`
- `reversedTransactionId` (string, optional) — The ID of the reversed transaction
- `runningBalanceAmount` (double, optional) — The running balance amount after the transaction
- `paymentDate` (datetime, optional) — The date the charge was paid
- `createdAt` (datetime, optional)
- `updatedAt` (datetime, optional)
- `deletedAt` (datetime, optional)

## Examples

**Response**

```json
{
  "firstName": "string",
  "middleName": "string",
  "lastName": "string",
  "preferredName": "string",
  "suffix": "string",
  "birthDate": "2023-01-15",
  "status": "APPLICANT",
  "email": "string",
  "phone": "string",
  "gender": "string",
  "headOfHousehold": true,
  "relationship": "PARTNER",
  "passportNumberLastFour": "string",
  "passportCountry": "string",
  "alienRegistrationNumberLastFour": "string",
  "citizenshipStatus": "string",
  "maritalStatus": "string",
  "spouseName": "string",
  "studentType": "string",
  "currentAddressStreet": "string",
  "currentAddressStreet2": "string",
  "currentAddressCity": "string",
  "currentAddressState": "string",
  "currentAddressZipCode": "string",
  "lenderName": "string",
  "id": "string",
  "readableId": "string",
  "idempotencyId": "string",
  "createdAt": "2024-01-15T09:30:00Z",
  "updatedAt": "2024-01-15T09:30:00Z",
  "deletedAt": "2024-01-15T09:30:00Z",
  "householdId": "string",
  "propertyId": "string",
  "organizationId": "string",
  "property": {
    "name": "string",
    "shortName": "string",
    "email": "string",
    "phone": "string",
    "physicalStreetAddress1": "string",
    "physicalStreetAddress2": "string",
    "physicalCity": "string",
    "physicalState": "string",
    "physicalZip": "string",
    "physicalCountry": "string",
    "mailingStreetAddress1": "string",
    "mailingStreetAddress2": "string",
    "mailingCity": "string",
    "mailingState": "string",
    "mailingZip": "string",
    "mailingCountry": "string",
    "phoneNumber": "string",
    "faxNumber": "string",
    "timezone": "string",
    "longitude": 1.1,
    "latitude": 1.1,
    "turnMoveOutDays": 1,
    "status": "ACTIVE",
    "propertyClass": "Conventional",
    "organizationId": "string",
    "id": "string",
    "readableId": "string",
    "idempotencyId": "string",
    "createdAt": "2024-01-15T09:30:00Z",
    "updatedAt": "2024-01-15T09:30:00Z",
    "deletedAt": "2024-01-15T09:30:00Z",
    "offboardedAt": "2024-01-15T09:30:00Z",
    "countyName": "string",
    "acquisitionDate": "2024-01-15T09:30:00Z"
  },
  "household": {
    "status": "APPLICANT",
    "isUnderEviction": true,
    "id": "string",
    "readableId": "string",
    "idempotencyId": "string",
    "createdAt": "2024-01-15T09:30:00Z",
    "updatedAt": "2024-01-15T09:30:00Z",
    "deletedAt": "2024-01-15T09:30:00Z",
    "currentUnitId": "string",
    "currentLeaseId": "string",
    "applicationId": "string",
    "organizationId": "string",
    "propertyId": "string",
    "currentCertificationId": "string",
    "prospectId": "string",
    "primaryCustomerId": "string",
    "totalActiveRentAmount": 1.1,
    "totalActiveSubsidyAmount": 1.1,
    "totalActiveFeesAmount": 1.1,
    "unitId": "string"
  },
  "attachments": [
    {
      "name": "string",
      "url": "string",
      "type": "ISSUE",
      "createdAt": "2024-01-15T09:30:00Z",
      "updatedAt": "2024-01-15T09:30:00Z",
      "workOrderId": "string",
      "propertyId": "string",
      "organizationId": "string",
      "notes": "string",
      "id": "string",
      "readableId": "string",
      "idempotencyId": "string",
      "deletedAt": "2024-01-15T09:30:00Z",
      "householdId": "string",
      "customerId": "string"
    }
  ],
  "workOrders": [
    {
      "status": "OPEN",
      "priority": "LOW",
      "hasPetAlert": true,
      "completedAt": "2024-01-15T09:30:00Z",
      "requestorPhone": "string",
      "requestorEmail": "string",
      "requestedStartDateFrom": "2023-01-15",
      "requestedStartDateTo": "2023-01-15",
      "requestedStartTimeFrom": "string",
      "requestedStartTimeTo": "string",
      "dueDate": "2023-01-15",
      "description": "string",
      "serviceNotes": "string",
      "vendorNotes": "string",
      "entryNotes": "string",
      "entryPreference": "24_HOUR_NOTICE",
      "isDoorCodeActive": true,
      "isAlarmActive": true,
      "doorCode": "string",
      "alarmCode": "string",
      "holdReason": "string",
      "otherLocationDetail": "string",
      "attachmentIds": "string",
      "technicianNotes": "string",
      "previouslyReported": true,
      "id": "string",
      "readableId": "string",
      "idempotencyId": "string",
      "createdAt": "string",
      "updatedAt": "2024-01-15T09:30:00Z",
      "deletedAt": "2024-01-15T09:30:00Z",
      "assignedUserId": "string",
      "householdId": "string",
      "customerId": "string",
      "unitId": "string",
      "maintenanceIssueId": "string",
      "maintenanceLocationId": "string",
      "propertyId": "string",
      "organizationId": "string",
      "totalCostOfMaterialsUsed": 1.1,
      "totalAmountOwedByResident": 1.1,
      "totalAmountOwedByProperty": 1.1,
      "hourlyServiceRate": 1.1,
      "totalLaborCost": 1.1
    }
  ],
  "assets": [
    {
      "customerId": "string",
      "type": "CASH",
      "marketValue": 1.1,
      "interestRate": 1.1,
      "cashConversionFee": 1.1,
      "category": "cashHeld",
      "cashValue": 1.1,
      "disposedDate": "2023-01-15",
      "disposedAmount": 1.1,
      "propertyAddress": "string",
      "mortgageBalance": 1.1,
      "rentReceived": 1.1,
      "description": "string",
      "listTruncated": true,
      "id": "string",
      "readableId": "string",
      "idempotencyId": "string",
      "createdAt": "2024-01-15T09:30:00Z",
      "updatedAt": "2024-01-15T09:30:00Z",
      "deletedAt": "2024-01-15T09:30:00Z",
      "applicantId": "string",
      "applicationId": "string",
      "certificationId": "string",
      "householdId": "string",
      "propertyId": "string",
      "organizationId": "string"
    }
  ],
  "glEntries": [
    {
      "amount": 1.1,
      "note": "string",
      "date": "2024-01-15T09:30:00Z",
      "creditAmount": 1.1,
      "debitAmount": 1.1,
      "accountNumber": "string",
      "fiscalPeriod": "string",
      "id": "string",
      "readableId": "string",
      "idempotencyId": "string",
      "createdAt": "2024-01-15T09:30:00Z",
      "updatedAt": "2024-01-15T09:30:00Z",
      "deletedAt": "2024-01-15T09:30:00Z",
      "householdId": "string",
      "customerId": "string",
      "propertyId": "string",
      "organizationId": "string",
      "transactionId": "string"
    }
  ],
  "reversals": [
    {
      "amount": 1.1,
      "method": "string",
      "householdId": "string",
      "customerId": "string",
      "date": "2024-01-15T09:30:00Z",
      "note": "string",
      "id": "string",
      "readableId": "string",
      "idempotencyId": "string",
      "createdAt": "2024-01-15T09:30:00Z",
      "updatedAt": "2024-01-15T09:30:00Z",
      "deletedAt": "2024-01-15T09:30:00Z",
      "transactionId": "string",
      "organizationId": "string"
    }
  ],
  "transactions": [
    {
      "id": "string",
      "readableId": "string",
      "customerId": "string",
      "householdId": "string",
      "propertyId": "string",
      "organizationId": "string",
      "depositId": "string",
      "date": "2024-01-15T09:30:00Z",
      "amount": 1.1,
      "note": "string",
      "code": "string",
      "subjournal": "RESIDENT",
      "ledger": "RESIDENT",
      "fiscalPeriod": "string",
      "isPaid": true,
      "type": "CREDIT",
      "reversedTransactionId": "string",
      "runningBalanceAmount": 1.1,
      "paymentDate": "2024-01-15T09:30:00Z",
      "createdAt": "2024-01-15T09:30:00Z",
      "updatedAt": "2024-01-15T09:30:00Z",
      "deletedAt": "2024-01-15T09:30:00Z"
    }
  ]
}
```

**SDK Code**

```python
import requests

url = "https://api.fortresstech.io/v1/customers"

headers = {"x-api-key": "<apiKey>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.fortresstech.io/v1/customers';
const options = {method: 'GET', headers: {'x-api-key': '<apiKey>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.fortresstech.io/v1/customers"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("x-api-key", "<apiKey>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.fortresstech.io/v1/customers")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<apiKey>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.fortresstech.io/v1/customers")
  .header("x-api-key", "<apiKey>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.fortresstech.io/v1/customers', [
  'headers' => [
    'x-api-key' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.fortresstech.io/v1/customers");
var request = new RestRequest(Method.GET);
request.AddHeader("x-api-key", "<apiKey>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["x-api-key": "<apiKey>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.fortresstech.io/v1/customers")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```