API Documentation

Send events, query data, and build integrations with the Prody REST API. 121 endpoints across 15 categories.

Base URL https://app.prody.com REST · JSON

First event in 60 seconds

Get your API key from Settings → Setup Guide, then send a test event:

curl -X POST https://app.prody.com/ingest \ -H "Content-Type: application/json" \ -H "x-api-key: YOUR_API_KEY" \ -d '{"user_email":"[email protected]","account_id":"acme-001","event_type":"login"}'

Check the Home page — your event appears instantly. All endpoints require x-api-key in the request header.

Ingestion

3 endpoints
POST /ingest

Send tracking events. Record logins, page views, and custom events.

ParameterTypeDescription
event_typestring (required)Event name (e.g. "login", "page_view")
user_emailstringUser email. If omitted, anonymous ID generated.
account_idstringAccount identifier for B2B.
page_urlstringRequired for page_view events.
propertiesobjectJSON properties attached to the event.
external_idstringExternal ID for third-party matching.
curl -X POST https://app.prody.com/ingest \ -H "Content-Type: application/json" \ -H "x-api-key: YOUR_API_KEY" \ -d '{"user_email":"[email protected]","account_id":"acme-001","event_type":"login"}'
POST /ingest/merge

Merge anonymous user with identified user. Reassigns all historical events.

ParameterTypeDescription
anonymous_idstring (required)Anonymous ID to merge from.
user_emailstring (required)Identified email to merge into.
POST /ingest/error

Record client-side errors as page_error events.

ParameterTypeDescription
page_urlstring (required)Page where error occurred.
error_typestring (required)js_error, api_error, not_found, network_error, other.
error_messagestringError message (max 500 chars).
status_codeintegerHTTP status code.

Accounts

12 endpoints
GET /api/accounts

List all accounts with usage stats. Supports global filters.

ParameterTypeDescription
daysintLook back N days (default 30).
segment_idintFilter to segment.
industrystringFilter by industry.
company_sizestringFilter by size.
owner_emailstringFilter by CS owner.
GET /api/accounts/:account_id

Detailed account info: summary stats, users, properties, owner, external ID.

ParameterTypeDescription
daysintLook back N days.
PUT /api/accounts/:account_id/firmographics

Update firmographic properties (industry, company_size, segment, revenue_range).

ParameterTypeDescription
propertiesobjectProperties to set.
PUT /api/accounts/:account_id/owner

Assign CS owner.

ParameterTypeDescription
owner_emailstring (required)Owner email.
GET /api/accounts/:account_id/top-users

Top 10 users by activity for this account.

ParameterTypeDescription
daysintLook back N days.
GET /api/accounts/:account_id/activity-trend

Daily activity trend (users + events) for one account.

ParameterTypeDescription
daysintLook back N days.
GET /api/accounts/:account_id/health-history

Health score history with signal change events.

POST /api/accounts/:account_id/notes

Add a note to an account.

ParameterTypeDescription
contentstring (required)Note text.
DELETE /api/accounts/:account_id/notes/:note_id

Delete an account note.

GET /api/accounts/at-risk

Accounts with declining activity vs prior period.

ParameterTypeDescription
daysintComparison period (default 30).
GET /api/accounts/feature-usage

Per-account usage for specified features.

ParameterTypeDescription
featuresstring (required)Comma-separated event types.
daysintLook back N days.
GET /api/accounts/firmographic-values

Distinct values for each firmographic field. Used for filter dropdowns.

Users

9 endpoints
GET /api/users/:email

User detail with event history, account, and properties.

ParameterTypeDescription
events_limitintMax events (default 100, max 500).
PUT /api/users/:email/attributes

Update user attributes (first_name, last_name, external_id, custom properties).

ParameterTypeDescription
propertiesobjectAttributes to set.
GET /api/users/:email/notes

List notes for a user.

POST /api/users/:email/notes

Add a note to a user.

ParameterTypeDescription
contentstring (required)Note text.
DELETE /api/users/:email/notes/:note_id

Delete a user note.

GET /api/users/:email/activity-trend

Daily activity trend for one user.

ParameterTypeDescription
daysintLook back N days.
GET /api/top-users

Top 10 users by event count. Supports global filters.

