\usepackage{python}

API de LaTeX a PDF para Python

Compile LaTeX a PDF desde Python con una sola solicitud HTTP. Use la biblioteca estándar requests o httpx para uso asíncrono; no requiere instalar ningún SDK.

Also available in:Python·Node.js·Go·PHP·Ruby·Rust·cURL|Full API reference

\section{Installation}

Instalación

No se necesita ningún SDK. La API de FormaTeX es una API REST HTTP estándar. Instale requests para uso síncrono o httpx si necesita compatibilidad con async.

terminal
pip install requests
# or with httpx for async
pip install httpx

\section{Inicio rápido}

Inicio rápido

El siguiente ejemplo compila un documento LaTeX mínimo y guarda el PDF resultante en disco. Sustituya your-api-key por una clave de su panel .

quickstart.py
import requests

API_KEY = "your-api-key"  # get from formatex.io/dashboard/api-keys
API_URL = "https://api.formatex.io/api/v1"

latex_source = r"""
\documentclass{article}
\usepackage{amsmath}
\begin{document}
Hello from Python! $E = mc^2$
\end{document}
"""

response = requests.post(
    f"{API_URL}/compile",
    headers={
        "X-API-Key": API_KEY,
        "Content-Type": "application/json",
    },
    json={
        "latex": latex_source,
        "engine": "pdflatex",
    },
)

response.raise_for_status()

with open("output.pdf", "wb") as f:
    f.write(response.content)

print("PDF saved to output.pdf")

\section{Authentication}

Autenticación

Todas las solicitudes a la API deben incluir una cabecera X-API-Key:

X-API-Key: your-api-key
  • → Genere claves de API desde su panel después de registrarse.
  • → Guarde las claves en variables de entorno; nunca las escriba directamente en los archivos de código fuente.
  • → Use os.environ["FORMATEX_API_KEY"] para leer la clave en tiempo de ejecución.

\section{Engines}

Selección del motor

Indique un campo engine en el cuerpo JSON. Valores admitidos: pdflatex, xelatex, lualatex, latexmk. Consulte la documentación de motores para más detalles.

engines.py
# Choose your engine
for engine in ["pdflatex", "xelatex", "lualatex", "latexmk"]:
    response = requests.post(
        f"{API_URL}/compile",
        headers={"X-API-Key": API_KEY, "Content-Type": "application/json"},
        json={"latex": latex_source, "engine": engine},
    )
    print(f"{engine}: {response.status_code}, {len(response.content)} bytes")

\section{Gestión de errores}

Gestión de errores

La API devuelve códigos de estado HTTP. Un 422 significa que su LaTeX no se pudo compilar: el cuerpo JSON contiene un campo error con un extracto del registro de TeX. 401 indica una clave de API no válida o ausente.

error_handling.py
import requests
from requests.exceptions import HTTPError

def compile_latex(source: str, engine: str = "pdflatex") -> bytes:
    """Compile LaTeX to PDF, raising on error with useful message."""
    try:
        response = requests.post(
            f"{API_URL}/compile",
            headers={
                "X-API-Key": API_KEY,
                "Content-Type": "application/json",
            },
            json={"latex": source, "engine": engine},
            timeout=30,
        )
        response.raise_for_status()
        return response.content
    except HTTPError as e:
        if e.response.status_code == 422:
            error_data = e.response.json()
            raise ValueError(f"LaTeX compilation failed: {error_data.get('error')}") from e
        elif e.response.status_code == 401:
            raise PermissionError("Invalid API key. Check your FORMATEX_API_KEY.") from e
        raise

\section{Async}

Uso asíncrono con httpx

Use httpx.AsyncClient para compilar documentos de forma concurrente en aplicaciones Python asíncronas, como FastAPI o scripts async.

async_compile.py
import asyncio
import httpx

async def compile_latex_async(source: str) -> bytes:
    async with httpx.AsyncClient() as client:
        response = await client.post(
            "https://api.formatex.io/api/v1/compile",
            headers={
                "X-API-Key": API_KEY,
                "Content-Type": "application/json",
            },
            json={"latex": source, "engine": "pdflatex"},
            timeout=30.0,
        )
        response.raise_for_status()
        return response.content

# Run it
pdf_bytes = asyncio.run(compile_latex_async(latex_source))

\section{Reference}

Referencia de la API

CampoTipoObligatorioDescripción
latexstringSíCódigo fuente LaTeX completo como cadena de texto
enginestringNoMotor que se usará. Valor predeterminado: "pdflatex". Opciones: pdflatex, xelatex, lualatex, latexmk

POST https://api.formatex.io/api/v1/compile — Devuelve bytes de PDF sin procesar si tiene éxito ( 200), o un error JSON si falla ( 422/ 401).

\end{python}

Empiece a compilar LaTeX desde Python

Obtenga su clave de API, ejecute el inicio rápido y tenga su PDF en minutos.