List partner customers
Query Parameters
Page number (1-based)
1 <= value1Number of customers per page (max 100)
1 <= value <= 10020Filter customers by lifecycle status
Value in
- "active"
- "inactive"
- "dormant"
- "prospect"
Header Parameters
Partner organization identifier
API authentication key
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/integrations/partner/customers" \ -H "SW-PARTNER-ID: string" \ -H "SW-API-KEY: string"{ "success": true, "customers": [ { "customerId": "550e8400-e29b-41d4-a716-446655440000", "customerRef": "CUST-001", "customerStatus": "active", "breachStatus": true, "breachCount": 3, "domains": [ "example.com", "example.net" ], "emails": [ "user@example.com" ] }, { "customerId": "660e8400-e29b-41d4-a716-446655440001", "customerRef": "CUST-002", "customerStatus": "prospect", "breachStatus": false, "breachCount": 0, "domains": [], "emails": [] } ], "pagination": { "totalCount": 42, "page": 1, "pageSize": 20, "hasNextPage": true }}When to use this endpoint
Use this endpoint to enumerate and reconcile your customer portfolio without calling per-customer endpoints. Each record includes:
- The customer UUID and your customer reference
- Lifecycle status (
active,prospect,inactive, ordormant) - Breach summary (
breachStatusandbreachCount) - Monitored domains and asset emails
For full customer profile details, use Get customer info. For breach records or threat scoring, use the dedicated customer endpoints.
Requires SW-PARTNER-ID and SW-API-KEY. Distributors may use a distributor API key on behalf of a partner. See Partner API authentication.
Customer statuses
| Status | Meaning |
|---|---|
active | Live customer with full monitoring |
prospect | Pre-onboard customer; see Prospecting |
inactive | Offboarded customer |
dormant | Paused customer that has not been deactivated |
Filter results with the optional status query parameter.
Breach fields
| Field | Meaning |
|---|---|
breachCount | Total breach instances across monitored emails, including resolved breaches |
breachStatus | true when breachCount > 0, otherwise false |
Asset fields
| Field | Meaning |
|---|---|
domains | Monitored domains configured for the customer |
emails | Monitored asset email addresses (discovered_customer_emails), not the contact email from onboarding |
Empty asset lists are returned as [].
Pagination
| Parameter | Default | Description |
|---|---|---|
page | 1 | 1-based page number |
pageSize | 20 | Customers per page (max 100) |
Use pagination.hasNextPage to determine whether another page is available. pagination.totalCount reflects the full result set for the current filter, not just the current page.
Worked example
# List active customers, page 1
curl -sS "https://connect.safeweb.co/api/v1/integrations/partner/customers?status=active" \
-H "SW-PARTNER-ID: your-partner-id" \
-H "SW-API-KEY: your-api-key" | jq .
# Next page when hasNextPage is true
curl -sS "https://connect.safeweb.co/api/v1/integrations/partner/customers?status=active&page=2&pageSize=50" \
-H "SW-PARTNER-ID: your-partner-id" \
-H "SW-API-KEY: your-api-key" | jq .Example success response:
{
"success": true,
"customers": [
{
"customerId": "550e8400-e29b-41d4-a716-446655440000",
"customerRef": "CUST-001",
"customerStatus": "active",
"breachStatus": true,
"breachCount": 3,
"domains": ["example.com", "example.net"],
"emails": ["user@example.com"]
},
{
"customerId": "660e8400-e29b-41d4-a716-446655440001",
"customerRef": "CUST-002",
"customerStatus": "prospect",
"breachStatus": false,
"breachCount": 0,
"domains": [],
"emails": []
}
],
"pagination": {
"totalCount": 42,
"page": 1,
"pageSize": 20,
"hasNextPage": true
}
}Related
Get partner analytics GET
Retrieve high-level analytics about your partner account including total customers, active monitors, and breach statistics. Requires authentication via SW-PARTNER-ID and SW-API-KEY headers. Accepts a partner or distributor API key.
Rate limiting
How Partner API rate limits work, which endpoints are affected, and how to handle 429 responses.