> ## 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.

# List vendor-assigned leads

> Retrieve a paginated list of leads assigned to the authenticated vendor.
Supports filtering by status. Leads are assigned by the RenovationFind team.




## OpenAPI

````yaml /openapi.yaml get /general-leads
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:
  /general-leads:
    get:
      tags:
        - General Leads
      summary: List vendor-assigned leads
      description: >
        Retrieve a paginated list of leads assigned to the authenticated vendor.

        Supports filtering by status. Leads are assigned by the RenovationFind
        team.
      operationId: listGeneralLeads
      parameters:
        - name: page
          in: query
          required: false
          schema:
            type: integer
            default: 0
            minimum: 0
        - name: size
          in: query
          required: false
          description: Page size (max 100)
          schema:
            type: integer
            default: 10
            minimum: 1
            maximum: 100
        - name: filter
          in: query
          required: false
          schema:
            type: string
            default: ALL
            enum:
              - ALL
              - ACCEPTED
              - REQUIRES_ATTENTION
      responses:
        '200':
          description: Paginated list of vendor-assigned leads
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  data:
                    type: object
                    properties:
                      content:
                        type: array
                        items:
                          type: object
                          description: >
                            A vendor-assigned general lead (lite view).

                            Customer contact fields (customerEmail,
                            customerPhone, customerAddress) are null until the
                            lead is accepted.
                          properties:
                            id:
                              type: integer
                              format: int64
                            dateCreated:
                              type: string
                              format: date-time
                            dateModified:
                              type: string
                              format: date-time
                            actionDate:
                              type: string
                              format: date-time
                              nullable: true
                              description: >-
                                Date when the vendor accepted or declined the
                                lead
                            category:
                              type: string
                              description: Trade category (e.g. "Plumbing", "Electrical")
                            customerName:
                              type: string
                            customerEmail:
                              type: string
                              format: email
                              nullable: true
                              description: Only included after lead is accepted
                            customerPhone:
                              type: string
                              nullable: true
                              description: Only included after lead is accepted
                            customerAddress:
                              type: string
                              nullable: true
                              description: Only included after lead is accepted
                            projectDetailsHtml:
                              type: string
                              description: HTML-formatted project details
                            originalJobDescription:
                              type: string
                            vendorNotificationViewed:
                              type: boolean
                              description: Whether the vendor has viewed this lead
                            vendorLeadAction:
                              type: string
                              enum:
                                - NONE
                                - ACCEPT
                                - DECLINE
                                - EXPIRED
                              description: Current action state of the lead
                            declineReason:
                              type: string
                              nullable: true
                              description: Reason provided when declining
                            postLeadStatus:
                              type: string
                              nullable: true
                              enum:
                                - NO_RESPONSE
                                - HOMEOWNER_CONTACTED
                                - MEETUP_SCHEDULED
                                - QUOTE_SENT
                                - JOB_PENDING_DECISION
                                - JOB_WON
                                - JOB_LOST
                                - JOB_POSTPONED_OR_CANCELLED
                                - NO_RESPONSE_FROM_HOMEOWNER
                                - OTHER
                                - REACHED_OUT_TO_HOMEOWNER
                                - MULTIPLE_ATTEMPTS_NO_RESPONSE
                                - CONTACT_MADE
                                - ESTIMATE_PROVIDED
                                - LEAD_WON
                                - LEAD_LOST
                              description: Current post-acceptance job tracking status
                            postLeadRequiresAction:
                              type: boolean
                              description: >-
                                Whether a status update is required from the
                                vendor
                      page:
                        type: integer
                      size:
                        type: integer
                      totalElements:
                        type: integer
                        format: int64
                      totalPages:
                        type: integer
                      last:
                        type: boolean
        '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

````