ParameterTypeDescription
daysintLook back N days.
GET /api/users/new-vs-returning

Daily breakdown of new vs returning users.

ParameterTypeDescription
daysintLook back N days.
GET /api/monthly-users

Monthly unique user counts.

Events

7 endpoints
GET /api/event-types

All event types with counts. Default 90-day window.

ParameterTypeDescription
daysintLook back N days.
GET /api/event-types/:type/properties

Property keys and sample values for an event type.

ParameterTypeDescription
daysintLook back N days.
POST /api/events/query

Flexible query with include/exclude conditions and property filters.

ParameterTypeDescription
includesarrayEvent conditions to include (up to 4).
excludesarrayEvent conditions to exclude.
daysintLook back N days.
GET /api/events/correlation

Correlation: users who do X are Nx more likely to do Y.

ParameterTypeDescription
event_astringFirst event.
event_bstringSecond event.
GET /api/pages

All tracked pages with view counts.

ParameterTypeDescription
daysintLook back N days.
GET /api/activity-trend

Daily active users and total events. Supports global filters.

ParameterTypeDescription
daysintLook back N days.
GET /api/live-users

Users active in last 5 minutes with sparkline.

Analytics

8 endpoints
GET /api/paths

Session-based path analysis with drop-off points.

ParameterTypeDescription
eventstring (required)Starting event.
depthintSteps (default 4).
directionstring"forward" or "backward".
GET /api/funnel

Sequential funnel with step-to-step conversion.

ParameterTypeDescription
stepsstring (required)Comma-separated events.
daysintLook back N days.
GET /api/funnel-compare

Same funnel across different segments.

ParameterTypeDescription
stepsstringComma-separated events.
segmentsstringComma-separated segment IDs.
GET /api/retention

Cohort-based retention analysis.

ParameterTypeDescription
event_astring (required)Cohort entry event.
event_bstring (required)Return event.
periodstring"week" or "month".
GET /api/feature-adoption

Feature adoption rates for all event types.

ParameterTypeDescription
daysintLook back N days.
GET /api/feature-adoption/:event

Detailed adoption for one feature with daily trend.

ParameterTypeDescription
daysintLook back N days.
GET /api/features-compare

Compare up to 4 features side by side.

ParameterTypeDescription
featuresstringComma-separated events.

Segments

9 endpoints
GET /api/segments

List all segments.

ParameterTypeDescription
searchstringSearch by name/rule/event.
folderstringFilter by folder.
POST /api/segments

Create a segment with combinable rules.

ParameterTypeDescription
namestring (required)Segment name.
rulesarray (required)Rule objects (event_count, did_event, etc).
folderstringFolder name.
segment_typestring"dynamic" or "static".
GET /api/segments/:id

Segment detail with resolved user list.

PUT /api/segments/:id

Update segment name, rules, or folder.

DELETE /api/segments/:id

Delete a segment.

POST /api/segments/estimate

Estimate segment size before saving.

ParameterTypeDescription
rulesarraySame format as create.
GET /api/segments/compare

Compare two segments: overlap and behavioral diff.

ParameterTypeDescription
aintFirst segment ID.
bintSecond segment ID.
GET /api/segments/folders

List all segment folders.

POST /api/segments/folders

Create a folder.

ParameterTypeDescription
namestringFolder name.

Signals

5 endpoints
GET /api/signals

Paginated signals feed.

ParameterTypeDescription
pageintPage (default 1).
severitystringcritical, warning, info.
categorystringsuccess, product, journey.
daysintLast N days.
GET /api/signals/stats

Summary stats with category counts.

ParameterTypeDescription
daysintLook back N days.
GET /api/signals/focus

Prioritized daily focus list.

ParameterTypeDescription
limitintMax items (default 10).
POST /api/signals/:id/action

Record an action taken. Starts Impact tracking.

ParameterTypeDescription
action_typestring (required)What was done.
PATCH /api/signals/:id/dismiss

Dismiss a signal.

Health Scores

2 endpoints
GET /api/health-scores

5-component account health scores (Activity, Breadth, Depth, Trend, Recency).

ParameterTypeDescription
statusstringgreen, yellow, red.
sortstringscore, status, trend.
GET /api/health-scores/:id

Health score detail for a specific account.

Impact

4 endpoints
GET /api/impact/summary

