Files

Upload, list, retrieve, and delete files. Files are used as inputs for other API features such as batch processing and knowledge base data sources.

Endpoints

POST   https://api.tensoras.ai/v1/files
GET    https://api.tensoras.ai/v1/files
GET    https://api.tensoras.ai/v1/files/{file_id}
DELETE https://api.tensoras.ai/v1/files/{file_id}

Authentication

Authorization: Bearer tns_your_key_here

Upload File

Upload a file to the Tensoras platform. The file can be used for batch processing or as a data source for knowledge bases.

Request

POST /v1/files

This endpoint accepts a multipart/form-data request.

ParameterTypeRequiredDescription
filefileYesThe file to upload. Supported formats: .jsonl, .pdf, .txt, .md, .csv, .docx, .html. Max size: 512 MB.
purposestringYesThe intended purpose of the file. One of "batch", "knowledge-base", "fine-tune".

Response Body

{
  "id": "file-abc123",
  "object": "file",
  "bytes": 1024567,
  "created_at": 1709123456,
  "filename": "training_data.jsonl",
  "purpose": "batch",
  "status": "uploaded",
  "status_details": null
}
FieldTypeDescription
idstringThe unique file identifier.
objectstringAlways "file".
bytesintegerThe size of the file in bytes.
created_atintegerUnix timestamp of when the file was created.
filenamestringThe original filename.
purposestringThe purpose of the file.
statusstringThe processing status. One of "uploaded", "processed", "error".
status_detailsstring or nullAdditional details about the status, particularly in the case of errors.

List Files

Retrieve a list of all uploaded files.

Request

GET /v1/files
ParameterTypeRequiredDescription
purposestringNoFilter files by purpose (query parameter).
limitintegerNoMaximum number of files to return. Default: 20, max: 100.
afterstringNoA cursor for pagination. Returns files created after this file ID.

Response Body

{
  "object": "list",
  "data": [
    {
      "id": "file-abc123",
      "object": "file",
      "bytes": 1024567,
      "created_at": 1709123456,
      "filename": "training_data.jsonl",
      "purpose": "batch",
      "status": "uploaded",
      "status_details": null
    }
  ],
  "has_more": false
}

Get File

Retrieve metadata about a specific file.

Request

GET /v1/files/{file_id}
ParameterTypeRequiredDescription
file_idstringYesThe ID of the file to retrieve (path parameter).

Response Body

Returns a single file object (same schema as the upload response).


Delete File

Delete a previously uploaded file.

Request

DELETE /v1/files/{file_id}
ParameterTypeRequiredDescription
file_idstringYesThe ID of the file to delete (path parameter).

Response Body

{
  "id": "file-abc123",
  "object": "file",
  "deleted": true
}

Examples

Upload a File

curl

curl https://api.tensoras.ai/v1/files \
  -H "Authorization: Bearer tns_your_key_here" \
  -F "file=@batch_requests.jsonl" \
  -F "purpose=batch"

Python

from openai import OpenAI
 
client = OpenAI(
    base_url="https://api.tensoras.ai/v1",
    api_key="tns_your_key_here",
)
 
file = client.files.create(
    file=open("batch_requests.jsonl", "rb"),
    purpose="batch",
)
 
print(f"File ID: {file.id}")
print(f"Filename: {file.filename}")
print(f"Size: {file.bytes} bytes")

Node.js

import OpenAI from "openai";
import fs from "fs";
 
const client = new OpenAI({
  baseURL: "https://api.tensoras.ai/v1",
  apiKey: "tns_your_key_here",
});
 
const file = await client.files.create({
  file: fs.createReadStream("batch_requests.jsonl"),
  purpose: "batch",
});
 
console.log(`File ID: ${file.id}`);
console.log(`Filename: ${file.filename}`);
console.log(`Size: ${file.bytes} bytes`);

List Files

curl

curl https://api.tensoras.ai/v1/files \
  -H "Authorization: Bearer tns_your_key_here"

Python

from openai import OpenAI
 
client = OpenAI(
    base_url="https://api.tensoras.ai/v1",
    api_key="tns_your_key_here",
)
 
files = client.files.list()
 
for f in files.data:
    print(f"{f.id}: {f.filename} ({f.purpose})")

Node.js

import OpenAI from "openai";
 
const client = new OpenAI({
  baseURL: "https://api.tensoras.ai/v1",
  apiKey: "tns_your_key_here",
});
 
const files = await client.files.list();
 
for (const f of files.data) {
  console.log(`${f.id}: ${f.filename} (${f.purpose})`);
}

Get File Details

curl

curl https://api.tensoras.ai/v1/files/file-abc123 \
  -H "Authorization: Bearer tns_your_key_here"

Python

from openai import OpenAI
 
client = OpenAI(
    base_url="https://api.tensoras.ai/v1",
    api_key="tns_your_key_here",
)
 
file = client.files.retrieve("file-abc123")
 
print(f"File: {file.filename}")
print(f"Status: {file.status}")
print(f"Size: {file.bytes} bytes")

Node.js

import OpenAI from "openai";
 
const client = new OpenAI({
  baseURL: "https://api.tensoras.ai/v1",
  apiKey: "tns_your_key_here",
});
 
const file = await client.files.retrieve("file-abc123");
 
console.log(`File: ${file.filename}`);
console.log(`Status: ${file.status}`);
console.log(`Size: ${file.bytes} bytes`);

Delete a File

curl

curl -X DELETE https://api.tensoras.ai/v1/files/file-abc123 \
  -H "Authorization: Bearer tns_your_key_here"

Python

from openai import OpenAI
 
client = OpenAI(
    base_url="https://api.tensoras.ai/v1",
    api_key="tns_your_key_here",
)
 
result = client.files.delete("file-abc123")
 
print(f"Deleted: {result.deleted}")

Node.js

import OpenAI from "openai";
 
const client = new OpenAI({
  baseURL: "https://api.tensoras.ai/v1",
  apiKey: "tns_your_key_here",
});
 
const result = await client.files.del("file-abc123");
 
console.log(`Deleted: ${result.deleted}`);

Error Handling

{
  "error": {
    "message": "File 'file-abc123' not found",
    "type": "not_found_error",
    "param": "file_id",
    "code": "file_not_found"
  }
}