Receive proactive notifications via polling
Retrieve system-initiated messages by polling the Conversations API events endpoint with a per-user checkpoint.
The Conversations API is in Controlled Availability. Endpoints, behaviors, and configuration surfaces may change during CA. Contact your Moveworks account team to participate.
Poll the events endpoint on your own schedule to retrieve system-initiated messages that have been routed to CAPI users. Polling is the recommended path when an inbound HTTPS receiver isn’t viable on your backend, and the source of truth for reconciling events after a webhook outage. If you can run an inbound receiver, prefer outbound webhook push for lower latency to your users and lower load on Moveworks.
Before reading this page, review Proactive notifications overview for architecture, routing behavior, and prerequisites.
The examples below use https://api.moveworks.ai, which is only correct for orgs on the US Production data center. Replace it with the base URL for your data center from the Base URLs table (for example, https://api.am-eu-central.moveworks.ai for EU). Requests to the wrong host return 404 or invalid_audience.
The events endpoint
Retrieve system-initiated messages for a user:
Substitute:
<YOUR_CHECKPOINT>— theevent_idyou last successfully processed for this user. Passed asstarting_after(exclusive lower bound). Omit on the first-ever call for a user.<MW_ACCESS_TOKEN>— a valid Moveworks bearer token for the recipient user. See the auth guides for token issuance.<YOUR_BOT_NAME>— the Bot Name provided by your account team.
The - in the URL is a wildcard that returns events across all of the user’s conversations, including new conversations Moveworks created for proactive messages with no prior user input.
Query parameters
When both starting_after and ending_at are supplied, ending_at must refer to an event created after the one identified by starting_after.
Response
Response fields
The events endpoint returns only final messages; intermediate reasoning or in-progress states are not included.
Scope. The events endpoint is scoped to a single user, consistent with all other Conversations API endpoints. Polling and recovery must be performed per user using each user’s stored last_event_id.
Response headers. Every response includes an x-trace-id header identifying the request. Capture it if you need to correlate to Moveworks-side logs when opening a support case. The legacy x-moveworks-root-uuid header is also returned for backward compatibility but is deprecated; prefer x-trace-id.
Recommended pattern: per-user checkpoint
Advancing through the event stream requires tracking your position per user. Maintain a {user_id, last_event_id} record per user in your backend and pass last_event_id as starting_after on each poll.
Event IDs are base-62 identifiers with an evt_ prefix, consistent with other Conversations API resource IDs. Use each processed event’s ID as your next cursor value for exact iteration through the stream.
The same checkpoint pattern underlies webhook-based delivery — see Per-user checkpoint on the outbound webhook page.
Recovery after an outage
If your backend was unavailable when new events were created, call the events endpoint per affected user using that user’s stored checkpoint:
Omit ending_at to fetch all events since the checkpoint up to the present. Paginate using next_cursor if the result set exceeds one page.
Testing end-to-end
Because of the routing behavior, testing requires establishing the CAPI integration as the recipient’s most-recent-interaction channel before triggering the source-system webhook.
Send a user message through your CAPI integration
Create a conversation, send at least one user message, and poll the response until it completes so the recipient’s most-recent-interaction channel is CAPI. Creating a conversation alone does not count as an interaction with the bot — the bot must actually process a message and generate a response.
Fire the source-system trigger
POST your test payload to the Agent Studio Listener URL configured for your trigger. See the Agent Studio Webhook Triggers Quickstart if you need to set one up.
The response body is {"message":"Event received successfully","status":"RECEIVED"} on HTTP 200. Capture the x-moveworks-root-uuid response header for tracing.