Closed-loop overview: actions taken, outcomes, headline ROI stats.

ParameterTypeDescription
daysintLook back N days (default 90).
GET /api/impact/actions

Actions with outcomes (pending, resolved, unresolved).

ParameterTypeDescription
daysintLook back N days.
statusstringFilter by outcome.
pageintPage number.
PATCH /api/impact/actions/:id/resolve

Manually resolve or unresolve an action.

ParameterTypeDescription
resolvedbooleantrue = resolved.
GET /api/impact/actions/export

CSV export of all actions with outcomes.

ParameterTypeDescription
daysintLook back N days.

AI & Discoveries

7 endpoints
POST /api/prody

Natural language query to Ask Prody. Returns AI analysis backed by your data.

ParameterTypeDescription
messagestring (required)Your question.
chat_idstringContinue a conversation.
curl -X POST https://app.prody.com/api/prody \ -H "x-api-key: YOUR_API_KEY" \ -d '{"message":"Which accounts should I worry about?"}'
GET /api/discoveries

Behavioral patterns predicting success.

ParameterTypeDescription
statusstringnew, reviewed, actioned, dismissed, all.
min_liftnumberMinimum lift (e.g. 2.0 for 2x).
limitnumberMax results.
GET /api/discoveries/stats

Summary: total active, new, highest lift, pinned count.

PATCH /api/discoveries/:id

Update status or pin state.

ParameterTypeDescription
statusstringnew, reviewed, actioned, dismissed.
pinnedbooleanPin to top.
GET /api/discoveries/success-definitions

List configured success events for discovery analysis.

POST /api/discoveries/success-definitions

Add a success event (max 3).

ParameterTypeDescription
event_typestring (required)Success event.
time_window_daysnumberWindow in days.
DELETE /api/discoveries/success-definitions/:id

Remove a success event definition.

Journeys

9 endpoints
GET /api/journeys

List all journeys with latest metrics and recommendation counts.

GET /api/journeys/:id

Journey detail with 30 days of snapshots and AI recommendations.

GET /api/journeys/:id/funnel

Live funnel computation (not from nightly snapshot).

GET /api/journeys/:id/stuck/:stepIndex

Users stuck between two journey steps.

POST /api/journeys

Create a journey (2-8 steps). Plan limits apply.

ParameterTypeDescription
namestring (required)Journey name.
stepsarray (required)[{event_type, label}].
completion_window_daysnumberDays to complete (default 7).
PUT /api/journeys/:id

Update name, steps, window, or status. Admin only.

DELETE /api/journeys/:id

Delete journey, snapshots, and recommendations.

POST /api/journeys/recommendations/:id/act

Act on a recommendation. Logs to Impact tracking.

POST /api/journeys/recommendations/:id/dismiss

Dismiss a recommendation.

Nudges

12 endpoints
GET /api/nudges

List all nudges with stats and audience info.

GET /api/nudges/:id

Single nudge with full config, stats, and target users.

POST /api/nudges

Create a nudge.

ParameterTypeDescription
titlestring (required)Nudge title.
target_page_urlstring (required)Page to show it on.
nudge_typestring"floating" or "banner".
bodystringMessage body.
button_textstringCTA text.
target_segment_idintSegment to target.
PUT /api/nudges/:id

Update nudge config. Recalculates audience_type.

POST /api/nudges/:id/activate

Activate. Returns conflict warnings for same-page nudges.

POST /api/nudges/:id/pause

Pause. Auto-resolves linked recovery signals.

DELETE /api/nudges/:id

Delete nudge and audience log.

POST /api/nudges/:id/event

Track impression/click/dismiss from tracker.js.

ParameterTypeDescription
event_typestring"impression", "click", "dismiss".
user_emailstringUser for attribution.
POST /api/nudges/generate-copy

AI generates nudge copy from journey context.

ParameterTypeDescription
journey_idintJourney ID.
step_indexintStep.
GET /api/nudges/:id/audience-flow

Audience flow: entered, shown, clicked, dismissed, progressed.

GET /api/nudges/results-summary

Aggregate nudge impact for Results page.

ParameterTypeDescription
daysintLook back N days.
POST /api/nudges/refresh-audiences

Trigger dynamic audience refresh. Admin only.

