For builders

HTTP API

The website is a client of a plain HTTP API — everything the drop zone does, you can do with curl. The API is free during the beta, no key required. Rate limits: 30 write requests per minute per IP, plus daily free quotas (20 conversions / 3 voice / 30 checks — failures refunded). AI agents: point them at /skill.md — it contains this whole page in agent-friendly form.

Authentication & quotas

The API is open without any key: anonymous callers share the free per-IP tier (L1). Agents and scripts that need more headroom can use an API Key (L2b) — issue one on your account page and send it as a Bearer token; each key gets its own daily quotas. Keys are stored as SHA-256 hashes, the plaintext is shown once at creation, and it never appears in logs.

IdentityConversions/dayVoice/dayFile checks/day
Anonymous (per IP) — L120330
API Key (per key) — L2b50020300

Quotas reset at UTC midnight; failed conversions are refunded automatically. Writes are rate-limited to 30 requests per minute per IP.

# Anonymous (L1) — no key needed
curl -X POST https://liteconvert.cc/api/public/detect -F "file=@document.pdf"

# With an API Key (L2b) — replace sk-… with your key
curl -X POST https://liteconvert.cc/api/public/convert \
  -H "Authorization: Bearer sk-…" \
  -F 'meta={"conversion":"pdf-docx"};type=application/json' \
  -F "file=@document.pdf"

401 INVALID_API_KEY: a key was presented as a Bearer token but failed validation (invalid or revoked) — a presented key is always rejected, never downgraded to anonymous. Requests with no key, or with an Authorization header that is not a Bearer key, simply count against the anonymous L1 quota. 429 QUOTA_EXCEEDED: this identity's daily quota is used up; error.reset_at carries the exact reset time (UTC midnight).

Ready for more headroom — issue an API key on your account page.

Endpoints

MethodPathWhat it does
POST/api/public/detectIdentify a file (multipart file field). Synchronous, ≤20s.
POST/api/public/convertSubmit a conversion (multipart meta + file). Returns request_id.
GET/api/public/requests/{id}Status, progress and artifacts of a request.
GET/api/public/requests/recent?limit=20Your recent conversions on this device (X-Owner-Token header, anonymous).
GET/api/public/requests/{id}/artifacts/{name}302 redirect to the presigned download URL.
GET/api/public/requests/{id}/timelineHuman-readable event trail of the conversion.
GET/api/public/statsLive success-rate statistics.
GET/api/public/conversionsThe conversion catalog (all supported pairs).
GET/api/public/catalogThe build manifest (canonical keys with family/lossy/steps) for site builders.

Detect a file

curl -X POST https://liteconvert.cc/api/public/detect -F "file=@document.pdf"
{
  "request_id": "c0af…",
  "status": "succeeded",
  "report": { "declared": "pdf", "detected": "pdf", "match": true,
              "mime": "application/pdf", "confidence": 0.99 }
}

Convert and download

# 1. Submit (URL sources send meta with source_url and no file part)
curl -X POST https://liteconvert.cc/api/public/convert \
  -F 'meta={"conversion":"pdf-docx"};type=application/json' \
  -F "file=@document.pdf"
# → 202 { "request_id": "…", "status": "running" }

# 2. Poll
curl https://liteconvert.cc/api/public/requests/REQUEST_ID
# → { "status": "succeeded", "artifacts": [{ "name": "docx", "download": "…", … }] }

# 3. Download (302 to presigned URL, valid 1h)
curl -L -o result.docx https://liteconvert.cc/api/public/requests/REQUEST_ID/artifacts/docx

Error codes

StatusCodeMeaning
401INVALID_API_KEYAn invalid key was presented, or the key was revoked. Revocation takes effect immediately — issue a new key on the account page.
429QUOTA_EXCEEDEDDaily free quota used up (resets at UTC midnight; error.reset_at carries the exact time). Failed conversions are refunded automatically.
422UNSUPPORTED_CONVERSIONThe conversion pair is not in the catalog.
404ARTIFACT_EXPIREDThe result expired and was deleted (24h retention) — convert again.
413/422INTAKE_FAILEDUpload failed or exceeded 200 MB.
502CONVERT_FAILEDThe engines tried and could not read this file. Detail codes (NEEDS_OCR, ENCRYPTED_DOCUMENT, MALFORMED_DOCUMENT) are returned in the request error.code with fixed messages.
400INVALID_SOURCE_URLsource_url is missing or is not a valid public http(s) URL.
400SOURCE_URL_BLOCKEDThe source URL resolves to a private, loopback or link-local address and was blocked (SSRF protection).
502SOURCE_URL_FETCH_FAILEDThe source URL could not be downloaded — offline, timed out, too large, or not publicly reachable.
503CONVERT_API_UNAVAILABLETemporary outage — retry in a minute.

For AI agents

Fetch /skill.md — it is a self-contained instruction sheet with the endpoints above, worked examples and the free-tier declaration. Re-read it when unsure; it updates with the API.