Skip to content

API Overview

All API endpoints are prefixed with /api. The server listens on port 3000 by default.

Base URL

http://localhost:3000/api

Content Types

DirectionContent-Type
Request (JSON)application/json
Request (Typst)text/typst
Request (Binary)application/octet-stream
Response (PDF)application/pdf
Response (JSON)application/json

Authentication

If enabled, all requests require HTTP Basic Auth:

bash
curl -u "username:password" http://localhost:3000/api/templates

Rate Limiting

Limit TypeWindowMax Requests
General60s100
Compilation60s30

Rate limit headers are included in responses:

  • X-RateLimit-Limit
  • X-RateLimit-Remaining
  • X-RateLimit-Reset

Standard Responses

Success

json
{
  "status": "ok",
  "data": { ... }
}

Error

json
{
  "status": "error",
  "error": "Description of what went wrong"
}

HTTP Status Codes

CodeMeaning
200Success
201Created
204Deleted (no content)
400Bad request / validation error
401Unauthorized (auth required)
404Not found
413Payload too large
429Rate limited
500Internal server error

Endpoints Summary

MethodPathDescription
POST/api/previewCompile inline Typst to PDF
POST/api/reportCompile saved template to PDF
GET/api/templatesList all templates
POST/api/templatesCreate a template folder
GET/api/templates/:nameGet template content
PUT/api/templates/:nameCreate or update template
DELETE/api/templates/:nameDelete a template
GET/api/foldersList template folders
POST/api/foldersCreate a template folder
DELETE/api/foldersDelete a template folder
GET/api/assetsList all assets
POST/api/assetsCreate asset folder
GET/api/assets/:nameGet asset file
POST/api/assets/:nameUpload asset
DELETE/api/assets/:nameDelete asset
GET/api/assets/foldersList asset folders
POST/api/assets/foldersCreate asset folder
DELETE/api/assets/foldersDelete asset folder
GET/api/packagesList installed packages
POST/api/packagesInstall a package
DELETE/api/packagesDelete a package
POST/api/packages/checkCheck for missing packages
GET/api/healthHealth check
GET/api/metricsServer metrics

Design and Dev by David Lam