> ## Documentation Index
> Fetch the complete documentation index at: https://direct-api.reap.global/llms.txt
> Use this file to discover all available pages before exploring further.

# List account activities

> Required API-key scope: `card_activities:read`.



## OpenAPI

````yaml /openapi/2026-07-13.json get /2026-07-13/activities
openapi: 3.1.0
info:
  title: Reap Direct API
  description: >

    # Introduction


    The Reap Direct API gives you programmatic access to Reap Direct: issue and

    manage cards, control spend and resolve team members from your own systems.


    ## Quickstart


    1. Ask a team administrator to create an API key from the Reap dashboard.

    2. Make your first request:


    ```bash

    curl https://api.global.direct.reap.global/2026-07-13/cards \
      -H "x-api-key: <your-api-key>"
    ```


    ## Authentication


    Every request is authenticated with an API key sent in the `x-api-key`

    header. Keys are issued per business and carry scopes that limit which

    endpoints they can call: requests without a valid key receive `401`;

    requests with a valid key but insufficient scope receive `403`.


    ## Response schemas


    A response property marked `required` is always present in that response.

    This is separate from nullability: a required property may still contain

    `null` when its schema is nullable.


    ## Versioning


    The API is versioned with dates in the URL: `/2026-07-13/cards`. Pin

    one version in your integration and every endpoint keeps its behavior on
    that

    date while it is supported.


    - New dates are published only when breaking changes ship; additive changes
      (new optional fields, new endpoints) appear on all supported dates.
    - Each date remains supported for at least 12 months after its successor is
      published; deprecation and sunset dates are announced before retirement.
    - Supported versions: 2026-07-13. Requests to an
      unknown version return `404` with an error listing the supported versions.


    ## Errors


    All errors share a single JSON envelope:


    ```json

    {
      "statusCode": 400,
      "type": "INVALID_REQUEST_ERROR",
      "code": "SPEND_CAP_TOO_LOW",
      "message": "Spend cap cannot be lower than the amount already spent on this card.",
      "param": "spendCap",
      "requestId": "01H..."
    }

    ```


    - `statusCode` — HTTP status, duplicated in the body.

    - `type` — coarse category, **always present**. Branch on this for
    retry/re-auth decisions.

    - `code` — stable, machine-readable identifier. Present only for
    programmatically-actionable errors.

    - `message` — human-readable explanation, safe to surface to users.

    - `param` — offending field for validation errors (optional).

    - `details` — structured extra context such as validation issues (optional).

    - `requestId` — correlation id; include it when contacting support
    (optional).


    The specific error codes each endpoint can return are documented on that

    endpoint's responses below.


    ### Error types


    | Type | Description |

    | --- | --- |

    | `INVALID_REQUEST_ERROR` | The request was rejected due to invalid input, a
    missing resource, or a business-rule violation (HTTP 400/404/409/422). |

    | `AUTHENTICATION_ERROR` | Authentication is missing or invalid (HTTP 401).
    |

    | `PERMISSION_ERROR` | The caller is authenticated but not permitted to
    perform the action (HTTP 403). |

    | `RATE_LIMIT_ERROR` | Too many requests; retry after a delay (HTTP 429). |

    | `API_ERROR` | An unexpected error occurred on our side (HTTP 5xx). |

    | `UPSTREAM_ERROR` | An upstream service returned an error (HTTP 502/503). |
  version: '2026-07-13'
  contact: {}
servers:
  - url: https://api.global.direct.reap.global
