> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fyatu.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List Programs

> List the card programs associated with your business. GET /programs. Requires programs:read scope.

## Overview

Returns all card programs associated with your business in the current environment. A **Card Program** defines the contractual terms and limits negotiated between your business and FYATU — including supported card brand, currency, spending limits, and balance thresholds.

Programs are created and configured by the FYATU team. This endpoint lets you read your program configuration via the API.

## Query Parameters

| Parameter | Type    | Default | Description                                    |
| --------- | ------- | ------- | ---------------------------------------------- |
| `limit`   | integer | 20      | Results per page (max 100)                     |
| `offset`  | integer | 0       | Number of records to skip                      |
| `status`  | string  | —       | Filter by status: `ACTIVE`, `PAUSED`, `CLOSED` |

## Example

<CodeGroup>
  ```bash cURL theme={null}
  curl https://api.fyatu.com/api/v3.20/programs \
    -H "Authorization: Bearer $FYATU_API_KEY"
  ```

  ```javascript Node.js theme={null}
  const resp = await fetch('https://api.fyatu.com/api/v3.20/programs', {
    headers: { 'Authorization': `Bearer ${process.env.FYATU_API_KEY}` }
  });
  const body = await resp.json();
  for (const prog of body.data) {
    console.log(prog.programId, prog.name, prog.status);
    console.log('Cards:', prog.stats.totalCards);
  }
  ```

  ```python Python theme={null}
  import os, requests

  resp = requests.get(
      'https://api.fyatu.com/api/v3.20/programs',
      headers={'Authorization': f'Bearer {os.environ["FYATU_API_KEY"]}'}
  )
  body = resp.json()
  for prog in body['data']:
      print(prog['programId'], prog['name'], prog['status'])
      print('Cards:', prog['stats']['totalCards'])
  ```
</CodeGroup>

## Success Response (200)

```json theme={null}
{
  "success": true,
  "status":  200,
  "message": "Programs retrieved",
  "data": [
    {
      "programId":   "prg_01HXYZ9876ABCDEF0000",
      "name":        "Fyatu VISA USD",
      "description": "Main USD virtual card program",
      "cardType":    "VIRTUAL",
      "cardBrand":   "VISA",
      "currency":    "USD",
      "status":      "ACTIVE",
      "environment": "LIVE",
      "limits": {
        "spendingLimitPerCard": {
          "cents":        500000,
          "displayValue": "5000.00"
        },
        "monthlySpendingLimit": {
          "cents":        1000000,
          "displayValue": "10000.00"
        },
        "maxCardLoad": {
          "cents":        100000,
          "displayValue": "1000.00"
        },
        "maxCardUnload": {
          "cents":        100000,
          "displayValue": "1000.00"
        }
      },
      "lowBalanceThreshold": {
        "cents":        10000,
        "displayValue": "100.00"
      },
      "stats": {
        "totalCards":        142,
        "totalCardholders":  38,
        "totalTransactions": 1204,
        "totalSpend": {
          "cents":        842500,
          "displayValue": "8425.00"
        }
      },
      "kycMode":     "MANAGED",
      "activatedAt": "2026-01-15T10:00:00Z",
      "pausedAt":    null,
      "closedAt":    null,
      "createdAt":   "2026-01-10T09:00:00Z",
      "updatedAt":   "2026-05-22T14:30:00Z"
    }
  ],
  "pagination": {
    "total":   1,
    "limit":   20,
    "offset":  0,
    "hasMore": false
  },
  "meta": {
    "requestId":  "req_01HXY123456ABCDEF",
    "platform": "Fyatu CaaS",
    "timestamp":  "2026-05-22T15:00:00Z"
  }
}
```

## Field Reference

| Field                         | Description                                                                                                                                                                |
| ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `programId`                   | Unique program identifier (prefix `prg_`)                                                                                                                                  |
| `cardType`                    | Always `VIRTUAL`                                                                                                                                                           |
| `cardBrand`                   | `VISA` or `MASTERCARD`                                                                                                                                                     |
| `currency`                    | ISO 4217 currency code for cards issued under this program                                                                                                                 |
| `status`                      | `ACTIVE`, `PAUSED`, or `CLOSED`                                                                                                                                            |
| `limits.spendingLimitPerCard` | Maximum lifetime spend allowed per card                                                                                                                                    |
| `limits.monthlySpendingLimit` | Maximum spend across all cards in a calendar month                                                                                                                         |
| `limits.maxCardLoad`          | Maximum single load amount per card (`null` = unlimited)                                                                                                                   |
| `limits.maxCardUnload`        | Maximum single unload amount per card (`null` = unlimited)                                                                                                                 |
| `lowBalanceThreshold`         | Program ledger balance that triggers a `PROGRAM_BALANCE_LOW` webhook event                                                                                                 |
| `stats.totalCards`            | Total number of cards ever issued under this program                                                                                                                       |
| `stats.totalCardholders`      | Total number of unique cardholders                                                                                                                                         |
| `stats.totalTransactions`     | Total number of transactions processed                                                                                                                                     |
| `stats.totalSpend`            | Cumulative spend across all cards                                                                                                                                          |
| `kycMode`                     | KYC verification mode for cardholders: `MANAGED` (Fyatu-managed async KYC), `SHARED` (your pre-verified docs, instant `APPROVED`), or `MINIMAL` (no KYC, instant `WAIVED`) |
| `activatedAt`                 | When the program was activated; `null` if not yet active                                                                                                                   |
| `pausedAt`                    | When the program was last paused; `null` if never paused                                                                                                                   |
| `closedAt`                    | When the program was closed; `null` if not closed                                                                                                                          |