Products (Multi-Workspace)

6 endpoints
GET /api/products

List all products the user has access to.

POST /api/products

Create a new isolated product.

ParameterTypeDescription
namestring (required)Product name.
PATCH /api/products/:id

Rename a product.

ParameterTypeDescription
namestringNew name.
DELETE /api/products/:id

Delete a product. Cannot delete active product.

POST /api/products/switch

Switch active product. Re-issues session.

ParameterTypeDescription
tenant_idint (required)Product ID.
GET /api/products/mtu

Monthly tracked users across all products with daily breakdown.

Data Management

18 endpoints
GET /api/data/stats

Data stats: total events, users, accounts, event types.

PUT /api/data/retention

Set data retention policy.

ParameterTypeDescription
retention_daysintDays to retain (0 = unlimited).
POST /api/data/delete-events

Bulk delete events by type or date.

ParameterTypeDescription
event_typestringDelete events of this type.
before_datestringDelete before this date.
POST /api/data/event-types/rename

Rename event type across all events.

ParameterTypeDescription
old_namestringCurrent name.
new_namestringNew name.
POST /api/data/event-types/merge

Merge two event types.

ParameterTypeDescription
sourcestringMerge from.
targetstringMerge into.
POST /api/data/event-types/archive

Archive or restore event type.

ParameterTypeDescription
event_typestringEvent type.
archivedbooleantrue/false.
GET /api/data/properties

List properties for an event type.

ParameterTypeDescription
event_typestringScope to type.
POST /api/data/properties/rename

Rename a property key.

ParameterTypeDescription
event_typestringScoped type.
old_keystringCurrent key.
new_keystringNew key.
POST /api/data/properties/merge

Merge two property keys.

ParameterTypeDescription
sourcestringMerge from.
targetstringMerge into.
GET /api/data/properties/metadata

Property metadata (status, description).

ParameterTypeDescription
event_typestringScope to type.
PUT /api/data/properties/metadata

Update property metadata.

ParameterTypeDescription
property_keystringKey.
statusstringverified, hidden, default.
descriptionstringDescription.
GET /api/data/pii-lookup/:email

All PII data for a user (DSAR compliance).

POST /api/data/pii-scrub

Anonymize user: replace email with hash, clear properties.

ParameterTypeDescription
emailstringUser email.
POST /api/data/pii-export

Export all user data as CSV.

ParameterTypeDescription
emailstringUser email.
POST /api/data/accounts/bulk-update

Bulk update account metadata.

ParameterTypeDescription
updatesarray[{account_id, fields}].
POST /api/data/accounts/csv-import

Import account metadata from CSV (5K row limit).

POST /api/data/users/bulk-update

Bulk update user metadata.

ParameterTypeDescription
updatesarray[{email, fields}].
POST /api/data/users/csv-import

Import user metadata from CSV (5K row limit).

Configuration

10 endpoints
GET /api/settings

Get tenant settings.

PUT /api/settings

Update settings. Admin only.

ParameterTypeDescription
auto_derive_accountsbooleanDerive accounts from email domain.
product_modestring"b2b" or "employee".
company_namestringCompany name.
GET /api/custom-labels

Get custom event labels.

PUT /api/custom-labels

Save custom labels.

ParameterTypeDescription
labelsobjectMap: event_type to label.
GET /api/alerts

List all threshold alerts.

POST /api/alerts

Create a threshold alert.

ParameterTypeDescription
namestringAlert name.
metricstringevent_count, active_users, etc.
thresholdnumberValue.
directionstring"above" or "below".
GET /api/goals

List goals with progress.

POST /api/goals

Create a measurable goal.

ParameterTypeDescription
namestringGoal name.
targetnumberTarget value.
metricstringMetric to track.
GET /api/saved-views

List saved views.

ParameterTypeDescription
pagestringPage identifier.
POST /api/exports

Export data as CSV.

ParameterTypeDescription
typestringusers, accounts, events, feature_adoption.
daysintLook back N days.
segment_idintFilter to segment.

Rate Limits

EndpointLimitWindow
/ingest500 requests1 minute
/api/*100 requests1 minute
/auth/*10 requests15 minutes
/api/prody100,000 tokens24 hours

Exceeding limits returns 429 with a Retry-After header.