> For the complete documentation index, see [llms.txt](https://docs.powerfulform.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.powerfulform.com/public-api/test-site.md).

# API test site

Try every endpoint from the page — parameters, request body, live response.

Every endpoint of the Public API, with its parameters, its request body and the exact JSON it returns. Click **Test it** on any of them, paste your API key, and the real response comes back on the page.

{% hint style="warning" %}
**These are real calls against your real store.** `POST` creates a submission that counts toward your allowance and fires your notification emails and integrations. `DELETE` removes data permanently, with no undo. Point the write endpoints at a form you made for testing, not one your customers are filling in.
{% endhint %}

Authenticate with `X-PFB-API-KEY`, or with `Authorization: Bearer` — both work. See [Create an API key](/public-api/api-keys.md) for how to issue one, and give a testing key only the scopes you intend to try.

## Ping

{% openapi src="<https://openapi.gitbook.com/o/GncibuwB3Dmtq3C7yVUn/spec/powerful-form-builder-public-api.yaml>" path="/ping" method="get" %}
<https://openapi.gitbook.com/o/GncibuwB3Dmtq3C7yVUn/spec/powerful-form-builder-public-api.yaml>
{% endopenapi %}

## Forms

{% openapi src="<https://openapi.gitbook.com/o/GncibuwB3Dmtq3C7yVUn/spec/powerful-form-builder-public-api.yaml>" path="/forms" method="get" %}
<https://openapi.gitbook.com/o/GncibuwB3Dmtq3C7yVUn/spec/powerful-form-builder-public-api.yaml>
{% endopenapi %}

{% openapi src="<https://openapi.gitbook.com/o/GncibuwB3Dmtq3C7yVUn/spec/powerful-form-builder-public-api.yaml>" path="/forms/{id}" method="get" %}
<https://openapi.gitbook.com/o/GncibuwB3Dmtq3C7yVUn/spec/powerful-form-builder-public-api.yaml>
{% endopenapi %}

## Submissions

{% openapi src="<https://openapi.gitbook.com/o/GncibuwB3Dmtq3C7yVUn/spec/powerful-form-builder-public-api.yaml>" path="/forms/{id}/submit" method="post" %}
<https://openapi.gitbook.com/o/GncibuwB3Dmtq3C7yVUn/spec/powerful-form-builder-public-api.yaml>
{% endopenapi %}

{% openapi src="<https://openapi.gitbook.com/o/GncibuwB3Dmtq3C7yVUn/spec/powerful-form-builder-public-api.yaml>" path="/submissions" method="get" %}
<https://openapi.gitbook.com/o/GncibuwB3Dmtq3C7yVUn/spec/powerful-form-builder-public-api.yaml>
{% endopenapi %}

{% openapi src="<https://openapi.gitbook.com/o/GncibuwB3Dmtq3C7yVUn/spec/powerful-form-builder-public-api.yaml>" path="/submissions/{id}" method="get" %}
<https://openapi.gitbook.com/o/GncibuwB3Dmtq3C7yVUn/spec/powerful-form-builder-public-api.yaml>
{% endopenapi %}

{% openapi src="<https://openapi.gitbook.com/o/GncibuwB3Dmtq3C7yVUn/spec/powerful-form-builder-public-api.yaml>" path="/submissions/{id}" method="patch" %}
<https://openapi.gitbook.com/o/GncibuwB3Dmtq3C7yVUn/spec/powerful-form-builder-public-api.yaml>
{% endopenapi %}

{% openapi src="<https://openapi.gitbook.com/o/GncibuwB3Dmtq3C7yVUn/spec/powerful-form-builder-public-api.yaml>" path="/submissions/{id}" method="delete" %}
<https://openapi.gitbook.com/o/GncibuwB3Dmtq3C7yVUn/spec/powerful-form-builder-public-api.yaml>
{% endopenapi %}

{% openapi src="<https://openapi.gitbook.com/o/GncibuwB3Dmtq3C7yVUn/spec/powerful-form-builder-public-api.yaml>" path="/submissions/bulk\_delete" method="post" %}
<https://openapi.gitbook.com/o/GncibuwB3Dmtq3C7yVUn/spec/powerful-form-builder-public-api.yaml>
{% endopenapi %}

{% openapi src="<https://openapi.gitbook.com/o/GncibuwB3Dmtq3C7yVUn/spec/powerful-form-builder-public-api.yaml>" path="/submissions/{id}/files/{uuid}" method="get" %}
<https://openapi.gitbook.com/o/GncibuwB3Dmtq3C7yVUn/spec/powerful-form-builder-public-api.yaml>
{% endopenapi %}

## Metrics

{% openapi src="<https://openapi.gitbook.com/o/GncibuwB3Dmtq3C7yVUn/spec/powerful-form-builder-public-api.yaml>" path="/metrics" method="get" %}
<https://openapi.gitbook.com/o/GncibuwB3Dmtq3C7yVUn/spec/powerful-form-builder-public-api.yaml>
{% endopenapi %}

{% openapi src="<https://openapi.gitbook.com/o/GncibuwB3Dmtq3C7yVUn/spec/powerful-form-builder-public-api.yaml>" path="/metrics/daily" method="get" %}
<https://openapi.gitbook.com/o/GncibuwB3Dmtq3C7yVUn/spec/powerful-form-builder-public-api.yaml>
{% endopenapi %}

{% openapi src="<https://openapi.gitbook.com/o/GncibuwB3Dmtq3C7yVUn/spec/powerful-form-builder-public-api.yaml>" path="/metrics/breakdown" method="get" %}
<https://openapi.gitbook.com/o/GncibuwB3Dmtq3C7yVUn/spec/powerful-form-builder-public-api.yaml>
{% endopenapi %}

## If a test request fails

<table><thead><tr><th width="230">What you see</th><th>What it means</th></tr></thead><tbody><tr><td><code>401 unauthorized</code></td><td>No key reached the server. Fill the authentication field in the test panel.</td></tr><tr><td><code>401 invalid_api_key</code></td><td>The key is mistyped, revoked or expired. Paste the whole thing, including the <code>pfb_</code> prefix.</td></tr><tr><td><code>403 insufficient_scope</code></td><td>The testing key does not carry that permission. Scopes are fixed at creation — issue a new key.</td></tr><tr><td><code>403 plan_upgrade_required</code></td><td>The store is on a plan below <strong>Advanced</strong>. See <a href="/settings/plans-and-billing.md">Plans and billing</a>.</td></tr><tr><td><code>404</code> on every endpoint</td><td>Your store is served from a different cluster. Copy the base URL from <strong>Settings → Public API</strong> and call it from your own terminal instead.</td></tr><tr><td><code>429 rate_limited</code></td><td>The per-minute budget for that bucket is spent. Wait the number of seconds in <code>Retry-After</code>.</td></tr></tbody></table>

Full explanations are in [Errors](/public-api/errors.md).

<br>

## Next steps

* [Make your first call](/public-api/quickstart.md) — the same first three requests, from a terminal.
* [Requests and responses](/public-api/requests-and-responses.md) — pagination, rate limits and the envelope.
* [Errors](/public-api/errors.md) — every error code and how to handle it.
