---
title: "Download the guest signature PDF"
method: GET
path: "/public/guest-signature/{token}/pdf"
tags: ["Guest Signature"]
---

# Download the guest signature PDF

`GET /public/guest-signature/{token}/pdf`

## Request

- Base URL: `https://api.faireplace.com/api`
- URL: `https://api.faireplace.com/api/public/guest-signature/{token}/pdf`
- Auth: none required

Streams the (unsigned/preview) PDF for the guest signer to review before
signing. Public, token-based (no login).

## Why a backend proxy
The PDF is stored encrypted with SSE-C; a browser cannot send the SSE-C
headers from an iframe. The backend therefore fetches and decrypts the
document, then streams the clear bytes. When previous signatures already
exist, the already-signed PDF is served (so each signer consents to the
real document).

## Embedding
The response sets `Content-Disposition: inline` and relaxes framing
headers (`frame-ancestors` allow-list) so the PDF can be embedded in the
FairePlace frontend.

## Example
```bash
curl -L https://api.faireplace.com/api/public/guest-signature/3f8b1c2d-...-9a0e/pdf \
  --output bail.pdf
```

## Path parameters

- `token` string, required

## Response `200`

PDF document (binary stream).

## Other responses

- `404`: Token invalid, not found, or malformed (generic, anti-oracle).
- `410`: The session has expired or has already been used.
- `423`: Too many failed attempts: session temporarily locked.
- `500`: Internal error (no infra details leaked).
- `503`: The guest signature feature is temporarily disabled.

---

[API](https://skmtc.dev/faireplace/apis/faireplace-property-management-api.md) · [All operations](https://skmtc.dev/faireplace/apis/faireplace-property-management-api/llms.txt) · [OpenAPI document](https://skmtc.dev/faireplace/apis/faireplace-property-management-api/revisions/69de39762919?raw)
