---
title: "Generate Bulk Timetables PDF"
method: POST
path: "/Pdf/Timetables"
tags: ["Pdf"]
---

# Generate Bulk Timetables PDF

`POST /Pdf/Timetables`

**Requires permission:** *TimetableAdmin*

Renders a two-week timetable for each supplied pupil or staff member to a branded PDF in-house (QuestPDF), one landscape page per person, and returns the bytes. Everything is resolved in a handful of projected queries regardless of how many people are asked for.

## Request body

- PostTimetablesPdfRequest
  - `title` string, nullable
  - `type` string, nullable
  - `upis` string[]

## Response `200`

Success - PDF bytes (application/pdf)

## Other responses

- `204` — No Content
- `400` — An error occurred generating the PDF
- `401` — Unauthorized
- `403` — Forbidden - Requires TimetableAdmin

## Changes

- **2026-08-27** `fb36fab6825e` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/tonbridge/apis/tonbridge-app-api/changes/Pdf/Timetables/post.md)

---

[API](https://skmtc.dev/tonbridge/apis/tonbridge-app-api.md) · [All operations](https://skmtc.dev/tonbridge/apis/tonbridge-app-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/tonbridge/tonbridge-app-api/revisions/223cb0feedeb/schema)
