# Getting started

> **Not a developer?** Start at [Learn](/learn): short videos and plain manuals for store owners, employees, HR, bookkeepers and business owners.

PhilForms fills official Philippine government forms for you. That includes BIR, SSS, PhilHealth, Pag-IBIG, GSIS, CSC and more.

You send the answers. You get back the real form as a PDF, with every answer printed in the right box. Each PDF is also sealed and digitally signed, so anyone can check it is genuine.

> **No code yet?** Open the [fill studio](/fill), pick a form and type. It is the same engine, in your browser.

## What you need

- A free PhilForms account. Create one on the [account page](/account), or from code: `curl -X POST https://philforms.com/api/v1/account -H "Content-Type: application/json" -d '{"email":"you@example.com"}'`. A new account starts on Free (25 credits a month, watermarked outside the free grants) with a 30-day Pro trial banked: start it with `POST /api/v1/account/trial` (or `"start_trial": true` at sign-up) any time until February 28, 2027. Free also issues 5 clean BIR 2307s a quarter and 5 clean 2316s a year through `POST /api/v1/certificates`.
- A way to send a web request. The examples below use `curl`, which comes with macOS, Linux and Windows 10 and later.

## Step 1: get your API key

Want to see a fill before writing code? The [playground](/docs/playground) loads a form's parameters with example values and runs a check or a fill from the page.

An **API key** is a password for your code. A new account first opens a one-minute set-up (who you fill forms for, what brings you here, your details — skip it any time); then your account page shows two keys, once:

| Key | Starts with | Use it for | Safe in browser code? |
|---|---|---|---|
| Live key | `pk_live_` | Real PDFs. Each one costs a credit from your plan (see [Credits](/docs/credits)). | No. Keep it on your server. |
| Test key | `pk_test_` | Free practice, up to 500 test PDFs a month. Every PDF is stamped "TEST - NOT FOR FILING". | No. |
| Site key | `pk_embed_` | A form on your own website. It works only on the sites you list (see [Embed](/docs/embed)). | Yes. |

Keep the live key secret, like any password. Your code sends it in a header: `Authorization: Bearer <your key>`.

> **Good to know:** on the Free plan and during the trial, answers are printed into the PDF as a sharp image. It looks the same on paper. Paid plans print real text you can select and search.

## Step 2: find your form

Every form has an id, like `bir-2307`. Search by number or by name:

```bash
curl "https://philforms.com/api/v1/engine/forms?q=2307"
```

Then ask what the form needs:

```bash
curl https://philforms.com/api/v1/parameters/bir-2307
```

You get a list of **parameters**: one for each box on the form. Each one has a `name` (the key you send), the `label` printed on the paper, and a `type` such as text, date or amount. You can also browse every form in the [form reference](/docs/forms).

## Step 3: check your answers

Before you make a PDF, ask PhilForms to check your answers. A check is free. It needs no key and uses none of your quota.

```bash
curl -X POST https://philforms.com/api/v1/engine/check/bir-2307 \
  -H "Content-Type: application/json" \
  -d '{"payee_tin":"123-456-789-000","payee_name":"DELA CRUZ, JUAN"}'
```

If something is wrong, the answer tells you which box, what it expects, and why.

## Step 4: fill the form

Send the same answers to the fill address, with your key:

```bash
curl -X POST https://philforms.com/api/v1/engine/fill/bir-2307 \
  -H "Authorization: Bearer $PHILFORMS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"payee_tin":"123-456-789-000","payee_name":"DELA CRUZ, JUAN"}' \
  -o 2307.pdf
```

Open `2307.pdf`. That is the official form, filled in.

> **Tip:** you can try steps 3 and 4 without a terminal in the [API playground](/docs/playground).

## Step 5: let others verify it

Anyone who receives your PDF can check that PhilForms issued it and that nobody changed it since. They drop the file on the [verify page](/verify). Read more in [Seals and verification](/docs/verify).

## Where to go next

- [Filling a form](/docs/fill-api): every option, header and error.
- [Form fields and types](/docs/parameters): what to send for each kind of box.
- [Automation and integrations](/docs/automation): many forms at once, spreadsheets and no-code tools.
