This product is API-first: the UI is a thin layer. Everything it does is a documented HTTP call, and every form you see is rendered from /api/_meta. Anything you can do in the app, you can do over REST.
The public base URL is https://api.file-convert.balancingagent.info. From inside the app, same-origin /api/... paths work too (the frontend proxies them to the API).
Prefer to explore interactively? The OpenAPI / Swagger UI lives at https://api.file-convert.balancingagent.info/docs ↗ and the raw schema at https://api.file-convert.balancingagent.info/openapi.json ↗.
The API accepts three identity modes. Pick whichever fits how you're calling it.
Send Authorization: Bearer <token>. You can mint a throwaway anonymous token with POST /api/anon/session, which returns { token }. Files created under an anonymous session are ephemeral.
Send X-API-Key: <key>. Manage keys via POST /api/api-keys, GET /api/api-keys and DELETE /api/api-keys/{key_id}.
When cdn-app's gateway has already authenticated the caller, it forwards the identity as X-Auth-Org-Id, X-Auth-User-Id and X-Auth-Role, plus a shared X-Gateway-Key. Login and accounts are owned by the gateway, not by this app.
Cross-tenant access returns 404, not 403, so the existence of another org's resources is never disclosed.
Most resources are managed by a single auto-CRUD factory, so the REST surface is uniform. For any resource whose base path is P:
GET P — list (paginated; keys-only GSI; supports a limit and a pagination cursor)POST P — createGET P/{org_id}/{id} — fetch onePATCH P/{org_id}/{id} — partial updateDELETE P/{org_id}/{id} — deleteactions (suffix POST routes)The concrete resources and paths below come live from /api/_meta:
/api/files/api/conversion-jobs/api/settings/api/feature-flags/api/usersA few copy-pasteable starting points.
Mint an anonymous token:
curl -X POST https://api.file-convert.balancingagent.info/api/anon/session
One-shot convert a CSV to JSON with that token:
curl -X POST https://api.file-convert.balancingagent.info/api/convert \ -H "Authorization: Bearer $TOKEN" \ -F "file=@data.csv" \ -F "target_format=json" \ -F "visibility=private"
Inspect the field schema the UI renders the file form from:
curl https://api.file-convert.balancingagent.info/api/_meta/file
Uniform REST surface for the file resource at /api/files.
/api/filesList (paginated; keys-only GSI; supports limit + a pagination cursor)./api/filesCreate./api/files/{org_id}/{id}Fetch one./api/files/{org_id}/{id}Partial update./api/files/{org_id}/{id}Delete.Uniform REST surface for the conversion-job resource at /api/conversion-jobs.
/api/conversion-jobsList (paginated; keys-only GSI; supports limit + a pagination cursor)./api/conversion-jobsCreate./api/conversion-jobs/{org_id}/{id}Fetch one./api/conversion-jobs/{org_id}/{id}Partial update./api/conversion-jobs/{org_id}/{id}Delete.Uniform REST surface for the setting resource at /api/settings.
/api/settingsList (paginated; keys-only GSI; supports limit + a pagination cursor)./api/settingsCreate./api/settings/{org_id}/{id}Fetch one./api/settings/{org_id}/{id}Partial update./api/settings/{org_id}/{id}Delete.Uniform REST surface for the feature-flag resource at /api/feature-flags.
/api/feature-flagsList (paginated; keys-only GSI; supports limit + a pagination cursor)./api/feature-flagsCreate./api/feature-flags/{org_id}/{id}Fetch one./api/feature-flags/{org_id}/{id}Partial update./api/feature-flags/{org_id}/{id}Delete.Uniform REST surface for the user resource at /api/users.
/api/usersList (paginated; keys-only GSI; supports limit + a pagination cursor)./api/usersCreate./api/users/{org_id}/{id}Fetch one./api/users/{org_id}/{id}Partial update./api/users/{org_id}/{id}Delete.The discovery layer the whole UI is built from — every form and table is rendered from these schemas.
/api/_metaList every resource and its base path./api/_meta/{resource}Role-aware field schema, list_columns and actions for one resource.Stream raw bytes into the API; they are white-labeled to S3 and throughput is measured.
/api/uploads/initStart an upload; returns { method, upload_url } where upload_url ends in /data./api/uploads/{file_id}/dataStream the raw bytes browser → API → S3./api/uploads/{file_id}/abortAbort an in-progress upload.One-shot or staged conversion, plus the capability graph that drives target picklists.
/api/convertOne-shot multipart: upload + convert in a single call (target_format + visibility + options); returns a job./api/files/{org_id}/{file_id}/conversionsAvailable targets + per-target option descriptors, with source width/height prefilled./api/convert/formatsThe full capability graph (source → target pairs)./api/conversion-jobs/{org_id}/{job_id}/retryRetry a failed conversion job.Files stream through the API (white-labeled, Range-aware); share controls visibility.
/api/files/{org_id}/{file_id}/downloadStream the file through the API (HTTP Range supported); accepts a signed ?dl=<token> so a plain link needs no auth header./api/files/{org_id}/{file_id}/shareSet visibility (private/org/public/restricted); returns a public/share link./api/s/{token}Public, no-auth fetch of a shared file.Resilient probe of every embedded metadata container, plus write-back / strip.
/api/files/{org_id}/{file_id}/metadataProbe EXIF/XMP/IPTC/PNG-text/ICC, ID3/Vorbis/MP4, ffprobe, PDF, Office — returns containers/common/sections/editable./api/files/{org_id}/{file_id}/metadataBody { anonymize, strip_all, set:{section:{k:v}}, remove:{section:[k]}, as_copy }.Indexable reference content, served as data — the same content these docs pages render.
/api/formatsThe full format catalog./api/formats/{fmt}One format's detail./api/formats/{fmt}/templateDownload a small example/template file for a format./api/help/metadataThe metadata-guide content as data.Identity, anonymous sessions, API keys, storage usage and the audit log.
/api/auth/meEcho the resolved identity./api/anon/sessionMint an anonymous session token./api/api-keysCreate an API key./api/api-keysList your API keys./api/api-keys/{key_id}Revoke an API key./api/usageStorage bytes / quota / file count./api/auditThe audit log.Health and metrics for monitoring.
/api/healthLiveness check./metricsPrometheus metrics.