Pular para o conteúdo principal
TransConvert

TransConvert API

Converta imagens e documentos via programação com um único endpoint HTTP simples.

image API de conversão de imagens description API de conversão de documentos picture_as_pdf API de conversão de PDF movie API de Conversão de Vídeo music_note API de Conversão de Áudio compress API de compressão de imagens compress API de compressão de PDF
rocket_launch

Início rápido

Do zero ao seu primeiro arquivo convertido em três passos.

1

Obtenha sua chave de API

Cadastre-se (ou faça upgrade de uma conta existente) para Basic, Lite, Pro ou Equipe, depois gere uma chave na página da sua conta — você pode voltar e vê-la de novo a qualquer momento.

2

Envie uma requisição

Envie seu arquivo por POST para o endpoint abaixo como multipart/form-data, com sua chave no cabeçalho Authorization e category + target definidos.

3

Receba seu arquivo de volta

Uma resposta 200 são os bytes brutos do arquivo convertido — salve o corpo da resposta diretamente. Qualquer outra coisa é um erro JSON explicando o que deu errado.

key

Autenticação

Toda requisição precisa de uma chave de API, enviada como Bearer token no cabeçalho Authorization.

Header
Authorization: Bearer tc_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Disponível nos planos Basic, Lite, Pro e Equipe. Gere uma chave na sua conta →

Teste sua chave

Uma forma rápida de confirmar que uma chave funciona antes de escrever qualquer código de integração de verdade — isso sozinho não converte nada (nenhum arquivo anexado), mas um 400 no_file em vez de um 401 confirma que a chave em si é válida.

curl -X POST -H "Authorization: Bearer tc_live_your_key_here" -F "category=image" https://transconvert.com/api/v1/convert.php
dns

O endpoint

Um único endpoint cuida de todas as conversões. Envie uma requisição POST multipart/form-data com seu arquivo e os campos abaixo.

POST https://transconvert.com/api/v1/convert.php

Parâmetros

Field Description
AuthorizationObrigatório. "Bearer tc_live_...".
categoryObrigatório. "image" ou "document" — para comprimir em vez de converter, veja Comprimir abaixo.
targetObrigatório. O código do formato de saída, ex.: "PNG", "DOCX" — veja Formatos suportados abaixo.
fileObrigatório. O arquivo a converter (upload multipart).
pdf_modeOpcional, somente na categoria image. "pages" (padrão, rasteriza cada página) ou "extract" (extrai as imagens embutidas como estão) — relevante apenas quando a origem é um PDF.
pdf_pagesOpcional, somente na categoria image. "all" (padrão) ou "first".
pdf_qualityOpcional, somente na categoria image. "normal" (padrão, 150 DPI) ou "high" (300 DPI).

Conversões comuns

Uma referência rápida para os pares mais populares — o mesmo endpoint cuida de todos eles, apenas com uma combinação diferente de category/target.

Source → target category target
PNG → JPGimageJPG
JPG → PNGimagePNG
HEIC → JPGimageJPG
WEBP → PNGimagePNG
JPG → PDFimagePDF
PDF → JPGimageJPG
DOCX → PDFdocumentPDF
PDF → DOCXdocumentDOCX
PPTX → PDFdocumentPDF
XLSX → PDFdocumentPDF

Resposta

Em caso de sucesso (200): os bytes brutos do arquivo convertido, com os cabeçalhos Content-Type e Content-Disposition definidos para ele. Em caso de falha: um corpo JSON no formato {"error": {"code": "...", "message": "..."}} com um código de status HTTP correspondente — veja Erros abaixo.

Header Value
Content-TypeO tipo MIME real do arquivo convertido (ex.: image/png, application/pdf).
Content-Dispositionattachment; filename="..." — um nome de arquivo sugerido, como em qualquer download de arquivo.
Content-LengthTamanho do corpo da resposta em bytes.
compress

Comprimir

Reduza um arquivo sem mudar o formato — mesmo formato na entrada e na saída. Um par de categorias separado da conversão, image-compress e document-compress, cada uma com suas próprias opções abaixo.

image-compress

Mesmo formato na entrada e na saída (JPG/PNG/WEBP/GIF) — target_percent é o quão pequeno o resultado deve tentar ficar em relação ao original, não uma configuração fixa de qualidade.

