SafeWeb
Partner API

Onboard a new customer

POST
/api/v1/integrations/customer/onboard

Header Parameters

SW-PARTNER-ID*string

Partner organization identifier

SW-API-KEY*string

API authentication key

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

At least one of assetsDomains or assetsEmails must be provided. Fields with defaults (status, planType, enrolType, sendMonthlyReport, localeCode) are optional.

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/api/v1/integrations/customer/onboard" \  -H "SW-PARTNER-ID: string" \  -H "SW-API-KEY: string" \  -H "Content-Type: application/json" \  -d '{    "companyName": "Acme Corporation",    "contactEmail": "contact@acme.co",    "customerReference": "ACME-001",    "assetsDomains": [      "acme.co",      "www.acme.co"    ],    "alertRecipients": [      "alerts@acme.co"    ],    "price": 49.99,    "billedFromDate": "2026-06-01T00:00:00.000Z",    "currencyCode": "USD",    "planType": "safeweb-basic",    "enrolType": "opt-in",    "sendMonthlyReport": true,    "localeCode": "en-GB",    "shouldReceiveBreachAlerts": true,    "status": "active"  }'
{  "success": true,  "message": "Customer onboarded successfully",  "customerId": "550e8400-e29b-41d4-a716-446655440000"}

Optional: status field

By default, new customers are active and receive full ongoing monitoring. Set the optional status field to "prospect" for a one-time exposure scan with redacted breach results. Upgrade to active when the customer converts.

curl -X POST https://connect.safeweb.co/api/v1/integrations/customer/onboard \
  -H "Content-Type: application/json" \
  -H "SW-PARTNER-ID: your-partner-id" \
  -H "SW-API-KEY: your-api-key" \
  -d '{
    "companyName": "Acme Corporation",
    "contactEmail": "contact@acme.co",
    "customerReference": "ACME-PROSPECT-001",
    "assetsDomains": ["acme.co"],
    "alertRecipients": ["sales@yourpartner.com"],
    "price": 0,
    "billedFromDate": "2026-07-01T00:00:00.000Z",
    "currencyCode": "GBP",
    "status": "prospect"
  }'

Omit status (or set "status": "active") for a fully monitored customer:

curl -X POST https://connect.safeweb.co/api/v1/integrations/customer/onboard \
  -H "Content-Type: application/json" \
  -H "SW-PARTNER-ID: your-partner-id" \
  -H "SW-API-KEY: your-api-key" \
  -d '{
    "companyName": "Acme Corporation",
    "contactEmail": "contact@acme.co",
    "customerReference": "ACME-001",
    "assetsDomains": ["acme.co"],
    "alertRecipients": ["alerts@acme.co"],
    "price": 49.99,
    "billedFromDate": "2026-07-01T00:00:00.000Z",
    "currencyCode": "GBP"
  }'

Rate limiting

This endpoint is rate limited. See Rate limiting for limits, the 429 response format, and integration guidance.