security: []
tags: []
paths:
  /2026-07-13/activities:
    get:
      tags:
        - Activities
      summary: List account activities
      description: 'Required API-key scope: `card_activities:read`.'
      operationId: listActivities
      parameters:
        - name: page
          required: false
          in: query
          schema:
            minimum: 1
            maximum: 9007199254740991
            type: integer
        - name: limit
          required: false
          in: query
          schema:
            minimum: 1
            maximum: 100
            type: integer
        - name: type
          required: false
          in: query
          description: Activity type to return.
          schema:
            type: string
            enum:
              - CHARGE
              - REPAYMENT
              - ADJUSTMENT
              - REBATE
              - INTEREST
        - name: status
          required: false
          in: query
          description: Charge status to return. This filter only matches charges.
          schema:
            type: string
            enum:
              - PENDING
              - CLEARED
              - DECLINED
              - VOIDED
        - name: cardId
          required: false
          in: query
          description: Card identifier to filter by.
          schema:
            format: uuid
            pattern: >-
              ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
            type: string
        - name: from
          required: false
          in: query
          description: First createdAt date to include, as an inclusive UTC calendar date.
          schema:
            type: string
            format: date
            pattern: >-
              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
        - name: to
          required: false
          in: query
          description: Last createdAt date to include, as an inclusive UTC calendar date.
          schema:
            type: string
            format: date
            pattern: >-
              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivityList'
              examples:
                activities:
                  summary: Account activities
                  value:
                    items:
                      - id: txn_00000000-0000-0000-0000-00000000f001
                        type: CHARGE
                        status: CLEARED
                        createdAt: '2026-07-13T08:00:00.000Z'
                        clearedAt: '2026-07-14T08:00:00.000Z'
                        isCredit: false
                        billAmount:
                          amount: '100.00'
                          currency: USD
                        transactionAmount:
                          amount: '100.00'
                          currency: USD
                        conversionRate: '1'
                        merchant: Example merchant
                        card:
                          id: 3db05d6f-97a9-4c06-a578-087b14b4f859
                          title: Travel card
                          last4: '4242'
                        category:
                          id: d022bf27-0f9c-457a-a06f-d8e301f6944b
                          name: Travel
                        note: null
                        hasReceipt: true
                    meta:
                      totalItems: 1
                      itemCount: 1
                      itemsPerPage: 20
                      totalPages: 1
                      currentPage: 1
        '400':
          description: '`BAD_REQUEST`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                BAD_REQUEST:
                  summary: BAD_REQUEST
                  value:
                    statusCode: 400
                    type: INVALID_REQUEST_ERROR
                    message: Bad request.
        '401':
          description: '`UNAUTHORIZED`, `AUTH_CREDENTIAL_MISSING`, `API_KEY_INVALID`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                UNAUTHORIZED:
                  summary: UNAUTHORIZED
                  value:
                    statusCode: 401
                    type: AUTHENTICATION_ERROR
                    message: Authentication required.
                AUTH_CREDENTIAL_MISSING:
                  summary: AUTH_CREDENTIAL_MISSING
                  value:
                    statusCode: 401
                    type: AUTHENTICATION_ERROR
                    code: AUTH_CREDENTIAL_MISSING
                    message: Authentication is required.
                API_KEY_INVALID:
                  summary: API_KEY_INVALID
                  value:
                    statusCode: 401
                    type: AUTHENTICATION_ERROR
                    code: API_KEY_INVALID
                    message: API key is invalid.
        '403':
          description: >-
            `FORBIDDEN`, `API_KEY_IP_NOT_ALLOWED`,
            `AUTH_INSUFFICIENT_PERMISSIONS`, `AUTH_METHOD_NOT_ALLOWED`
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                FORBIDDEN:
                  summary: FORBIDDEN
                  value:
                    statusCode: 403
                    type: PERMISSION_ERROR
                    message: You do not have permission to perform this action.
                API_KEY_IP_NOT_ALLOWED:
                  summary: API_KEY_IP_NOT_ALLOWED
                  value:
                    statusCode: 403
                    type: PERMISSION_ERROR
                    code: API_KEY_IP_NOT_ALLOWED
                    message: Request IP is not allowed for this API key.
                AUTH_INSUFFICIENT_PERMISSIONS:
                  summary: AUTH_INSUFFICIENT_PERMISSIONS
                  value:
                    statusCode: 403
                    type: PERMISSION_ERROR
                    code: AUTH_INSUFFICIENT_PERMISSIONS
                    message: Insufficient permissions.
                AUTH_METHOD_NOT_ALLOWED:
                  summary: AUTH_METHOD_NOT_ALLOWED
                  value:
                    statusCode: 403
                    type: PERMISSION_ERROR
                    code: AUTH_METHOD_NOT_ALLOWED
                    message: >-
                      This endpoint does not accept the credential type
                      provided.
        '429':
          description: '`API_KEY_RATE_LIMITED`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                API_KEY_RATE_LIMITED:
                  summary: API_KEY_RATE_LIMITED
                  value:
                    statusCode: 429
                    type: RATE_LIMIT_ERROR
                    code: API_KEY_RATE_LIMITED
                    message: API key rate limit exceeded.
        '500':
          description: '`INTERNAL_ERROR`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                INTERNAL_ERROR:
                  summary: INTERNAL_ERROR
                  value:
                    statusCode: 500
                    type: API_ERROR
                    message: An unexpected error occurred.
      security:
        - apiKey: []
