Create a server-to-server input in the mParticle dashboard to obtain an API key and secret — authenticate all requests with HTTP Basic Authentication using these credentials.
Determine your pod assignment from the mParticle dashboard; the base URL for batch ingestion is https://s2s.{pod}.mparticle.com/v2/bulkevents.
Build a JSON array of batch objects, each describing identities (user_identities, device_info) and an events array; a batch covers a single user and should contain up to 100 events.
POST the array to /v2/bulkevents with Content-Type: application/json; a 202 response indicates the batch has been accepted for processing.
For data older than 30 days, POST to /v2/bulkevents/historical instead — the standard endpoint rejects events outside this window.
Known gotchas
Each batch object represents a single user; to send events for multiple users in one HTTP call, place multiple batch objects in the top-level JSON array.
The pod subdomain in the base URL is account-specific — using the wrong pod will result in authentication failures or data routing errors.
Events missing required identity fields (at least one of user_identities or device_info must be present) will be rejected at the batch level.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp