# Test mode

Test keys (`mm_test_…`) let you build and test an integration without spending credits.

- Same endpoints, same checks, same answer shapes and error codes as live.
- Results are **made up** but realistic, and always the same for the same input.
- **Never** charged, and they never contact a mail server, a website or any data source.
- Jobs are `running` for about 2 seconds, then `done`, so polling and `wait` behave like live.
- Webhooks are really sent to your URL (that is the point: you can test your endpoint).
- Answers have `"livemode": false`. Test lists and jobs are separate from live ones and deleted after 30 days.

## Test values

Use these to get each kind of result:

| Endpoint | Input | Result |
| --- | --- | --- |
| verify | any normal email | Works |
| verify | name part contains `bounce` or `invalid` (`bounce@acme.com`) | Does not work |
| verify | name part contains `unknown` | Not sure |
| verify | domain starts with `catchall.` (`sam@catchall.acme.com`) | Takes any name → Probably works |
| find-contacts | first + last name + website | `first.last@domain`, Works |
| find-contacts | last name `Nobody` | Not found |
| find-contacts | website starts with `catchall.` | Probably works |
| find-contacts | `action: companyInbox` | `info@domain`, Works |
| find-contacts | `action: roleContact` | a made-up owner, "Owner email from their website" |
| find-contacts | no website or domain | skipped (`no_eligible_rows` if none is left) |
| deep-search | company + website | a made-up summary and first line (registry facts for `country: "GB"`) |
| search | any category and place | up to 25 made-up businesses on `.example` domains |

`POST /verify` with `{"emails": ["bounce@acme.com", "sam@acme.com"]}` gives one "Does not work" and one "Works".

