Complete API reference for the Tools Platform
All API endpoints require Bearer token authentication
Include the Bearer token in the Authorization header:
Authorization: Bearer YOUR_TOKEN_HERETokens can be generated from the admin panel. Contact your administrator for access.
Convert CSV file to XLSX format
Content-Type: multipart/form-data
file (required): CSV file to convert{
"jobId": "string",
"status": "queued"
}curl -X POST https://tools.setabayt.com/api/csv-to-xlsx \
-H "Authorization: Bearer YOUR_TOKEN" \
-F "file=@data.csv"After submission, use the jobId to check the job status. You can use either:
GET /api/jobs/[jobId] - Polling method (check status manually)GET /api/jobs/[jobId]/stream - SSE method (real-time updates, recommended)Compress image with configurable quality
Content-Type: multipart/form-data
file (required): Image file (JPEG, PNG, WebP)Query Parameters:
quality (optional): Quality 1-100 (default: 80)format (optional): Output format - jpeg, png, webp (default: jpeg){
"jobId": "string",
"status": "queued"
}curl -X POST "https://tools.setabayt.com/api/compress-image?quality=85&format=jpeg" \
-H "Authorization: Bearer YOUR_TOKEN" \
-F "file=@image.jpg"Check job status and get result (Polling method)
{
"status": "queued" | "processing" | "completed" | "failed",
"downloadUrl": "string", // Only when status is "completed"
"error": "string" // Only when status is "failed"
}curl -X GET https://tools.setabayt.com/api/jobs/JOB_ID \
-H "Authorization: Bearer YOUR_TOKEN"Note: For real-time updates, use the SSE endpoint instead (see below).
Real-time job status updates using Server-Sent Events (SSE) - Recommended
SSE endpoint provides real-time job status updates without polling. The server pushes updates to the client as they occur.
Server-Sent Events stream:
data: {"type":"connected","jobId":"abc123"}
data: {"type":"status","status":"queued","jobId":"abc123"}
data: {"type":"status","status":"processing","jobId":"abc123"}
data: {"type":"status","status":"completed","jobId":"abc123","downloadUrl":"/api/jobs/abc123/download"}connected: SSE connection establishedstatus: Job status updateerror: Error occurredcurl -N -H "Authorization: Bearer YOUR_TOKEN" \
https://tools.setabayt.com/api/jobs/JOB_ID/stream-N flag disables buffering for real-time output
const eventSource = new EventSource(
`https://tools.setabayt.com/api/jobs/${jobId}/stream`,
{
headers: {
'Authorization': 'Bearer YOUR_TOKEN'
}
}
)
eventSource.onmessage = (event) => {
const data = JSON.parse(event.data)
console.log('Status:', data.status)
if (data.status === 'completed' && data.downloadUrl) {
// Download the file
window.location.href = data.downloadUrl
eventSource.close()
}
}
eventSource.onerror = (error) => {
console.error('SSE error:', error)
eventSource.close()
}For easier integration, use the provided helper function:
import { watchJob } from '@/lib/job-watcher'
const cleanup = watchJob(jobId, {
onUpdate: (status) => {
if (status.status === 'completed' && status.downloadUrl) {
window.location.href = status.downloadUrl
}
},
onError: (error) => {
console.error('Error:', error)
},
onComplete: () => {
console.log('Job completed')
}
})
// Cleanup when done
// cleanup()The helper function automatically uses SSE if available, otherwise falls back to polling.
Download completed job result
Download the result file when job status is "completed"
Binary file (XLSX for CSV conversion, image for compression)
curl -X GET https://tools.setabayt.com/api/jobs/JOB_ID/download \
-H "Authorization: Bearer YOUR_TOKEN" \
-o output.xlsxHealth check endpoint (no authentication required)
{
"status": "ok"
}