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

# Submit Job via Bulk Document Upload

> Submit multiple documents using signed S3 URLs for processing as a single job. The company must be active to submit a job. The size limit of each individual document is **25MB**, and the page limit for PDF files is **150**. Returns a job ID that can be used to track the status of all submitted documents. Use the job status endpoint to monitor processing progress and retrieve document IDs once completed. You can also pass in the id of a site configured for your company in Nectar. Please note that this will match all uploaded documents to the same site.



## OpenAPI

````yaml /api-reference/openapi-v2-2.json post /job/company/{company_id}/bulk
openapi: 3.1.0
info:
  title: Nectar API Documentation
  version: 1.0.0 (v1)
  description: >-
    Complete API documentation for v2.2 endpoints to managing companies, sites,
    data, and documents
servers:
  - url: https://external.nectarclimate.com/v2.2
    description: Nectar API Server
security: []
paths:
  /job/company/{company_id}/bulk:
    post:
      tags:
        - Jobs
      summary: Submit Job via Bulk Document Upload
      description: >-
        Submit multiple documents using signed S3 URLs for processing as a
        single job. The company must be active to submit a job. The size limit
        of each individual document is **25MB**, and the page limit for PDF
        files is **150**. Returns a job ID that can be used to track the status
        of all submitted documents. Use the job status endpoint to monitor
        processing progress and retrieve document IDs once completed. You can
        also pass in the id of a site configured for your company in Nectar.
        Please note that this will match all uploaded documents to the same
        site.
      operationId: job_company_bulk_create
      parameters:
        - in: path
          name: company_id
          schema:
            type: string
            format: uuid
          description: ID of the company for which to submit jobs.
          required: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JobBulkCreateRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/JobBulkCreateRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/JobBulkCreateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Job'
          description: ''
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ''
        '403':
          description: 'Forbidden: Access to the company is denied.'
        '404':
          description: Company not found.
      security:
        - ExternalAuthentication: []
components:
  schemas:
    JobBulkCreateRequest:
      type: object
      description: Serializer for form fields during job bulk submission.
      properties:
        documents:
          type: array
          items:
            type: string
            minLength: 1
          description: List of presigned URLs for files to be processed by the job.
        siteId:
          type:
            - string
            - 'null'
          format: uuid
          description: UUID of the site for the documents
      required:
        - documents
    Job:
      type: object
      description: Serializer for the response of job status endpoint.
      properties:
        id:
          type: string
          description: The ID of the job.
          maxLength: 255
        status:
          allOf:
            - $ref: '#/components/schemas/JobStatusEnum'
          description: >-
            The current status of the job, one of: PENDING, COMPLETED,
            TERMINATED, FAILED.If the job status is FAILED, please contact our
            support team.


            * `PENDING` - Pending

            * `COMPLETED` - Completed

            * `FAILED` - Failed
        parsedDocumentIds:
          type: array
          items:
            type: string
          description: >-
            List of document IDs that were processed successfully by the job.
            This is only populated if the job is completed.
        duplicates:
          type: integer
          description: >-
            Number of duplicate files detected by the job. This is only
            populated if the job is completed.
        duplicateDocumentIds:
          type: array
          items:
            type: string
          description: >-
            List of document IDs that were identified as duplicates by the job.
            This is only populated if the job is completed.
        nonUtilityDocumentIds:
          type: array
          items:
            type: string
          description: >-
            List of document IDs that were identified as non-utility documents
            by the job. This is only populated if the job is completed.
        terminationReason:
          type: string
          description: >-
            The reason the job was terminated. This is only populated if the job
            is terminated.
      required:
        - id
        - status
    ErrorResponse:
      type: object
      description: Serializer for error responses.
      properties:
        detail:
          type: string
        error:
          type: string
    JobStatusEnum:
      enum:
        - PENDING
        - COMPLETED
        - FAILED
      type: string
      description: |-
        * `PENDING` - Pending
        * `COMPLETED` - Completed
        * `FAILED` - Failed
  securitySchemes:
    ExternalAuthentication:
      type: apiKey
      in: header
      name: X-API-KEY

````