Para quem constrói

API HTTP

O site é um cliente de uma API HTTP simples — tudo o que a zona de arrastar faz, você faz com curl. A API é gratuita durante o beta, sem chave exigida. Limites de taxa: 30 solicitações de escrita por minuto por IP, além das cotas diárias gratuitas (20 conversões / 3 de voz / 30 verificações — falhas são reembolsadas). Agentes de IA: aponte-os para /skill.md — ele contém esta página inteira em formato amigável a agentes.

Autenticação e cotas

A API está aberta sem nenhuma chave: chamadas anônimas compartilham a camada gratuita por IP (L1). Agentes e scripts que precisam de mais folga podem usar uma chave de API (L2b) — emita uma na sua página de conta e envie-a como token Bearer; cada chave tem suas próprias cotas diárias. As chaves são armazenadas como hashes SHA-256, o texto puro é exibido uma única vez na criação e nunca aparece nos logs.

IdentidadeConversões/diaVoz/diaVerificações/dia
Anônimo (por IP) — L120330
Chave de API (por chave) — L2b50020300

As cotas são reiniciadas à meia-noite UTC; conversões que falham são reembolsadas automaticamente. Escritas têm limite de 30 solicitações por minuto por IP.

# Anônimo (L1) — sem chave
curl -X POST https://liteconvert.cc/api/public/detect -F "file=@document.pdf"

# Com uma chave de API (L2b) — substitua sk-… pela sua chave
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: uma chave foi apresentada como token Bearer, mas falhou na validação (inválida ou revogada) — uma chave apresentada é sempre rejeitada, nunca rebaixada a anônima. Solicitações sem chave, ou com um cabeçalho Authorization que não seja uma chave Bearer, simplesmente contam contra a cota anônima L1. 429 QUOTA_EXCEEDED: a cota diária desta identidade esgotou; error.reset_at traz a hora exata de reinício (meia-noite UTC).

Quer mais folga? — emita uma chave de API na sua página de conta.

Endpoints

MétodoCaminhoO que faz
POST/api/public/detectIdentifica um arquivo (campo multipart file). Síncrono, ≤20 s.
POST/api/public/convertEnvia uma conversão (multipart meta + file). Retorna request_id.
GET/api/public/requests/{id}Estado, progresso e artefatos de uma solicitação.
GET/api/public/requests/recent?limit=20Suas conversões recentes neste dispositivo (cabeçalho X-Owner-Token, anônimo).
GET/api/public/requests/{id}/artifacts/{name}Redirecionamento 302 para a URL de download pré-assinada.
GET/api/public/requests/{id}/timelineTrilha de eventos legível da conversão.
GET/api/public/statsEstatísticas de taxa de sucesso ao vivo.
GET/api/public/conversionsO catálogo de conversões (todos os pares suportados).
GET/api/public/catalogO manifesto de build (chaves canônicas com family/lossy/steps) para construtores de sites.

Detectar um arquivo

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 }
}

Converter e baixar

# 1. Enviar (origens URL enviam meta com source_url e sem a parte de arquivo)
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. Consultar
curl https://liteconvert.cc/api/public/requests/REQUEST_ID
# → { "status": "succeeded", "artifacts": [{ "name": "docx", "download": "…", … }] }

# 3. Baixar (302 para a URL pré-assinada, válida por 1 h)
curl -L -o result.docx https://liteconvert.cc/api/public/requests/REQUEST_ID/artifacts/docx

Códigos de erro

StatusCódigoSignificado
401INVALID_API_KEYFoi apresentada uma chave inválida, ou a chave foi revogada. A revogação surte efeito imediatamente — emita uma nova chave na página de conta.
429QUOTA_EXCEEDEDCota diária gratuita esgotada (reinicia à meia-noite UTC; error.reset_at traz a hora exata). Conversões que falham são reembolsadas automaticamente.
422UNSUPPORTED_CONVERSIONO par de conversão não está no catálogo.
404ARTIFACT_EXPIREDO resultado expirou e foi excluído (retenção de 24 h) — converta novamente.
413/422INTAKE_FAILEDO envio falhou ou excedeu 200 MB.
502CONVERT_FAILEDOs motores tentaram e não conseguiram ler este arquivo. Os códigos de detalhe (NEEDS_OCR, ENCRYPTED_DOCUMENT, MALFORMED_DOCUMENT) são retornados em error.code da solicitação com mensagens fixas.
400INVALID_SOURCE_URLsource_url está ausente ou não é uma URL pública http(s) válida.
400SOURCE_URL_BLOCKEDA URL de origem resolve para um endereço privado, de loopback ou link-local e foi bloqueada (proteção SSRF).
502SOURCE_URL_FETCH_FAILEDNão foi possível baixar a URL de origem — offline, tempo esgotado, grande demais ou sem acesso público.
503CONVERT_API_UNAVAILABLEFalha temporária — tente novamente em um minuto.

Para agentes de IA

Busque /skill.md — é uma folha de instruções autocontida com os endpoints acima, exemplos resolvidos e a declaração da camada gratuita. Releia em caso de dúvida; ela é atualizada junto com a API.