---
title: "A photo of a filled paper copy → the published form's values. 3 credits a page that lines up; test keys free."
method: POST
path: "/api/v1/custom-forms/{id}/scan"
tags: ["Custom forms"]
---

# A photo of a filled paper copy → the published form's values. 3 credits a page that lines up; test keys free.

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

## Request

- Base URL: `https://philforms.com`
- URL: `https://philforms.com/api/v1/custom-forms/{id}/scan`
- Auth: HTTP bearer

## Path parameters

- `id` string, required

## Query parameters

- `reader` 'local' | 'hybrid' | 'ai'

## Request body

- object
  - `page` object[]
    - `number` integer
    - `image` string, required: data:image/jpeg|png|webp;base64,… ≤ 8 MB
  - `image` string: page 1 only

## Response `200`

{ data, confidence, rejected, unread, registration }

## Other responses

- `400`: Bad page list or image
- `402`: Not enough fills left this month
- `404`: No such custom form
- `409`: Not published yet
- `413`: An image is over 8 MB
- `422`: The photo could not be lined up with this form

---

[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)
