Testing

Version and availability

The documentation pins the 1.0.0 release contract, not a confirmed production deployment. First check GET /v1/capabilities with the target environment’s key. Do not enable a feature solely because it appears in OpenAPI. A 404 means the capabilities contract is not supported yet; a missing response does not enable features. /readyz checks only the database; capabilities describe configuration, not external service health. Test translation and photo checks separately; do not send clips when videos: false.

Test environment

Every platform has two environments in the dashboard: test and live. Each has its own API key, signing secret, webhook URL and statistics. The API URL is the same — https://api.pereval.dating; the key decides the environment.

Test profiles are visible only to other test platforms and the network sandbox. They never reach real people, so debug freely. A test webhook URL may also be http://, e.g. a tunnel.

Sandbox

The test environment comes with sandbox profiles — “Песочница Перевала” in the partner field. They live in Moscow, St Petersburg, Kazan, Yekaterinburg and Novosibirsk, speak Russian or English, male and female. They behave like real people, only faster — within a couple of seconds:

  • like a sandbox profile — it likes you back, you get match.created;
  • message it — it replies, you get message.created; if the languages differ, the reply is translated;
  • send a new profile in one of these cities — two sandbox profiles nearby like it, you get like.received.

So you can test the whole flow without a second app of your own:

  1. Issue a test key and set your webhook URL.
  2. Click “Send a test event” in the dashboard — a ping with a valid signature should arrive.
  3. Send a profile in one of the sandbox cities — two like.received arrive.
  4. Get the feed — it shows sandbox profiles.
  5. Like one — match.created arrives.
  6. Message a Russian-speaking profile in English — check the translation and message.created.
  7. Delete the chat for one side, delete the pair, block, delete the profile — check match.erased and match.closed (with peer_deleted).

The dashboard shows a log of recent events and an API request chart: you see what arrived and what went to retry.

Local webhook development

The network must be able to reach your handler. For local development, use a tunnel (ngrok, cloudflared, tuna) and set its URL as the webhook URL of your test environment.

You can also do without a tunnel: leave the webhook URL empty and pull events yourself with GET /v1/events — see Events and webhooks.

Pre-launch checklist

  • The API key is stored only on the server.
  • Webhook signatures are verified against the raw body; an invalid signature returns 401.
  • A repeated event with the same id doesn’t duplicate anything.
  • The network participation toggle is off by default, with a link to pereval.dating next to it.
  • Consents are shown with their texts; time and version are saved.
  • Turning off participation sends the profile with consent.network: false; erasing data from the network and deleting an account call DELETE /v1/members/{id} right away (or deactivate if you give time to restore).
  • Cards show when a profile comes from the Pereval network. Translated text has an “AI-translated” label and a way to see the original.
  • In a swipe app, a skip without a like goes to POST /v1/dislikes. On a search site, the page follows cursor, and a dislike is only an explicit rejection.
  • Messages with suspicious: true are shown with a warning.
  • 409 location_change_limited and 429 first_messages_limit are explained to the user in plain words.
  • Blocking and reporting work for network profiles too.
  • Photos have no EXIF location data.

Optional services

Test network services with a test spending account: quotes/orders, order and action replays, missing/expired entitlements, incognito before/during a boost and integration restart. TEST SKUs use the -test suffix; rewind-day-test and incognito-day-test use days. Test prices are arbitrary. An administrator provisions credits and the separate key; the dashboard does not do this yet. Live checkout uses separate zero-price RUB SKUs, not TEST credits.

Unclear? Ask a developer

Read the reply and continue the conversation on this site using the private link you receive after sending. Incoming email is not accepted.