Compile LaTex & Typst into PDF with TypeTex
Compile Typst and LaTeX documents to PDF via API. Send source code, get back a PDF.
Compile Typst and LaTeX documents to PDF via API. Send source code, get back a PDF.
Real data. Real impact.
Growing
Developers
Per week
Open source
Skills give you superpowers. Install in 30 seconds.
Compile Typst (.typ) and LaTeX (.tex) documents to PDF using the TypeTex compilation API.
Base URL:
https://studio-intrinsic--typetex-compile-app.modal.run
POST /public/compile/typst Content-Type: application/json
Request Body:
{ "content": "#set page(paper: \"a4\")\n\n= Hello World\n\nThis is a Typst document.", "main_filename": "main.typ", "auxiliary_files": {} }
Response (Success):
{ "success": true, "pdf_base64": "JVBERi0xLjQK..." }
Response (Failure):
{ "success": false, "error": "error: file not found: missing.typ" }
POST /public/compile/latex Content-Type: application/json
Request Body:
{ "content": "\\documentclass{article}\n\\begin{document}\nHello World\n\\end{document}", "main_filename": "main.tex", "auxiliary_files": {} }
Response (Success):
{ "success": true, "pdf_base64": "JVBERi0xLjQK..." }
Response (Failure):
{ "success": false, "error": "! LaTeX Error: Missing \\begin{document}.", "log_output": "This is pdfTeX..." }
GET /public/compile/health
Returns
{"status": "ok", "service": "public-compile"} if the service is running.
import requests import base64response = requests.post( "https://studio-intrinsic--typetex-compile-app.modal.run/public/compile/typst", json={ "content": """ #set page(paper: "a4", margin: 2cm) #set text(font: "New Computer Modern", size: 11pt)
= My Document
This is a paragraph with bold and italic text.
== Section 1
- Item 1
- Item 2
- Item 3 """, "main_filename": "main.typ" } )
result = response.json() if result["success"]: pdf_bytes = base64.b64decode(result["pdf_base64"]) with open("output.pdf", "wb") as f: f.write(pdf_bytes) print("PDF saved to output.pdf") else: print(f"Compilation failed: {result['error']}")
import requests import base64response = requests.post( "https://studio-intrinsic--typetex-compile-app.modal.run/public/compile/latex", json={ "content": r""" \documentclass[11pt]{article} \usepackage[margin=1in]{geometry} \usepackage{amsmath}
\title{My Document} \author{Author Name}
\begin{document} \maketitle
\section{Introduction}
This is a LaTeX document with math: $E = mc^2$
\end{document} """, "main_filename": "main.tex" } )
result = response.json() if result["success"]: pdf_bytes = base64.b64decode(result["pdf_base64"]) with open("output.pdf", "wb") as f: f.write(pdf_bytes) else: print(f"Compilation failed: {result['error']}") if result.get("log_output"): print(f"Log: {result['log_output']}")
import requests import base64response = requests.post( "https://studio-intrinsic--typetex-compile-app.modal.run/public/compile/typst", json={ "content": """ #import "template.typ": *
#show: project.with(title: "My Report")
= Introduction
#include "chapter1.typ" """, "main_filename": "main.typ", "auxiliary_files": { "template.typ": """ #let project(title: none, body) = { set page(paper: "a4") set text(font: "New Computer Modern")
align(center)[ #text(size: 24pt, weight: "bold")[#title] ]
body } """, "chapter1.typ": """ == Chapter 1
This is the first chapter. """ } } )
result = response.json() if result["success"]: pdf_bytes = base64.b64decode(result["pdf_base64"]) with open("report.pdf", "wb") as f: f.write(pdf_bytes)
For binary files like images, base64-encode them:
import requests import base64Read and encode an image
with open("figure.png", "rb") as f: image_base64 = base64.b64encode(f.read()).decode("utf-8")
response = requests.post( "https://studio-intrinsic--typetex-compile-app.modal.run/public/compile/typst", json={ "content": """ #set page(paper: "a4")
= Document with Image
#figure( image("figure.png", width: 80%), caption: [A sample figure] ) """, "main_filename": "main.typ", "auxiliary_files": { "figure.png": image_base64 } } )
# Typst compilation curl -X POST https://studio-intrinsic--typetex-compile-app.modal.run/public/compile/typst \ -H "Content-Type: application/json" \ -d '{ "content": "#set page(paper: \"a4\")\n\n= Hello World\n\nThis is Typst.", "main_filename": "main.typ" }' | jq -r '.pdf_base64' | base64 -d > output.pdfLaTeX compilation
curl -X POST https://studio-intrinsic--typetex-compile-app.modal.run/public/compile/latex
-H "Content-Type: application/json"
-d '{ "content": "\documentclass{article}\n\begin{document}\nHello World\n\end{document}", "main_filename": "main.tex" }' | jq -r '.pdf_base64' | base64 -d > output.pdf
When compilation fails, the response includes:
success: falseerror: Human-readable error messagelog_output (LaTeX only): Full compilation log for debuggingCommon errors:
auxiliary_filessuccess before accessing pdf_base64auxiliary_files for multi-file projectsNo automatic installation available. Please visit the source repository for installation instructions.
View Installation Instructions1,500+ AI skills, agents & workflows. Install in 30 seconds. Part of the Torly.ai family.
© 2026 Torly.ai. All rights reserved.