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.
| Identity | Conversions/day | Voice/day | File checks/day |
|---|---|---|---|
| Anonymous (per IP) — L1 | 20 | 3 | 30 |
| API Key (per key) — L2b | 500 | 20 | 300 |
# 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"Ready for more headroom — issue an API key on your account page.
Endpoints
| Method | Path | What it does |
|---|---|---|
| POST | /api/public/detect | Identify a file (multipart file field). Synchronous, ≤20s. |
| POST | /api/public/convert | Submit 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=20 | Your 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}/timeline | Human-readable event trail of the conversion. |
| GET | /api/public/stats | Live success-rate statistics. |
| GET | /api/public/conversions | The conversion catalog (all supported pairs). |
| GET | /api/public/catalog | The 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/docxError codes
| Status | Code | Meaning |
|---|---|---|
| 401 | INVALID_API_KEY | An invalid key was presented, or the key was revoked. Revocation takes effect immediately — issue a new key on the account page. |
| 429 | QUOTA_EXCEEDED | Daily free quota used up (resets at UTC midnight; error.reset_at carries the exact time). Failed conversions are refunded automatically. |
| 422 | UNSUPPORTED_CONVERSION | The conversion pair is not in the catalog. |
| 404 | ARTIFACT_EXPIRED | The result expired and was deleted (24h retention) — convert again. |
| 413/422 | INTAKE_FAILED | Upload failed or exceeded 200 MB. |
| 502 | CONVERT_FAILED | The 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. |
| 400 | INVALID_SOURCE_URL | source_url is missing or is not a valid public http(s) URL. |
| 400 | SOURCE_URL_BLOCKED | The source URL resolves to a private, loopback or link-local address and was blocked (SSRF protection). |
| 502 | SOURCE_URL_FETCH_FAILED | The source URL could not be downloaded — offline, timed out, too large, or not publicly reachable. |
| 503 | CONVERT_API_UNAVAILABLE | Temporary 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.