<Note>
  Most businesses have one active program per environment. Multiple programs may exist if your business has separate agreements for different card brands or currencies.
</Note>

## Error Codes

| Code                 | HTTP | Cause                           |
| -------------------- | ---- | ------------------------------- |
| `INSUFFICIENT_SCOPE` | 403  | Key lacks `programs:read` scope |


## OpenAPI

````yaml v3.20/openapi.json GET /programs
openapi: 3.1.0
info:
  title: FYATU CaaS API v3.20
  description: >-
    FYATU Cards-as-a-Service API â€” API key authentication, Cardholder
    lifecycle, Card issuance, Transactions, Webhooks, and Programs.
  version: 3.20.0
  contact:
    name: FYATU Support
    url: https://fyatu.com
    email: support@fyatu.com
servers:
  - url: https://api.fyatu.com/api/v3.20
    description: >-
      FYATU CaaS API â€” the environment (LIVE or SANDBOX) is determined by the
      API key, not the URL
security:
  - BearerAuth: []
tags:
  - name: Meta
    description: Liveness, account info, and supported event types
  - name: Account
    description: Account-level balance and funding status
  - name: Programs
    description: Read card program configuration
  - name: Cardholders
    description: Create and manage cardholder profiles
  - name: Cards
    description: Issue, fund, freeze, and terminate virtual cards
  - name: Transactions
    description: Read-only card transaction history
  - name: Webhooks
    description: Manage webhook endpoints for real-time event delivery
  - name: Products
    description: Read card product configurations
paths:
  /programs:
    get:
      tags:
        - Programs
      summary: List programs
      description: >-
        Returns all card programs for your business in the current environment.
        Most businesses have one active program.
      operationId: listPrograms
      parameters:
        - name: limit
          in: query
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 20
        - name: offset
          in: query
          schema:
            type: integer
            minimum: 0
            default: 0
        - name: status
          in: query
          schema:
            type: string
            enum:
              - ACTIVE
              - PAUSED
              - CLOSED
          description: Filter by status
      responses:
        '200':
          description: Programs retrieved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProgramListResponse'
              example:
                success: true
                status: 200
                message: Programs retrieved
                data:
                  - programId: prg_01HXYZ9876ABCDEF0000
                    name: Fyatu VISA USD
                    description: Main USD virtual card program
                    cardType: VIRTUAL
                    cardBrand: VISA
                    currency: USD
                    status: ACTIVE
                    environment: LIVE
                    limits:
                      spendingLimitPerCard:
                        cents: 500000
                        displayValue: '5000.00'
                      monthlySpendingLimit:
                        cents: 1000000
                        displayValue: '10000.00'
                      maxCardLoad:
                        cents: 100000
                        displayValue: '1000.00'
                      maxCardUnload:
                        cents: 100000
                        displayValue: '1000.00'
                    lowBalanceThreshold:
                      cents: 10000
                      displayValue: '100.00'
                    stats:
                      totalCards: 142
                      totalCardholders: 38
                      totalTransactions: 1204
                      totalSpend:
                        cents: 842500
                        displayValue: '8425.00'
                    activatedAt: '2026-01-15T10:00:00Z'
                    pausedAt: null
                    closedAt: null
                    createdAt: '2026-01-10T09:00:00Z'
                    updatedAt: '2026-05-22T14:30:00Z'
                pagination:
                  total: 1
                  limit: 20
                  offset: 0
                  hasMore: false
                meta:
                  requestId: req_a1b2c3d4e5f6a7b8c9d0e1f2
                  platform: Fyatu CaaS
                  timestamp: '2026-05-22T15:00:00Z'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
        '500':
          $ref: '#/components/responses/InternalError'
