# Test mode

Build and test your integration for free with pv_test_ keys.

> **Coming soon:** The Developer API opens soon. You can read the docs now; API keys arrive when it opens.

Test keys (`pv_test_…`) let you build your whole integration before you buy credits. They run the
real request, with the same checks and the same responses, but they never convert your image and
never use credits. They work with a balance of zero.

## What is the same as live

- Authentication, key revocation and suspension.
- The file checks: the image must be a readable PNG, JPEG or WebP, up to 5 MiB and 100 to 4096
  pixels per side. A bad image gets the same `413`, `415` or `422` error as in live mode.
- `options` validation, `Idempotency-Key` rules, the `Prefer` and `Accept` headers.
- The response objects, headers, status codes and error format.
- Rate limits: 20 creates a minute and about 120 other requests a minute, counted separately from
  your live traffic.

## What is different

| | Test key | Live key |
|---|---|---|
| Result | A fixed sample SVG marked "TEST MODE", the same for every image | The conversion of your image |
| Timing | Finished at once: `201`, `"status": "succeeded"`, `completed_at` equal to `created_at` | Takes some seconds; may answer `202` |
| Credits | Never. `X-Credits-Charged: 0`, and `X-Credits-Would-Charge` shows what a live key would pay | 1 per successful conversion |
| Conversions at a time | No limit (nothing is queued) | 1 per account |
| Files | Your image is checked, then discarded. Nothing is stored. | Stored for 24 hours |
| Records | Deleted after 7 days; the `vec_…` ID then answers `404` | Kept with your account history |
| `api_paused` | Test keys keep working while live conversions are paused | `503 api_paused` |

The sample SVG can be downloaded for 24 hours, like a live result, and `DELETE` works the same way.

## Test and live are separate

A test key sees only test conversions, and a live key only live ones. A `vec_…` ID from the other
mode answers `404 not_found`. `Idempotency-Key` values are separate too.

`GET /v1/account` with a test key shows your **live** API balance, for information, and
`"max_in_flight": null` in `limits`.

## Not available yet

Test mode always succeeds. There is no way yet to make a test request fail on purpose, so test your
handling of failed conversions with the examples in [Results](/docs/api/results) and
[Errors](/docs/api/errors).

Test keys count toward your 10 active keys.

[Site index](https://perfectvector.com/llms.txt) — available pages and descriptions.
