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

# Bulk Upload

> Perform a bulk email validation request via API.

The bulk upload endpoint allows you to validate large email lists.\
Only **one bulk validation job** can run at a time per account.

* After uploading a file, validation **starts automatically**.
* If a job is already running, any new upload will be **queued** and processed afterward.

## File Hosting Requirements

<Note>
  To use this endpoint, you must:

  * Upload the file to **your own server**
  * Provide the **public HTTPS URL** to the file
  * Ensure the URL ends with `.csv` or `.txt`
</Note>

<Warning>
  Public file-sharing services (Google Drive, Dropbox, OneDrive, etc.) are **not supported**.\
  Only direct-file URLs hosted on your own server can be processed.
</Warning>

***

## File Requirements

Your uploaded file must meet these conditions:

* File size **less than 20MB**
* Maximum **200,000 emails** per list
* File type: `.csv` or `.txt`
* One email per line

<Note>
  If your list exceeds the limit, split it into multiple files and upload them one by one.
</Note>


## OpenAPI

````yaml GET /v1/upload/
openapi: 3.1.0
info:
  title: DeBounce Bulk Email Validation API
  description: Bulk email list upload and status checking endpoints.
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://bulk.debounce.io
security:
  - ApiKeyQuery: []
paths:
  /v1/upload/:
    get:
      summary: Perform bulk email validation
      description: Perform a bulk email validation request via API.
      operationId: uploadBulkList
      parameters:
        - name: api
          in: query
          description: Your DeBounce API key
          required: true
          schema:
            type: string
        - name: url
          in: query
          description: >-
            URL of your .csv or .txt email list, starting with https and
            uploaded in your server.
          required: true
          schema:
            type: string
            format: uri
      responses:
        '200':
          description: Bulk upload accepted and processing started
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkUploadResult'
              examples:
                success:
                  summary: Successful bulk validation upload
                  value:
                    debounce:
                      list_id: '8620'
                      list_name: test-list
                    success: '1'
                maxReqs-reached:
                  summary: Maximum bulk verify requests reached
                  value:
                    debounce:
                      error: >-
                        You have reached the maximum number of API bulk verify
                        requests. Please try after the existing request
                        completes.
                    success: '0'
        '400':
          description: Bad request - Invalid URL or file format
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                debounce:
                  error: URL parameter is not valid.
                success: '0'
        '401':
          description: Unauthorized - Invalid API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                debounce:
                  error: Wrong API
                  code: '0'
                success: '0'
        '402':
          description: Payment Required - Insufficient credits
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                debounce:
                  error: >-
                    You have exhausted your credits, please add additional
                    credits to continue.
                success: '0'
        '429':
          description: Too Many Requests - Maximum concurrent calls reached
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                debounce:
                  error: Maximum concurrent calls reached
                success: '0'
components:
  schemas:
    BulkUploadResult:
      type: object
      required:
        - success
      properties:
        debounce:
          type: object
          properties:
            list_id:
              description: Unique identifier for the uploaded list
              type: string
            list_name:
              description: Name of the uploaded list
              type: string
        success:
          description: Whether the upload was successful
          type: string
          enum:
            - '0'
            - '1'
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: string
        message:
          type: string
        debounce:
          type: object
          properties:
            error:
              type: string
            code:
              type: string
        success:
          type: string
          enum:
            - '0'
  securitySchemes:
    ApiKeyQuery:
      type: apiKey
      in: query
      name: api
      description: API key for authentication

````