components:
  schemas:
    ProgramListResponse:
      type: object
      properties:
        success:
          type: boolean
          example: true
        status:
          type: integer
          example: 200
        message:
          type: string
          example: Programs retrieved
        data:
          type: array
          items:
            $ref: '#/components/schemas/Program'
        pagination:
          $ref: '#/components/schemas/Pagination'
        meta:
          $ref: '#/components/schemas/Meta'
    Program:
      type: object
      properties:
        programId:
          type: string
          example: prg_01HXYZ9876ABCDEF0000
        name:
          type: string
          example: Fyatu VISA USD
        description:
          type: string
          nullable: true
          example: Main USD virtual card program
        cardType:
          type: string
          enum:
            - VIRTUAL
          example: VIRTUAL
        cardBrand:
          type: string
          enum:
            - VISA
            - MASTERCARD
          example: VISA
        currency:
          type: string
          example: USD
        status:
          type: string
          enum:
            - ACTIVE
            - PAUSED
            - CLOSED
          example: ACTIVE
        environment:
          type: string
          enum:
            - LIVE
            - SANDBOX
          example: LIVE
        limits:
          $ref: '#/components/schemas/ProgramLimits'
        lowBalanceThreshold:
          type: object
          properties:
            cents:
              type: integer
              format: int64
              example: 10000
            displayValue:
              type: string
              example: '100.00'
        stats:
          type: object
          properties:
            totalCards:
              type: integer
              example: 142
            totalCardholders:
              type: integer
              example: 38
            totalTransactions:
              type: integer
              example: 1204
            totalSpend:
              type: object
              properties:
                cents:
                  type: integer
                  format: int64
                  example: 842500
                displayValue:
                  type: string
                  example: '8425.00'
        activatedAt:
          type: string
          format: date-time
          nullable: true
          example: '2026-01-15T10:00:00Z'
        pausedAt:
          type: string
          format: date-time
          nullable: true
          example: null
        closedAt:
          type: string
          format: date-time
          nullable: true
          example: null
        createdAt:
          type: string
          format: date-time
          example: '2026-01-10T09:00:00Z'
        updatedAt:
          type: string
          format: date-time
          example: '2026-05-22T14:30:00Z'
    Pagination:
      type: object
      properties:
        total:
          type: integer
          example: 47
        limit:
          type: integer
          example: 20
        offset:
          type: integer
          example: 0
        hasMore:
          type: boolean
          example: true
    Meta:
      type: object
      properties:
        requestId:
          type: string
          example: req_a1b2c3d4e5f6a7b8c9d0e1f2
        platform:
          type: string
          example: Fyatu CaaS
        timestamp:
          type: string
          format: date-time
          example: '2026-05-22T15:00:00Z'
    Error:
      type: object
      properties:
        success:
          type: boolean
          example: false
        status:
          type: integer
          example: 422
        message:
          type: string
          example: Human readable message
        error:
          $ref: '#/components/schemas/ErrorBody'
        meta:
          $ref: '#/components/schemas/Meta'
    ProgramLimits:
      type: object
      properties:
        spendingLimitPerCard:
          type: object
          properties:
            cents:
              type: integer
              format: int64
              example: 500000
            displayValue:
              type: string
              example: '5000.00'
        monthlySpendingLimit:
          type: object
          properties:
            cents:
              type: integer
              format: int64
              example: 1000000
            displayValue:
              type: string
              example: '10000.00'
        maxCardLoad:
          type: object
          nullable: true
          properties:
            cents:
              type: integer
              format: int64
              example: 100000
            displayValue:
              type: string
              example: '1000.00'
        maxCardUnload:
          type: object
          nullable: true
          properties:
            cents:
              type: integer
              format: int64
              example: 100000
            displayValue:
              type: string
              example: '1000.00'
    ErrorBody:
      type: object
      properties:
        code:
          type: string
          example: VALIDATION_ERROR
        detail:
          type: string
          example: dateOfBirth must be in YYYY-MM-DD format
  responses:
    Unauthorized:
      description: Missing or invalid API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            missing:
              summary: API key missing
              value:
                success: false
                status: 401
                message: API key is required
                error:
                  code: AUTH_TOKEN_MISSING
                  detail: API key is required
                meta:
                  requestId: req_a1b2c3d4e5f6a7b8c9d0e1f2
                  platform: Fyatu CaaS
                  timestamp: '2026-05-22T15:00:00Z'
            invalid:
              summary: API key invalid
              value:
                success: false
                status: 401
                message: Invalid API key
                error:
                  code: AUTH_TOKEN_INVALID
                  detail: Invalid API key
                meta:
                  requestId: req_a1b2c3d4e5f6a7b8c9d0e1f2
                  platform: Fyatu CaaS
                  timestamp: '2026-05-22T15:00:00Z'
    Forbidden:
      description: Scope denied or business suspended
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            success: false
            status: 403
            message: Scope denied
            error:
              code: INSUFFICIENT_SCOPE
              detail: This endpoint requires the cards:write scope
            meta:
              requestId: req_a1b2c3d4e5f6a7b8c9d0e1f2
              platform: Fyatu CaaS
              timestamp: '2026-05-22T15:00:00Z'
    RateLimitExceeded:
      description: Rate limit exceeded
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            success: false
            status: 429
            message: Rate limit exceeded
            error:
              code: RATE_LIMIT_EXCEEDED
              detail: Too many requests
            meta:
              requestId: req_a1b2c3d4e5f6a7b8c9d0e1f2
              platform: Fyatu CaaS
              timestamp: '2026-05-22T15:00:00Z'
    InternalError:
      description: Unexpected server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            success: false
            status: 500
            message: Internal error
            error:
              code: INTERNAL_ERROR
              detail: An unexpected error occurred
            meta:
              requestId: req_a1b2c3d4e5f6a7b8c9d0e1f2
              platform: Fyatu CaaS
              timestamp: '2026-05-22T15:00:00Z'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        API key from the FYATU CaaS portal. Pass as `Authorization: Bearer
        <key>`.

````