Testing
Build and run end-to-end tests without spending a cent.
Use a test key (vm_test_…) everywhere outside production. Test mode never
bills, and gives you three ways to get the code:
| Approach | Setup | Result |
|---|---|---|
provider: "test:header" | none | Nothing is sent; the message comes back in the X-Verify-Response header |
| Test targets | add a number/email + fixed code in Console → Testing & limits | That target always uses its code; nothing is sent |
| Any provider | a test profile | Delivered for real; the message is also shown in Console → Verifications |
CI example
Register +15550000001 with code 000000 as a test target, then:
const { token } = await verifyme.send({ target: "+15550000001" })
const { success } = await verifyme.check({ token, code: "000000" })
expect(success).toBe(true)For the widget, the same target works in the frame — type 000000.
Local origins (http://localhost:*) are allowed for test-mode widget sessions
without adding them to the allowlist.
Live mode ignores test targets and never stores message text. Switching to production is just swapping the key.