API reference
Profiles
Look up, list and erase profiles.
Read customer profiles: find one by identifier or id, page through a workspace, or erase a customer. See Profiles for how profiles form.
Look up a profile#
Finds the profile that holds an identifier. Returns 404 if no profile has it.
Query
type string email or phone.value string +91, still matches.curl "https://api.breeze.in/cdp/control-plane/v1/tenants/breeze/workspaces/my-store/profiles/lookup?type=phone&value=9812345678" \
-H "Authorization: Bearer $BREEZEIQ_TOKEN"{
"profile_id": "60de1d6e-748f-87dc-ab33-bfbbaba9b299",
"workspace_id": "my-store",
"status": "active",
"profile_type": "customer",
"component_version": 3,
"created_at": "2026-10-08T10:15:02Z",
"identifiers": [
{
"type": "email",
"tier": "strong",
"value": "[email protected]",
"masked_value": "pr****@example.com",
"key": "9f2c…",
"status": "active"
},
{
"type": "cookie",
"tier": "weak",
"value": null,
"masked_value": "3f9a****",
"key": "52a9…",
"status": "active"
}
],
"metrics": [
{
"metric": "total_spend",
"display_name": "Total spend",
"value": "2499",
"stamped_version": 3
},
{
"metric": "country",
"display_name": "Country",
"value": "1791364450",
"text": "IN",
"stamped_version": 3
}
],
"segments": [
{
"segment_id": "vip-customers",
"display_name": "VIP customers",
"state": "entered",
"origin": "live-eval",
"entered_at": "2026-10-08T10:15:04Z",
"exited_at": null
}
]
}The response is the profile view:
- Metric values are strings so exact decimals survive. Time metrics are Unix seconds.
- Identifier
valueis shown in plain text only for types your environment allows (typically email and phone). Otherwise it isnulland onlymasked_valueis returned.
Get a profile#
Returns the same profile view as Look up a profile, by id. Ids of merged-away profiles resolve to the surviving profile.
curl "https://api.breeze.in/cdp/control-plane/v1/tenants/breeze/workspaces/my-store/profiles/60de1d6e-748f-87dc-ab33-bfbbaba9b299" \
-H "Authorization: Bearer $BREEZEIQ_TOKEN"List profile summaries#
A customer table: one row per profile with contact details and order headline metrics. email and phone are plain text only for types your environment allows, otherwise masked.
Query
limit number cursor string next_cursor from the previous page.profile_type string customer.curl "https://api.breeze.in/cdp/control-plane/v1/tenants/breeze/workspaces/my-store/profiles/summary?limit=50" \
-H "Authorization: Bearer $BREEZEIQ_TOKEN"{
"profiles": [
{
"profile_id": "199c5179-51b5-8f34-89c6-dc79ba84d656",
"profile_type": "customer",
"email": "[email protected]",
"phone": "+919812345678",
"total_spend": "899",
"order_count": "1",
"last_order_at": "1788784963",
"created_at": "2026-09-10T17:44:09Z"
}
],
"next_cursor": "1ffb5492-…",
"workspace_members": 13,
"workspace_customers": 7,
"workspace_visitors": 6
}List profiles#
Profiles with their display identifiers.
Query
limit number cursor string next_cursor from the previous page.profile_type string customer.curl "https://api.breeze.in/cdp/control-plane/v1/tenants/breeze/workspaces/my-store/profiles?limit=50" \
-H "Authorization: Bearer $BREEZEIQ_TOKEN"Get profile segments#
Just the profile's segment memberships, with display names.
curl "https://api.breeze.in/cdp/control-plane/v1/tenants/breeze/workspaces/my-store/profiles/60de1d6e-748f-87dc-ab33-bfbbaba9b299/segments" \
-H "Authorization: Bearer $BREEZEIQ_TOKEN"Erase a profile#
Permanently erases a customer, for example for a GDPR request: the profile and everything merged into it, every identifier, metric, segment membership and history entry.
There is no undo. The profile and all of its data are gone once this returns.
curl -X DELETE "https://api.breeze.in/cdp/control-plane/v1/tenants/breeze/workspaces/my-store/profiles/9dc94bd5-31f3-855c-945b-d66a759f5c78" \
-H "Authorization: Bearer $BREEZEIQ_TOKEN"{
"deleted_root": "9dc94bd5-31f3-855c-945b-d66a759f5c78",
"deleted": {
"profiles": 1,
"identifiers": 3,
"metric_contribution": 5,
"canonical_metrics": 5,
"segment_membership": 0,
"segment_transition_log": 0
},
"redis_mappings_deleted": 3
}