Overview
Auliq exposes the DXP HTTP API for behavioral event ingestion and personalized experience delivery. Both endpoints arestateless JSON-over-HTTPS, accept a shared api_key in the request body, and return JSON responses.
| Environment | Base URL | Notes |
|---|---|---|
| Live | https://dx.auliq.net | Your published app's function endpoint. |
| Sandbox | API console below | Test against the live environment with a dedicated test API key from DXP > Delivery. |
All requests use the POST method with Content-Type: application/json. CORS preflight (OPTIONS) is supported on every endpoint.
Authentication and authorization
Every request is authorized with an organization-scoped API key passed in the request body.
- Create and manage keys under DXP > Delivery. Keys are scoped to a single organization and can be revoked at any time.
- Pass the key in the api_key body field. Only active keys are accepted; anything else returns HTTP 401 with {"error":"Invalid API key"}.
- Authorization scope: all reads and writes (events, profiles, delivery) are restricted to the key's organization through database-level isolation.
- Each authorized call updates the key last_used timestamp for usage auditing.
Endpoints
The two public DXP endpoints, fully specified.
Records a behavioral event for your organization and creates or updates the visitor customer profile. Event ingestion is fire-and-forget from the client perspective: the response confirms the event id.
Request body parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | required | Active DXP API key scoped to your organization. |
| event_name | string | required | Name of the event, e.g. viewed_pricing. |
| event_type | string | optional | Category of the event, e.g. page_view, click, conversion.Defaults to page_view |
| profile_email | string | optional | Visitor email address. Creates or updates the customer profile when present. |
| full_name | string | optional | Applied when the call creates a new profile. |
| country | string | optional | Applied when the call creates a new profile. |
| channel | string | optional | Delivery channel, e.g. website or mobile_app.Defaults to website |
| page_path | string | optional | Path of the page where the event occurred. |
| value | number | optional | Numeric value attached to the event, e.g. an order amount. |
Example request
curl -X POST https://dx.auliq.net/functions/dxpTrack \
-H "Content-Type: application/json" \
-d '{
"api_key": "<YOUR_DXP_API_KEY>",
"event_name": "viewed_pricing",
"event_type": "page_view",
"profile_email": "visitor@example.com",
"channel": "website",
"page_path": "/pricing"
}'Example response
{
"ok": true,
"event_id": "rec_7f3a92b1",
"profile_id": "rec_5c81d04e"
}Response codes
| Code | Body | Meaning |
|---|---|---|
| 200 | {"ok":true,"event_id":"...","profile_id":"..."} | Event recorded; profile created or updated when an email was provided (profile_id is null otherwise). |
| 400 | {"error":"event_name is required"} | The event_name field is missing. |
| 401 | {"error":"Invalid API key"} | The api_key is missing, unknown, or revoked. |
| 500 | {"error":"<message>"} | Unexpected server error; retry the request. |
Returns the personalized content a visitor should see right now: the segments resolved from the visitor profile, the active personalization rules that match the channel and segments (ordered by ascending priority), and the deterministic experiment variant assignment.
Request body parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | required | Active DXP API key scoped to your organization. |
| profile_email | string | optional | Visitor email address. Resolves segments from the stored profile; omit to receive base (unsegmented) delivery. |
| channel | string | optional | Channel used to match personalization rules, e.g. website, mobile_app, kiosk.Defaults to website |
Example request
curl -X POST https://dx.auliq.net/functions/dxpDeliver \
-H "Content-Type: application/json" \
-d '{
"api_key": "<YOUR_DXP_API_KEY>",
"profile_email": "visitor@example.com",
"channel": "website"
}'Example response
{
"channel": "website",
"profile_found": true,
"segments": ["pricing_interested"],
"experiences": [
{
"rule": "Pricing banner",
"segment": "pricing_interested",
"priority": 1,
"source": "wcms_page",
"content": {
"type": "page",
"title": "Pricing",
"slug": "pricing",
"body": "<p>Page body...</p>",
"language": "en"
}
}
],
"experiments": [
{
"experiment": "CTA copy test",
"variant": "b",
"content": "Start free today",
"goal_metric": "signup_clicks"
}
]
}- A preflight OPTIONS request returns 204 with permissive CORS headers (Access-Control-Allow-Origin: *), so browser-based calls are supported.
- Personalization rules are filtered to active rules matching the requested channel (or the all channel) whose target segment is on the visitor profile, then sorted by ascending priority.
- Content resolves only when the referenced WCMS page, HCMS entry, or DAM asset still exists; otherwise the experience is skipped.
- Experiment variants are assigned deterministically: the same profile email always receives the same variant, based on the experiment traffic split.
Response codes
| Code | Body | Meaning |
|---|---|---|
| 200 | {channel, profile_found, segments, experiences, experiments} | Delivery resolved. experiences is empty when no rule matches; profile_found is false for unknown visitors. |
| 401 | {"error":"Invalid API key"} | The api_key is missing, unknown, or revoked. |
| 500 | {"error":"<message>"} | Unexpected server error; retry the request. |
Data objects and field definitions
Schemas for the objects exchanged by the API.
A visitor profile in the customer data platform, created or updated automatically by dxpTrack.
| Field | Type | Description |
|---|---|---|
| string | Profile identifier, unique per organization. | |
| full_name | string | Display name. |
| country | string | Country code or name. |
| source_channel | string | web or mobile_app, from the first tracking channel. |
| lifecycle_stage | string | Starts at visitor; managed in the DXP app. |
| total_visits | number | Incremented on every tracked event with a profile email. |
| last_seen | string | ISO date (YYYY-MM-DD) of the most recent activity. |
| segments | string[] | Segment memberships resolved by dxpDeliver. |
A behavioral event recorded by dxpTrack and browsable under DXP > Events.
| Field | Type | Description |
|---|---|---|
| event_name | string | Event name as sent. |
| event_type | string | Event category; defaults to page_view. |
| profile_email | string | Associated profile email, when provided. |
| channel | string | Delivery channel; defaults to website. |
| page_path | string | Page path where the event occurred. |
| value | number | Numeric value, when provided. |
One resolved personalization rule returned by dxpDeliver.
| Field | Type | Description |
|---|---|---|
| rule | string | Rule name. |
| segment | string | null | Target segment matched; null for unsegmented rules. |
| priority | number | Ascending priority used for ordering. |
| source | string | wcms_page, hcms_entry, dam_asset, or custom. |
| content | object | Resolved content; shape depends on source (see content variants). |
One running experiment with the deterministic variant for the visitor.
| Field | Type | Description |
|---|---|---|
| experiment | string | Experiment name. |
| variant | string | a or b, assigned by the traffic split. |
| content | string | Variant content to render. |
| goal_metric | string | Metric tracked for the experiment goal. |
Experience content variants
| Rule source | content.type | Content fields |
|---|---|---|
| wcms_page | page | title, slug, body, language |
| hcms_entry | entry | title, content_type, slug, body, locale |
| dam_asset | asset | title, url, asset_type, width, height |
| custom | text | body |
Interactive API console
Run live requests against your published app directly from this page.
Enter an active API key from DXP > Delivery to run a live request.
Webhooks and event specifications
Content webhooks
Register a webhook endpoint to receive HTTP POST notifications when content changes. Webhooks are configured per organization underHCMS > Webhooks with a destination URL, an event filter, an optional content type filter, and a shared secret for verifying deliveries.
Event types
SDK and code examples
Ready-to-use snippets for browser and server integrations.
Browser (fetch)
// From any website or single-page app (CORS is permissive)
const res = await fetch("https://dx.auliq.net/functions/dxpDeliver", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ api_key: "<YOUR_DXP_API_KEY>", profile_email: "visitor@example.com", channel: "website" })
});
const { segments, experiences, experiments } = await res.json();Server (Node.js)
// Node.js / server-side
const res = await fetch("https://dx.auliq.net/functions/dxpTrack", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
api_key: "<YOUR_DXP_API_KEY>",
event_name: "signup_completed",
event_type: "conversion",
profile_email: "user@example.com",
value: 49.0
})
});
const { ok, event_id } = await res.json();Versioning, rate limits, and changelog
Versioning and deprecation
- The current API version is v1, served under /functions/ without a version prefix.
- Breaking changes (removed or renamed parameters, changed response shapes) are introduced only in a new version prefix; v1 responses remain stable.
- Deprecated fields continue to be returned and are flagged in the changelog before removal.
Rate limits and pagination
- No Auliq-specific numeric quota is published for these endpoints; call dxpDeliver once per page view rather than in a loop, and batch tracking where practical.
- Each call updates the last_used timestamp on the API key, so usage is auditable under DXP > Delivery.
- Both endpoints are single-response APIs with no pagination. Filtering happens through segment, channel, and rule matching; result ordering is by ascending rule priority. Browse the full event stream under DXP > Events.
API changelog
- POST /functions/dxpTrack introduced: behavioral event ingestion with automatic profile upsert.
- POST /functions/dxpDeliver introduced: segment, experience, and experiment resolution.
- CORS preflight (OPTIONS) support on both endpoints.
- API key authentication scoped to a single organization, managed under DXP > Delivery.