Connect your website to Prive+
A short guide for website owners. In this example your site is yourwebsite.com.
Prefer not to code? Grok Bot can do this setup for you
Create your key in step 1, then let Grok Bot handle the rest.
Set it up with Grok Bot1. Add your website in Prive+
- Open Prive+ and sign in.
- Add your website (for example
yourwebsite.com) and its listings (homes, products, rooms, services, events…). - Open the website’s settings and choose Connect API key > Create key.
- Copy the key (it starts with
pck_) and store it on your server, for example in an environment file. It is shown only once.
Only the website owner and its admins can create, rotate or revoke keys. A key works only for its own website.
2. Add the “Connect with Prive” button
- In the dashboard where the people or businesses on yourwebsite.com manage their listings (agents, sellers, hosts, advertisers), show a Connect with Prive button on each listing.
- When the listing owner taps it, your server (never the browser) calls
POST /api/connect/sitewith your key. - Prive+ replies with an
app_url. Open it for the listing owner. - The Prive+ app opens. The listing owner signs in or creates an account and taps Confirm. Only then is the listing linked.
- Use
GET /api/connect/site/statusto show the button as Connected.
In progress The app-confirmation flow (app_url with pending status) is being rolled out now. Details below may still change slightly.
3. API reference
Base URL https://priveconnect.com. Every request needs Authorization: Bearer pck_…. Send JSON. Call from your server only.
POST /api/connect/site
curl -X POST https://priveconnect.com/api/connect/site \
-H "Authorization: Bearer $PRIVE_CONNECT_KEY" \
-H "Content-Type: application/json" \
-d '{"slug":"sunny-villa-listing","site_advertiser_id":"42","display_name":"Sunny Villa – Coastal Homes","telegram_id":"123456789"}'
| Field | Meaning | |
|---|---|---|
slug | required | The listing id you added in Prive+ (max 64 chars). |
site_advertiser_id | optional | Your internal id for the listing owner, returned in status. |
display_name | optional | Name shown for the listing owner (max 40 chars). Defaults to the listing title. |
telegram_id | optional | The listing owner’s numeric Telegram user id, if you have it (3–20 digits). |
Not connected yet → pending, the listing owner confirms in the app:
{ "ok": true, "claim_status": "pending", "prive_account_id": null,
"app_url": "https://priveconnect.com/app/?connect=pcl_…",
"expires_at": "2026-10-13T10:15:00.000Z", "slug": "sunny-villa-listing" }
Already connected → safe to repeat, returns the same account:
{ "ok": true, "claim_status": "claimed", "prive_account_id": "u_…",
"signin_url": "https://priveconnect.com/app/#sso=…", "slug": "sunny-villa-listing", "repeat": true }
GET /api/connect/site/status?slug=SLUG
{ "ok": true, "slug": "sunny-villa-listing", "connected": true, "claim_status": "claimed",
"prive_account_id": "u_…", "claimed_at": "2026-10-13T09:00:00.000Z",
"telegram_linked": true, "site_advertiser_id": "42" }
Errors
| HTTP | error | When |
|---|---|---|
| 400 | bad_telegram_id | telegram_id is not numeric. |
| 401 | unauthorized | Missing, wrong or revoked key. |
| 404 | unknown_listing | No listing with that slug on your website. |
| 409 | claimed_by_other_account | The listing is already linked to a different account. |
| 409 | telegram_id_is_site_team | That Telegram account belongs to your website’s own team. |
| 429 | rate_limited | More than 30 requests a minute. Retry after retry_after seconds. |
4. Security
- Your key is shown once. Prive+ stores only a hash of it.
- Create a new key to rotate (older keys stop working), or revoke a key at any time in the website settings.
app_urllinks are single-use and expire after 15 minutes.signin_urllinks are single-use and expire after 10 minutes.- Nothing is linked until the listing owner confirms in the Prive+ app.
- Never put the key in browser code or a mobile app.