Field Description
categoryDefina como "image-compress".
target_percentOpcional, 1–100 (padrão 60). Tamanho-alvo como uma porcentagem aproximada do original — números menores comprimem mais.
fileObrigatório. JPG, PNG, WEBP ou GIF.
cURL
curl -X POST \
  https://transconvert.com/api/v1/convert.php \
  -H "Authorization: Bearer tc_live_your_key_here" \
  -F "category=image-compress" \
  -F "target_percent=50" \
  -F "file=@photo.jpg" \
  -o compressed.jpg

document-compress

PDF na entrada, PDF na saída, via a própria recompressão do Ghostscript — nunca retorna um arquivo maior do que o enviado (usa o original como alternativa se a recompressão não ajudar).

Field Description
categoryDefina como "document-compress".
levelOpcional: "low", "medium" (padrão), "high" ou "none". Uma compressão maior troca mais qualidade visual, principalmente em imagens/digitalizações embutidas.
grayscaleOpcional. "1" para também converter para escala de cinza; omita para manter as cores.
fileObrigatório. Um PDF que não esteja aberto/protegido por senha (se estiver, use primeiro «Desbloquear PDF» no site).
cURL
curl -X POST \
  https://transconvert.com/api/v1/convert.php \
  -H "Authorization: Bearer tc_live_your_key_here" \
  -F "category=document-compress" \
  -F "level=high" \
  -F "file=@report.pdf" \
  -o compressed.pdf
Header Value
X-Original-SizeO tamanho do arquivo enviado em bytes, antes da compressão.
X-Saved-PercentAproximadamente o quanto o resultado é menor que o original, como uma porcentagem inteira (pode ser 0).
movie

Vídeo e áudio (assíncrono)

Conversões de vídeo e áudio podem levar minutos — tempo demais para manter uma única requisição síncrona aberta — então elas usam um fluxo de enviar-e-consultar em vez do endpoint acima. Envie um arquivo, receba um job_id na hora e consulte o status até terminar.

Enviar um job

O mesmo formato de POST multipart do endpoint principal, em uma URL diferente.

POST https://transconvert.com/api/v1/convert-async.php
Field Description
AuthorizationObrigatório. "Bearer tc_live_...".
category"video" ou "audio".
targetObrigatório — ex.: "MP4", "MOV", "MP3", "WAV".
fileObrigatório. O arquivo a converter (upload multipart).
webhook_urlOpcional. Uma URL http(s) para onde o resultado do job será enviado (POST) ao terminar, em vez de apenas consultar job-status.php. Deve resolver para um endereço público.
cURL
curl -X POST \
  https://transconvert.com/api/v1/convert-async.php \
  -H "Authorization: Bearer tc_live_your_key_here" \
  -F "category=video" \
  -F "target=MP4" \
  -F "file=@clip.mov"

Resposta (202 Accepted)

{ "job_id": "job_242e1555d78d166807aa56502f15d118", "status": "queued" }

Consultar o status

Consulte este endpoint a cada poucos segundos com o job_id que você recebeu. "status" é um destes: queued, processing, completed ou failed.

GET https://transconvert.com/api/v1/job-status.php?job_id=job_...
{
  "job_id": "job_242e1555d78d166807aa56502f15d118",
  "status": "completed",
  "category": "video",
  "target_format": "MP4",
  "created_at": "2026-08-26 19:17:47",
  "download_url": "/api/v1/job-status.php?job_id=job_...&download=1",
  "filename": "clip.mp4"
}

Webhooks (opcional)

Se você informou um webhook_url ao enviar, enviaremos esse mesmo corpo JSON assim que o job terminar — sucesso ou falha — tentando novamente algumas vezes se seu endpoint não responder. O job-status.php continua funcionando como alternativa.

POST your webhook_url
{
  "job_id": "job_242e1555d78d166807aa56502f15d118",
  "status": "completed",
  "category": "video",
  "target_format": "MP4",
  "created_at": "2026-08-26 19:17:47",
  "download_url": "https://transconvert.com/api/v1/job-status.php?job_id=job_...&download=1",
  "filename": "clip.mp4"
}

Baixar o resultado

