Skip to content

Developers

API documentation

FileTools360 runs conversions in the browser, so there is no conversion API today. What exists is a read-only capability endpoint — plus the design for the API a server-backed deployment would expose.

There is no conversion endpoint

Files are never uploaded, so there is nothing to POST them to. The endpoints marked “Planned” below describe the shape a server-backed deployment would use. They are documented rather than implemented, and this page says which is which.

Available today

One endpoint is live. It exposes the same conversion registry the interface is built from, so you can discover programmatically what this deployment can do.

GET/api/capabilitiesAvailable

Returns every converter and tool, with its source and target formats, size limit, fidelity and availability. Cached aggressively; no authentication required.

curl https://www.filetools360.com/api/capabilities

{
  "version": 1,
  "counts": { "ready": 521, "unavailable": 23 },
  "runtime": { "browser": true, "server": false },
  "capabilities": [
    {
      "slug": "heic-to-jpg",
      "kind": "conversion",
      "from": "heic",
      "to": "jpg",
      "category": "image",
      "fidelity": "lossy",
      "maxBytes": 125829120,
      "runtime": "browser",
      "status": "ready"
    }
  ]
}

Add ?category=image or ?status=unavailable to filter. The unavailableReason field explains, in full, why a listed conversion is not offered.

Planned: server-backed conversion

These are the endpoints a deployment with conversion workers would expose. The shapes are settled; the implementation is not part of this build.

POST/api/v1/jobsPlanned

Creates a conversion job. Returns immediately with a job id — conversion is asynchronous because a large video takes minutes, not milliseconds.

POST /api/v1/jobs
Authorization: Bearer cx_live_...
Content-Type: multipart/form-data

file=@input.mov
conversion=mov-to-mp4
options={"videoPreset":"balanced","resolution":"1080"}

201 Created
{ "id": "job_8f3a...", "status": "queued", "expiresAt": "..." }
GET/api/v1/jobs/:idPlanned

Polls job status. Returns queued, running with a progress fraction, done with download URLs, or failed with a structured error using the same taxonomy the interface shows.

POST/api/v1/webhooksPlanned

Registers a URL to be called when a job finishes, so you do not have to poll. Payloads would be signed so you can verify they came from FileTools360.

Error handling

The error taxonomy is already implemented and used throughout the interface, so an API would inherit it directly. Every failure carries a stable machine-readable code, a message written for a person, and actionable hints:

{
  "code": "codec-unsupported",
  "message": "This MKV file uses a codec FileTools360 cannot decode.",
  "hints": [
    "The container is supported but the codec inside it is unusual.",
    "Re-export the file as H.264 MP4 and try again."
  ]
}

Codes include too-large, empty-file, corrupt, password-required, no-text-layer, codec-unsupported, out-of-memory and archive-unsafe. They are stable enough to branch on.

Using the converters programmatically today

Since everything runs client-side, the practical integration is to link to a converter page — for example /heic-to-jpg — and let the user drop their file there. That keeps the privacy property intact: their file never reaches your servers either.

Browse the directory →

Runs entirely in your browser

FileTools360 by the numbers

521 converters and tools65 file formatsnothing ever uploaded.