REST · Pulse v1

REST API (Pulse v1)

Query AXO at decision time from your own systems — no ETL, no stale copies. Pulse is key-authenticated, scoped, and versioned, with a published OpenAPI 3.1 spec you can generate clients from.

Base URL & auth

All endpoints live under /api/pulse/v1/ and authenticate with a bearer key. Mint keys in Admin → Pulse; the pls_live_… plaintext is shown once. Each key carries scopes that determine what the endpoint returns.

GEThttps://axoapp.ai/api/pulse/v1/…
Key scopes
ScopeTypeDescription
profile:read
optional
scopeRead a profile snapshot: identity, segments, activity — no plaintext PII.
profile:read:pii
optional
scopeAdditionally return plaintext email / phone / name on profile reads.
segment:read
optional
scopeList the profile IDs in a segment (cursor-paginated).

Get a profile

Read one profile by exactly one identifier. Returns a ProfileSnapshot (identity, segments, activity, meta). Rate limit 60 req/min (burst 120).

GET/api/pulse/v1/profileread
Query (exactly one)
ParameterTypeDescription
profile_id
optional
stringLook up by AXO profile ID.
visitor_id
optional
stringLook up by first-party visitor ID.
email
optional
stringLook up by plaintext email (requires profile:read:pii to return PII).
external_id
optional
stringLook up by your own external identifier.
email_sha256 / phone_sha256
optional
stringLook up by a hashed identifier (privacy-preserving).
curl -sS "https://axoapp.ai/api/pulse/v1/profile?email=customer@example.com" \
  -H "Authorization: Bearer pls_live_YOUR_KEY"

List segment members

Cursor-paginated profile IDs in a segment. Pass the returned next_cursor to page.

GET/api/pulse/v1/segment/{segmentId}/membersread
curl -sS "https://axoapp.ai/api/pulse/v1/segment/deliberator/members?limit=100" \
  -H "Authorization: Bearer pls_live_YOUR_KEY"

Errors

Error responses
StatusTypeDescription
400
optional
bad_requestMissing or conflicting query (supply exactly one identifier).
401
optional
unauthorizedMissing or invalid bearer key.
403
optional
insufficient_scopeThe key lacks the scope the endpoint requires (e.g. PII without profile:read:pii).
404
optional
not_foundNo profile/segment matches the query.
429
optional
rate_limitedRate limit exceeded (60 req/min, burst 120).
OpenAPIA machine-readable OpenAPI 3.1 spec is served at /api/pulse/v1/openapi.json — point Postman or an SDK generator at it.