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

# Batch import customer feedback requests

> Import multiple customer feedback requests at once (1-1500 per call).
Requests are queued with PENDING delivery status and sent in the next batch cycle (daily at 5:25 PM).




## OpenAPI

````yaml /openapi.yaml post /customer-feedback-system/batch
openapi: 3.0.3
info:
  title: RenovationFind API
  description: >
    Public REST API for RenovationFind vendor integrations.


    ## Authentication

    All endpoints require a Bearer token in the `Authorization` header.

    Tokens are issued from the RenovationFind Manager Portal.


    ```

    Authorization: Bearer <your_jwt_token>

    ```


    ## Rate Limiting

    API requests are rate-limited to **250 requests per 5 minutes** per vendor.

    When exceeded, the API returns `429 Too Many Requests` with a `Retry-After`
    header.


    ## Response Format

    All responses follow a consistent envelope:

    ```json

    {
      "success": true,
      "data": { ... },
      "message": "Optional message"
    }

    ```

    On error:

    ```json

    {
      "success": false,
      "error": "Error description"
    }

    ```
  version: 1.0.0
  contact:
    name: RenovationFind
    url: https://www.renovationfind.com
servers:
  - url: https://www.renovationfind.com/rest-api-v1
    description: Production
security:
  - BearerAuth: []
paths:
  /customer-feedback-system/batch:
    post:
      tags:
        - Customer Feedback
      summary: Batch import customer feedback requests
      description: >
        Import multiple customer feedback requests at once (1-1500 per call).

        Requests are queued with PENDING delivery status and sent in the next
        batch cycle (daily at 5:25 PM).
      operationId: batchImportCfsRequests
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - requestsImported
              properties:
                requestsImported:
                  type: array
                  minItems: 1
                  maxItems: 1500
                  items:
                    type: object
                    required:
                      - customerName
                    description: >
                      At least one of `email` or `phone` must be provided.

                      Phone numbers are automatically normalized to xxx-xxx-xxxx
                      format.
                    properties:
                      customerName:
                        type: string
                        description: Full name of the customer
                        example: John Doe
                      email:
                        type: string
                        format: email
                        description: >-
                          Customer email address. If comma-separated, only the
                          first is used. At least one of email or phone is
                          required.
                        example: john@example.com
                      phone:
                        type: string
                        description: >-
                          Customer phone number. At least one of email or phone
                          is required. Automatically normalized to xxx-xxx-xxxx.
                        example: '5551234567'
            example:
              requestsImported:
                - customerName: John Doe
                  email: john@example.com
                  phone: '5551234567'
                - customerName: Jane Smith
                  email: jane@example.com
                  phone: '5559876543'
      responses:
        '202':
          description: Batch import accepted and queued for delivery
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  message:
                    type: string
              example:
                success: true
                message: Batch import successful. 2 requests queued for delivery.
        '400':
          description: Invalid request (empty list or exceeds 1500 limit)
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: false
                  error:
                    type: string
        '403':
          description: Account not enabled for this feature
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: false
                  error:
                    type: string
        '429':
          description: Rate limit exceeded (250 requests per 5 minutes)
          headers:
            Retry-After:
              schema:
                type: integer
                example: 300
              description: Seconds to wait before retrying
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: false
                  error:
                    type: string
              example:
                success: false
                error: >-
                  Rate limit exceeded. Maximum 250 requests per 5 minutes.
                  Please retry later.
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: JWT token issued from the RenovationFind Manager Portal

````