Usage — File Upload (.jsonl)

This page describes how to use AI-Suite’s file upload feature with a focus on JSONL files (JSON Lines — one JSON object per line).

Expected format

Validation

Best practices

Example — Node.js (reading from disk)

import { readFileSync } from 'fs';

const jsonl = readFileSync('./data.jsonl');

const file = new File([jsonl], 'data.jsonl', { type: 'text/jsonl' });

const response = await aiSuite.file.create(
  'gemini',
  file
  {
    retry: {
      attempts: 3,
      delay: (attempt) => attempt * 1000, // Exponential backoff: 1s, 2s, 3s
    },
  }
);

Note: when using Node.js, confirm the specific provider accepts a Buffer as file (some adapters accept Buffers; others expect browser File objects). Convert to the required format if necessary.

Common error messages

Additional tips


Managing files (list, retrieve, delete)

Below are examples showing how to list uploaded files, retrieve file metadata and delete files.

// List files (pagination optional)
const listResult = await aiSuite.file.list('gemini', { limit: 20 });
if (listResult.success) {
  console.log('Files:');
  for (const f of listResult.content) {
    console.log(f.id, f.filename, f.bytes, f.created_at);
  }
} else {
  console.error('List error:', listResult.error);
}

// Retrieve file metadata by id
const retrieveResult = await aiSuite.file.retrieve('gemini', 'file-id-123', {});
if (retrieveResult.success) {
  console.log('File metadata:', retrieveResult.content);
} else {
  console.error('Retrieve error:', retrieveResult.error);
}

// Delete file by id
const deleteResult = await aiSuite.file.delete('gemini', 'file-id-123', {});
if (deleteResult.success) {
  console.log('Deleted file:', deleteResult.content.id);
} else {
  console.error('Delete error:', deleteResult.error);
}