canonical: https://jentic.com/apis/moengage.com/moengage-data-api

# MoEngage Data API

Jentic publishes the only available OpenAPI specification for MoEngage Data API, keeping it validated and agent-ready. The MoEngage Data API ingests user events into the MoEngage customer engagement platform via a single POST /events endpoint, allowing product and analytics teams to stream user actions, attributes, and timestamps for downstream segmentation, campaigns, and analytics. Authentication uses two paired headers - MOE-APPID identifies the workspace and MOE-API-KEY authorises the call.

## For AI agents

Stream user events into MoEngage for product analytics and campaign segmentation via a single POST /events endpoint authenticated with workspace headers.

## Scope

Does not manage campaigns, segments, users, or read analytics back - use for inbound user-event ingestion only.

## Capabilities

- Push a user event such as 'product_viewed' with custom attributes into MoEngage
- Stream backend purchase confirmations to MoEngage so they can trigger lifecycle campaigns
- Forward server-side conversion events that the SDK cannot capture
- Replay historical events into a new MoEngage workspace from a data warehouse
- Send identified user events with a unique customer ID for cross-device stitching

## Use cases

### Server-Side Event Streaming

Stream purchase confirmations, subscription renewals, and other backend events that the MoEngage mobile and web SDKs cannot see. POST /events accepts a user identifier, event name, attributes, and timestamp, and MoEngage routes them into the same engagement timeline as SDK-captured events. Backend integration is typically a single HTTP client call wrapped in the application's order or billing service.

Example prompt: Send a 'purchase_completed' event for user_id u-12345 with order_total 49.99 USD and timestamp via POST /events

### Warehouse-to-MoEngage Backfill

Replay historical event data from BigQuery, Snowflake, or Redshift into MoEngage when migrating from another engagement platform. A scheduled job reads events in batches and POSTs them to /events with the original timestamps, so existing segments rebuild correctly and lifecycle campaigns trigger on real history rather than from migration day forward.

Example prompt: Read the last 90 days of 'order_placed' events from a BigQuery table and POST each one to MoEngage /events preserving the original event timestamp

### Agent-Driven Conversion Tracking via Jentic

Use a Jentic-connected agent to stream conversion and intent events from internal tools into MoEngage so growth teams can build segments and triggers without engineering tickets. The agent searches Jentic for the events operation, loads the schema, and posts events with workspace credentials drawn from the vault.

Example prompt: When a sales rep marks a lead as 'closed-won' in the CRM, post a 'deal_closed' event to MoEngage with deal value and product attributes

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/events` | Ingest a user event into MoEngage |

## Key resources

- **Events** — Ingest a user event with name, attributes, identifier, and timestamp

## Why Jentic

- **Setup:** Wiring the MoEngage Data API by hand means setting the MOE-APPID and MOE-API-KEY headers, shaping the event payload correctly, and coding the ingestion call yourself. Through Jentic you install once, import the MoEngage Data API from the API Directory, store the app id and key once, and your agent calls it.
- **Permission scoping:** The MoEngage Data API sends the user event in the request body rather than as a path resource, so you limit the agent to the operations it needs, such as posting a user event. Only the operations you allow are callable, so nothing beyond event ingestion runs.
- **Credential handling:** Your MoEngage app id and API key are stored once, encrypted, by your own Jentic One instance and injected at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'send a user event to MoEngage', and Jentic returns the POST /events operation with its body schema so the agent calls the right endpoint without parsing the vendor docs.

## Related APIs

- **MoEngage API** — The MoEngage management API manages users, campaigns, and segments while the Data API ingests events.
- **Mixpanel API** — Mixpanel provides server-side event ingestion plus richer analytics querying for product teams.
- **Segment API** — Segment routes a single event stream to many destinations including MoEngage.

## FAQ

### Why is there no official OpenAPI spec for MoEngage Data API?

MoEngage does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call MoEngage Data API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the MoEngage Data API use?

Every request to POST /events must include both MOE-APPID (the workspace identifier) and MOE-API-KEY (the workspace data API key) as request headers. There is no OAuth flow - these are static workspace credentials. Through Jentic, both headers are stored encrypted in your Jentic One instance and injected at execution time so the agent never handles them directly.

### Can I send historical events with backdated timestamps?

Yes. The /events payload accepts a timestamp field on each event, so server-side jobs can replay historical data into MoEngage with the original event time. This keeps segments and lifecycle campaigns aligned with real user history rather than the ingestion time.

### What are the rate limits for the MoEngage Data API?

The OpenAPI spec does not declare a numeric rate limit. MoEngage applies per-workspace ingestion ceilings at the platform level - agents should batch outgoing events, respect 429 responses with exponential backoff, and avoid sending duplicate events with the same user_id and timestamp.

### How do I send an event through Jentic?

Run pip install jentic, then search Jentic for 'send a user event to MoEngage'. Jentic returns the POST /events operation with its body schema. Load the schema, pass the user identifier, event name, attributes, and timestamp, then execute. The MOE-APPID and MOE-API-KEY headers are resolved from the vault.

### Can I use the MoEngage Data API to read data back?

No. The Data API exposes a single POST /events endpoint for ingestion only. To read campaigns, segments, or user data programmatically, use the separate MoEngage management API (api_slug: moengage) which exposes /campaigns, /segments, and /customer endpoints.

### Can I limit what my agent is allowed to do with the MoEngage Data API?

Yes. Jentic One is self-hosted, so you run the execution layer and your own rules decide which operations the agent may call. The MoEngage Data API exposes only a single POST /events ingestion operation, and you scope the agent to just that action, so it can stream user events but nothing else runs. Your MOE-APPID and MOE-API-KEY stay stored encrypted in your instance and are injected only when an allowed call executes, so the agent never handles the credentials directly.
