Compile from a link
Open a link, get the PDF. The LaTeX source travels in the address, or the address points at a .tex file, and the answer is the PDF itself. No key, nothing to install.
Quick start
Put the URL-encoded source in text= and open the address in a browser, or fetch it from a script:
$ curl -o hello.pdf "https://api.pressa.dev/compile?text=%5Cdocumentclass%7Barticle%7D%5Cbegin%7Bdocument%7DHello%5Cend%7Bdocument%7D"Or point it at a .tex file that is online, for example the raw address of a file on GitHub:
$ curl -o paper.pdf "https://api.pressa.dev/compile?url=https://raw.githubusercontent.com/user/repo/main/paper.tex"Parameters
| Parameter | Meaning |
|---|---|
text | The LaTeX source, URL-encoded. Every special character must be encoded: a browser drops everything after a raw # (write %23), a raw & starts a new parameter (%26), a raw + becomes a space (%2B), and % must be %25. encodeURIComponent in JavaScript and urllib.parse.quote in Python encode all of them. A link whose source stops before \end{document} is refused with that explanation. The whole address can be about 9 KB, which is roughly 4 to 6 KB of LaTeX, since every backslash and brace takes three characters once encoded. Use url= or POST for anything longer. |
url | The http or https address of one .tex file on the public internet. Up to 30 KB without a key. Files it \input or \includegraphics are not fetched. |
command | pdflatex (default) or xelatex, which also covers Chinese, Japanese, Persian and fontspec. |
force | Accepted and ignored: the result depends only on the source, so there is nothing stale to force past. |
Give exactly one of text or url.
What comes back
- 200, application/pdf: the PDF itself, not a link to it, so
curl -oworks without following redirects. X-Pressa-Pages says how many pages it has. - 4xx, text/plain: what went wrong, in plain words. When the LaTeX does not compile, the first lines name the error and the fix, and the TeX log follows.
- 429: the daily allowance without a key is used up; the text says how to get more.
Without a key
- The same source is compiled once and then served to everyone who opens the link for about a day, without using anyone's allowance. A new source is a compile and counts toward 3 PDFs a day per address.
- A document longer than 3 pages comes back as its first pages, so the link keeps working; X-Pressa-Total-Pages and X-Pressa-Note say how long the whole document is.
- A small "Made with Pressa" line is added at the foot of each page.
- Anything in the address is not private: it ends up in browser history and in the logs of every service between you and us. Send private documents with POST /api/v1/compile instead.
With a free key sent as an Authorization: Bearer header, the same link compiles on your account: more pages, no line, your monthly allowance. A key never goes in the address.
Moving from latexonline.cc
The parameters are the ones latexonline.cc uses, so a script or link that works there needs only a new host:
https://latexonline.cc/compile?text=...&command=xelatex
https://api.pressa.dev/compile?text=...&command=xelatex- Pressa compiles with TeX Live 2025 and answers in about a second for a short document.
- Errors come with a diagnosis and a suggested fix, not only the TeX log.
- Building a whole git repository (git=) is not supported yet. For a single file use url=; for a project with several files use the CLI or the API with assets.
- Without a key there is a daily allowance; latexonline.cc publishes none.
A PDF link in a README
Point url= at the raw address of the .tex file. Everyone who clicks gets the current PDF, built from the file as it is now:
[Download the PDF](https://api.pressa.dev/compile?url=https://raw.githubusercontent.com/user/repo/main/cv.tex)For AI assistants
An assistant that can open addresses but cannot send a request body, as in many chat apps, can still make a PDF: build the link and give it to the user, who opens it. An assistant that can send requests should use POST /api/v1/compile or the MCP server, which take longer documents and keep the source out of the address.