Quando o status for "completed", a resposta inclui um download_url — a mesma URL de status com &download=1 adicionado. Ao requisitá-la, você recebe os bytes brutos do arquivo convertido, com os mesmos cabeçalhos de qualquer outro endpoint desta página. O resultado é excluído no momento em que é baixado, ou automaticamente após um curto período de retenção caso nunca seja baixado.

scheduleOs resultados dos jobs são excluídos imediatamente após o download, ou automaticamente após um curto período de retenção caso nunca sejam baixados — baixe assim que possível.

terminal

Exemplos

A mesma requisição em quatro linguagens — escolha a que combina com sua stack. Cada uma converte um photo.jpg local para PNG e salva o resultado.

TransConvert
curl -X POST \
  https://transconvert.com/api/v1/convert.php \
  -H "Authorization: Bearer tc_live_your_key_here" \
  -F "category=image" \
  -F "target=PNG" \
  -F "file=@photo.jpg" \
  -o converted.png
error

Erros

Toda falha retorna um envelope de erro JSON com um "code" no qual seu código pode se basear, além de uma "message" legível por humanos. Alguns erros incluem campos extras (quota_exceeded inclui "limit" e "used", por exemplo).

429 Too Many Requests
{
  "error": {
    "code": "quota_exceeded",
    "message": "Monthly API allowance of 5000 conversion-minutes reached.",
    "limit": 5000,
    "used": 5000
  }
}
Status & code When it happens
401 missing_keyNenhum cabeçalho Authorization foi enviado.
401 invalid_keyA chave não existe, ou foi revogada.
403 account_suspendedA conta dona dessa chave está suspensa.
403 plan_requiredA conta está no plano Gratuito — o acesso à API exige Basic, Lite, Pro ou Equipe.
400 invalid_category"category" não era "image" nem "document".
400 missing_target"target" estava vazio.
400 no_fileNenhum arquivo foi enviado, ou o upload falhou — o campo precisa se chamar "file".
413 file_too_largeO arquivo excede o tamanho máximo de upload do seu plano.
429 quota_exceededA cota mensal de minutos de conversão do plano já foi usada. Reinicia no começo do próximo mês do calendário.
429 concurrency_limitJá há conversões demais rodando ao mesmo tempo para essa conta (compartilhado com o site) — espere uma terminar e tente de novo.
400/415/422/500/503 conversion_failedO próprio arquivo não pôde ser convertido — "message" explica o motivo. O código de status varia conforme o motivo: 400/415/422 significam que o arquivo ou o target não vão funcionar não importa quantas vezes você tente de novo; 500/503 significam um problema do lado do servidor, e 503 especificamente vale a pena tentar de novo em pouco tempo.
405 method_not_allowedMétodo HTTP errado — esse endpoint só aceita POST.
400 invalid_target"target" não é um formato de saída compatível para essa categoria.
404 job_not_foundNão existe nenhum job com esse id para esta conta (também retornado para o job_id de outra conta — sua existência nunca é revelada).
410 result_goneO job foi concluído, mas o resultado já foi excluído (os resultados são excluídos imediatamente após o download, ou automaticamente após um curto período de retenção).
500 storage_failedO servidor não conseguiu salvar o upload para processamento em segundo plano. Pode tentar de novo com segurança.

Lidando com erros e novas tentativas

Baseie sua lógica no campo JSON "code", não no texto de "message" — a redação pode mudar com o tempo, o código não. concurrency_limit vale a pena tentar de novo em poucos segundos (ele se resolve assim que uma das suas conversões em andamento termina); quota_exceeded não se resolve sozinho até o mês seguinte, então não tente de novo em loop. conversion_failed é o único código em que o status HTTP ainda importa: um 503 é um problema passageiro do lado do servidor que vale uma nova tentativa curta, enquanto 400/415/422/500 significam que aquela combinação exata de arquivo/target não vai funcionar não importa quantas vezes você reenvie. Verificar o tamanho de um arquivo no lado do cliente antes de enviar evita gastar uma requisição com um file_too_large garantido.

speed

Planos e limites

A API compartilha os limites do mesmo plano que você já usa no site — nada separado para configurar.

bolt

Basic

bolt2000 minutos de conversão / mês

upload_fileArquivos de até 2 GB

sync_alt50 requisição(ões) por vez

speed30 solicita\u00e7\u00f5es/minuto

bolt

Lite

bolt3000 minutos de conversão / mês

