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

# Upload File

> Upload files to Wokelo to supplement research reports with proprietary data. Each uploaded file receives a unique identifier (`fileName`) that can be referenced in the `custom_files` parameter when creating reports.

- **Individual uploads preferred** – for best performance, upload files one at a time.
- **Bulk upload limits** – maximum 10 files per request, 20 MB limit per file.


## Overview

Upload your files to Wokelo to supplement research reports with proprietary data. Each uploaded file receives a unique identifier that you can reference in the `custom_files` parameter when creating reports.

## Endpoint Details

* **Method:** POST
* **Endpoint:** `/api/assets/upload/`

## Authentication requirements

* Include a valid JWT token in your request header
* If you don't have a token yet, you can get one from the /auth/token/ endpoint first.

## Request

### Request Parameters

#### Header Parameters

<ParamField header="Authorization" type="string" required>
  JWT token obtained from the Authentication request
</ParamField>

#### Body Parameters

<ParamField body="files" type="array of files" required>
  Array of files to be uploaded
</ParamField>

<ParamField body="fileUUID" type="array of uuids">
  Your own UUIDs to track files. Must match the length and order of the `files` array. These UUIDs will be returned in the response alongside Wokelo's `fileName` identifiers.
</ParamField>

**Recommended Usage:**

* **Individual uploads preferred** - For best performance, upload files individually
* **Bulk upload limits** - When uploading multiple files, the maximum is 10 files per request with a 20MB limit per file.

## Response

Successful response will include the details of files uploaded successfully and those that failed to upload.

### Successful Response Fields

<ResponseField name="status" type="String">
  Overall upload status (success or error)
</ResponseField>

<ResponseField name="success" type="Array of Objects">
  Array containing information on successfully uploaded files
</ResponseField>

<ResponseField name="success[].fileName" type="String">
  Wokelo's unique file identifier—use this in the `custom_files` parameter when creating reports
</ResponseField>

<ResponseField name="originalName" type="String">
  Original filename as uploaded
</ResponseField>

<ResponseField name="success[].mimeType" type="String">
  Detected file type/format
</ResponseField>

<ResponseField name="uuid" type="String">
  Your provided UUID (if supplied in request)
</ResponseField>

<ResponseField name="fails" type="Array of Objects">
  Array containing information about failed uploads (empty on success)
</ResponseField>

<ResponseField name="files[].reason" type="String">
  Reason for which the file upload failed
</ResponseField>

<ResponseExample>
  ```json 200 theme={"system"}
  {
      "status": "success",
      "success": [
          {
              "fileName": "file_116e55ec-041d-4c1e-897c-3adef1576a09",
              "originalName": "lemonade.pdf",
              "mimeType": "pdf",
              "uuid": "a7f4b9e2c3"
          },
          {
              "fileName": "file_e30c7d3f-8bed-46b2-ae9c-eebc879323cc",
              "originalName": "lemonade_diligence.pdf",
              "mimeType": "pdf",
              "uuid": "k3m8n5p1q6"
          }
      ],
      "fails": []
  }
  ```
</ResponseExample>


## OpenAPI

````yaml POST /api/assets/upload/
openapi: 3.0.3
info:
  title: Wokelo API
  description: >
    Wokelo provides four categories of APIs for company and market intelligence:


    1. **Enrichment** – Company and Industry data using Wokelo database and
    alternative data. Supports multi-company requests.

    2. **Discovery** – Workflows for specific use-cases such as market map,
    target screening, and buyer screening.

    3. **Monitoring** – Real-time news monitoring for companies.

    4. **Workflow Automation** – Wokelo and custom research workflows executed
    within notebooks.


    Enrichment and Discovery APIs are managed through async requests; use the
    Supporting APIs to track status and export results in JSON.

    Workflow APIs are executed within notebooks and support export to PDF, PPT,
    DOC, or JSON.


    **Authentication:** All endpoints (except `/auth/token/`) require a Bearer
    JWT token in the `Authorization` header.
  version: 1.0.0
  contact:
    url: https://docs.wokelo.ai/contact
servers:
  - url: https://api.wokelo.ai
    description: Production server
security: []
tags:
  - name: Authentication
    description: Obtain JWT tokens for API access
  - name: Enrichment
    description: Retrieve structured data for companies and industries
  - name: Discovery
    description: Identify companies via market maps, buyer and target screening
  - name: Monitoring
    description: Real-time company news monitoring
  - name: Workflow Automation
    description: Research notebooks for companies, industries, and custom workflows
  - name: Supporting APIs
    description: >-
      Utility endpoints for search, file upload, request management, and report
      retrieval
externalDocs:
  description: Official Wokelo API Documentation
  url: https://docs.wokelo.ai/overview
paths:
  /api/assets/upload/:
    post:
      tags:
        - Supporting APIs
      summary: Upload File
      description: >
        Upload files to Wokelo to supplement research reports with proprietary
        data. Each uploaded file receives a unique identifier (`fileName`) that
        can be referenced in the `custom_files` parameter when creating reports.


        - **Individual uploads preferred** – for best performance, upload files
        one at a time.

        - **Bulk upload limits** – maximum 10 files per request, 20 MB limit per
        file.
      operationId: uploadFile
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
                - files
              properties:
                files:
                  type: array
                  items:
                    type: string
                    format: binary
                  description: Array of files to be uploaded.
                fileUUID:
                  type: array
                  items:
                    type: string
                  description: >-
                    Your own UUIDs to track files. Must match the length and
                    order of the `files` array. These UUIDs will be returned in
                    the response alongside Wokelo's `fileName` identifiers.
                  example:
                    - a7f4b9e2c3
                    - k3m8n5p1q6
      responses:
        '200':
          description: >-
            Upload response including successfully uploaded files and any
            failures.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    description: Overall upload status.
                    example: success
                  success:
                    type: array
                    description: >-
                      Array containing information on successfully uploaded
                      files.
                    items:
                      type: object
                      properties:
                        fileName:
                          type: string
                          description: >-
                            Wokelo's unique file identifier – use this in
                            `custom_files` when creating reports.
                          example: file_116e55ec-041d-4c1e-897c-3adef1576a09
                        originalName:
                          type: string
                          description: Original filename as uploaded.
                          example: lemonade.pdf
                        mimeType:
                          type: string
                          description: Detected file type/format.
                          example: pdf
                        uuid:
                          type: string
                          description: Your provided UUID (if supplied in request).
                          example: a7f4b9e2c3
                  fails:
                    type: array
                    description: >-
                      Array containing information about failed uploads (empty
                      on full success).
                    items:
                      type: object
                      properties:
                        originalName:
                          type: string
                          description: Filename that failed to upload.
                        reason:
                          type: string
                          description: Reason the file upload failed.
              example:
                status: success
                success:
                  - fileName: file_116e55ec-041d-4c1e-897c-3adef1576a09
                    originalName: lemonade.pdf
                    mimeType: pdf
                    uuid: a7f4b9e2c3
                  - fileName: file_e30c7d3f-8bed-46b2-ae9c-eebc879323cc
                    originalName: lemonade_diligence.pdf
                    mimeType: pdf
                    uuid: k3m8n5p1q6
                fails: []
        '401':
          description: Unauthorized – invalid or missing JWT token
      security:
        - bearerAuth: []
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: JWT token obtained from the `/auth/token/` endpoint.

````