# Quickstart Cognau answers one question: **is a live human present right now?** It is not document KYC. There is no ID upload, no name, no address. A short camera check runs a few randomized challenges and returns a pass or fail. The fastest path needs no integration at all. ## 1. Create a verification link From the dashboard, open **Links** and create one. Or from your terminal: ```bash curl -X POST https://machine.cognau.com/api/v1/cockpit/verification-links \ -H "Authorization: Bearer $COGNAU_TEST_KEY" \ -H "Content-Type: application/json" \ -d '{"label": "first test", "maxUses": 1}' ``` ```json { "success": true, "data": { "url": "https://verify.cognau.com/?link=cgn_vl_…", "prefix": "cgn_vl_ab12cd34", "maxUses": 1, "expiresAt": 1760000000000 } } ``` The URL is returned **once**. Only its hash is stored, so it cannot be shown again. Copy it now. ## 2. Open it Open the URL in a browser and complete the check. With a **test** key nothing real happens: no detection runs, no video frame is stored, and the verdict is simulated. It costs nothing. ## 3. Read the result Poll from your backend, or receive a webhook: ```bash curl https://machine.cognau.com/api/v1/cockpit/sessions \ -H "Authorization: Bearer $COGNAU_TEST_KEY" ``` ### Try it right here Paste a **test** key and send the request. It runs against the real API from your browser. ```tryit { "method": "POST", "path": "/cockpit/verification-links", "title": "creates a real link on your test account", "body": "{\n \"label\": \"from the docs\",\n \"maxUses\": 1,\n \"expiresInDays\": 7\n}" } ``` That is the whole loop. When you are ready to put this inside your own product, there are two routes: - **[Embed the widget](/docs/embedding)** in an iframe on your page. - **[Create sessions from your backend](/docs/sessions)** with your secret key, which is the production shape. ## Test and live Every key carries its environment in the string: | Prefix | Behaviour | |---|---| | `cgn_sk_test_…` | Sandbox. No detection, no stored video, simulated verdict, free. | | `cgn_sk_live_…` | Real verification. Billed per check. | Build against `test` until your integration is done. The wire format is identical, so nothing changes when you switch except the key.