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_hereUpload 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/filesThis endpoint accepts a multipart/form-data request.
| Parameter | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The file to upload. Supported formats: .jsonl, .pdf, .txt, .md, .csv, .docx, .html. Max size: 512 MB. |
purpose | string | Yes | The 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
}| Field | Type | Description |
|---|---|---|
id | string | The unique file identifier. |
object | string | Always "file". |
bytes | integer | The size of the file in bytes. |
created_at | integer | Unix timestamp of when the file was created. |
filename | string | The original filename. |
purpose | string | The purpose of the file. |
status | string | The processing status. One of "uploaded", "processed", "error". |
status_details | string or null | Additional details about the status, particularly in the case of errors. |
List Files
Retrieve a list of all uploaded files.
Request
GET /v1/files| Parameter | Type | Required | Description |
|---|---|---|---|
purpose | string | No | Filter files by purpose (query parameter). |
limit | integer | No | Maximum number of files to return. Default: 20, max: 100. |
after | string | No | A 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}| Parameter | Type | Required | Description |
|---|---|---|---|
file_id | string | Yes | The 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}| Parameter | Type | Required | Description |
|---|---|---|---|
file_id | string | Yes | The 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"
}
}