Skip to main content

Upload and Ingest Files using API

Overview

This guide explains how to upload and ingest files using the Koverse API. You'll learn about the request structure, configuration options, and how to monitor the ingest job status.

Prerequisites

Before you begin, ensure you have:

  • An existing Koverse workspace
  • An existing Koverse dataset within your workspace
  • Access to the Koverse API

API Request Details

Endpoint

Use a POST request to the uploads endpoint.

Request Format

The request must be sent as multipart/form-data with the following structure:

Required Fields

  • files: The file(s) to upload
  • datasetId: The ID of the target dataset

Optional Fields

Custom Metadata

Add custom metadata to ingested records (for document uploads). Provide the metadata as a JSON string.

Example:

{
"customMetadata": "{\"key\":\"value\",\"createdDt\":\"05/10/2025\"}"
}
Access Control Label

Define the attribute parser for ABAC access control. This determines how the record's security_label is created.

Option 1: Identity Parser

Uses a field from your record as the security label expression.

Configuration:

{
"securityLabeled": true,
"securityLabelInfo": {
"fields": ["label"],
"parserClassName": "identity-parser"
}
}

Label Expression Syntax:

  • Supported operators: & | ( )
  • UTF-8 characters are supported
  • Escape operators with backslash when used in terms (e.g., hi\&gh)

Example expressions:

high&medium
high&(medium|low)
high|(medium&low)
高的|(medium&low)

Label Handling Policies:

  • ignore: Insert rows without security label (open access)
  • replace: Use specified replacement string
  • drop: Skip rows with missing values
Option 2: Apply Label to All Records Parser

Applies the same security label to all records in the upload.

Configuration:

{
"securityLabeled": true,
"securityLabelInfo": {
"parserClassName": "apply-label-to-all-records-parser",
"label": "low"
}
}

Using Postman

  1. Select POST method
  2. In the Body tab, choose form-data
  3. For the file field:
  • Hover over the right side of the Key field
  • Switch from 'Text' to 'File'
  • Click the Value field to select your file

Form Data Uploads

Monitoring Ingest Status

Response

A successful request (201 Created) returns a response containing a jobId.

Job Status Checking

  1. Use the jobId to query the job status endpoint: /jobs/{id}
  2. Monitor the status field for these values:
  • queued: Job is pending processing
  • running: Job is in progress
  • complete: Job finished successfully
  • failed: Job failed (check error field for details)

Job Status

Error Handling

  • If the job fails, check the error field in the job response for detailed information
  • Common issues include:
    • Missing required fields
    • Invalid file format
    • Incorrect security label syntax
    • Permission issues