Safestate
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.

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"
}

{
  "success": false,
  "error": "Invalid JSON in request body"
}

{
  "success": false,
  "error": "Partner ID and API key are required in headers"
}

{
  "success": false,
  "error": "Failed to onboard customer"
}

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.safestate.com/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.safestate.com/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"
  }'