upload_fileArquivos de até 4 GB

sync_alt100 requisição(ões) por vez

speed60 solicita\u00e7\u00f5es/minuto

Mais popular
workspace_premium

Pro

bolt5000 minutos de conversão / mês

upload_fileArquivos de até 10 GB

sync_altRequisições ilimitadas por vez

speed120 solicita\u00e7\u00f5es/minuto

group

Equipe

bolt10000 minutos de conversão / mês

upload_fileArquivos de até 20 GB

sync_altRequisições ilimitadas por vez

speed240 solicita\u00e7\u00f5es/minuto

tollCompartilhado com o pool de créditos mensal da equipe, se ela usar um

Quando um limite por minuto se aplica, cada resposta inclui os cabeçalhos X-RateLimit-Limit e X-RateLimit-Remaining; uma resposta 429 também inclui Retry-After (em segundos) — use-os para desacelerar antes de atingir o limite, em vez de reagir somente após um 429.

layers

Formatos suportados

Exatamente o mesmo mecanismo de conversão que o site usa — nada é exclusivo da API ou exclusivo do site.

image

category: image

Aceito como origem:

JPG, PNG, GIF, WEBP, BMP, AVIF, PDF, PSD, TIFF, EPS, HEIC

Disponível como destino:

JPG, PNG, GIF, WEBP, BMP, AVIF, PDF, ICO, PSD, TIFF, EPS

description

category: document

Aceito como origem:

PDF, DOCX, DOC, PPTX, PPT, XLSX, XLS, RTF, ODT, ODP, ODS, HTML

Disponível como destino:

PDF, DOCX, DOC, PPTX, PPT, XLSX, XLS, RTF, ODT, ODP, ODS

compress

category: image-compress

Origem e destino (mesmo formato na entrada e na saída):

JPG, PNG, WEBP, GIF

compress

category: document-compress

Origem e destino (mesmo formato na entrada e na saída):

PDF

movie

category: video (async)

Origem e destino (mesmo formato na entrada e na saída):

MP4, MOV, AVI, MKV, WEBM

music_note

category: audio (async)

Origem e destino (mesmo formato na entrada e na saída):

MP3, WAV, OGG, AAC, FLAC, M4A, WMA, OPUS, AIFF, AMR, AU, CAF, AC3, DTS, GSM, IRCAM, MP2, TTA, VOC, W64, WV, SPX, RM

infoVídeo e áudio — tanto conversão quanto compressão — são exclusivos do site por enquanto: uma chamada HTTP síncrona não é adequada para uma tarefa que pode levar vários minutos.

help

Perguntas frequentes

A API tem suporte a conversão de vídeo ou áudio?

Ainda não — essas conversões podem levar vários minutos, o que não combina bem com uma única requisição HTTP síncrona. Elas já estão disponíveis no site hoje; o suporte na API pode vir se um dia existir uma versão assíncrona/baseada em jobs da API.

O que acontece com minha chave se eu fizer downgrade para o Gratuito?

O acesso à API exige Basic, Lite, Pro ou Equipe. Se a conta passar para o Gratuito — por cancelamento, ou uma assinatura vencida — as chaves existentes param de funcionar imediatamente. Elas voltam a funcionar automaticamente se a conta retornar a um plano pago; você não precisa gerar uma nova.

Quando minha cota mensal é reiniciada?

No início de cada mês do calendário, não na sua data de cobrança.

Existe um modo sandbox ou de teste?

No momento não — toda requisição conta na sua cota mensal real. Use arquivos pequenos durante a integração para economizar.

Posso rodar conversões em paralelo?

Até o limite de concorrência do seu plano (veja Planos e limites acima) — compartilhado com quaisquer conversões que você também esteja rodando no site ao mesmo tempo, não é uma cota separada só para a API.

A compressão garante um arquivo menor?

Para document-compress, sim — nunca devolve um PDF maior do que o enviado; se a recompressão do Ghostscript não ajudou, você recebe o original sem alterações (X-Saved-Percent mostrará 0). Para image-compress, target_percent é uma meta que o codificador tenta alcançar, não uma garantia absoluta — uma origem já muito comprimida pode não encolher muito mais.

Pronto para começar?

Gere uma chave e faça sua primeira requisição em menos de um minuto.

Obtenha sua chave de API