components:
  schemas:
    ActivityList:
      type: object
      properties:
        items:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: Activity identifier.
              type:
                type: string
                enum:
                  - CHARGE
                  - REPAYMENT
                  - ADJUSTMENT
                  - REBATE
                  - INTEREST
                description: Activity type.
              status:
                anyOf:
                  - type: string
                    enum:
                      - PENDING
                      - CLEARED
                      - DECLINED
                      - VOIDED
                    description: >-
                      Charge activity status. Non-charge activities have a null
                      status.
                  - type: 'null'
                description: Charge status. Non-charge activities have a null status.
              createdAt:
                type: string
                format: date-time
                pattern: >-
                  ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                description: Activity creation timestamp.
              clearedAt:
                anyOf:
                  - type: string
                    format: date-time
                    pattern: >-
                      ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                  - type: 'null'
                description: Charge clearing timestamp, when available.
              isCredit:
                anyOf:
                  - type: boolean
                  - type: 'null'
                description: Whether the activity credits the card account.
              billAmount:
                anyOf:
                  - type: object
                    properties:
                      amount:
                        type: string
                        description: >-
                          Decimal amount in major currency units, formatted with
                          two fractional digits.
                      currency:
                        type: string
                        description: ISO 4217 alpha currency code.
                    required:
                      - amount
                      - currency
                  - type: 'null'
                description: Amount billed to the card account.
              transactionAmount:
                anyOf:
                  - type: object
                    properties:
                      amount:
                        type: string
                        description: >-
                          Decimal amount in major currency units, formatted with
                          two fractional digits.
                      currency:
                        type: string
                        description: ISO 4217 alpha currency code.
                    required:
                      - amount
                      - currency
                  - type: 'null'
                description: Amount in the original transaction currency.
              conversionRate:
                anyOf:
                  - type: string
                  - type: 'null'
                description: Applied currency conversion rate as a decimal string.
              merchant:
                anyOf:
                  - type: string
                  - type: 'null'
                description: Merchant display name.
              card:
                anyOf:
                  - type: object
                    properties:
                      id:
                        type: string
                        description: Card identifier.
                      title:
                        anyOf:
                          - type: string
                          - type: 'null'
                        description: Card display title.
                      last4:
                        anyOf:
                          - type: string
                          - type: 'null'
                        description: Last four digits of the card number.
                    required:
                      - id
                      - title
                      - last4
                  - type: 'null'
                description: Card associated with the activity.
              category:
                anyOf:
                  - type: object
                    properties:
                      id:
                        type: string
                        description: Category identifier.
                      name:
                        type: string
                        description: Category display name.
                    required:
                      - id
                      - name
                  - type: 'null'
                description: Category associated with the activity.
              note:
                anyOf:
                  - type: string
                  - type: 'null'
                description: Activity note.
              hasReceipt:
                type: boolean
                description: Whether the activity has a receipt.
            required:
              - id
              - type
              - status
              - createdAt
              - clearedAt
              - isCredit
              - billAmount
              - transactionAmount
              - conversionRate
              - merchant
              - card
              - category
              - note
              - hasReceipt
          description: Activities returned on this page.
        meta:
          type: object
          properties:
            totalItems:
              type: number
              description: Total number of items matching the request.
            itemCount:
              type: number
              description: Number of items returned on this page.
            itemsPerPage:
              type: number
              description: Maximum number of items requested per page.
            totalPages:
              type: number
              description: Total number of available pages.
            currentPage:
              type: number
              description: One-based index of the returned page.
          required:
            - totalItems
            - itemCount
            - itemsPerPage
            - totalPages
            - currentPage
          description: Pagination details for the result.
      required:
        - items
        - meta
    ErrorResponse:
      type: object
      properties:
        statusCode:
          type: integer
          minimum: 100
          maximum: 599
          description: HTTP status code.
        type:
          type: string
          enum:
            - INVALID_REQUEST_ERROR
            - AUTHENTICATION_ERROR
            - PERMISSION_ERROR
            - RATE_LIMIT_ERROR
            - API_ERROR
            - UPSTREAM_ERROR
          description: Coarse error category; always present.
        code:
          description: Stable machine code; present for actionable errors.
          type: string
        message:
          type: string
          description: Human-readable explanation.
        param:
          description: Offending field for validation errors.
          type: string
        details:
          description: Structured extra context (e.g. validation issues).
        requestId:
          description: Correlation id for support.
          type: string
      required:
        - statusCode
        - type
        - message
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: Enter your API key

````