---
title: "Fill the published form → sealed PDF. Same plan rules as every fill: test keys free + marked; then the month's quota, then prepaid forms."
method: POST
path: "/api/v1/custom-forms/{id}/fill"
tags: ["Custom forms"]
---

# Fill the published form → sealed PDF. Same plan rules as every fill: test keys free + marked; then the month's quota, then prepaid forms.

`POST /api/v1/custom-forms/{id}/fill`

## Request

- Base URL: `https://philforms.com`
- URL: `https://philforms.com/api/v1/custom-forms/{id}/fill`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-PDFPhile-Embed`

## Path parameters

- `id` string, required

## Request body

- object: Values keyed by parameter name

## Response `200`

Filled, sealed PDF

## Other responses

- `400`: Refused values (`issue`)
- `402`: Monthly quota reached (prepaid forms are used first when there are any)
- `404`: No such custom form
- `409`: Not published yet, or a prepaid form was used by a parallel request
- `429`: The site's embed cap

---

[API](https://skmtc.dev/philforms/apis/philforms-api.md) · [All operations](https://skmtc.dev/philforms/apis/philforms-api/llms.txt) · [OpenAPI document](https://skmtc.dev/philforms/apis/philforms-api/revisions/a43bf313729c?raw)
