Skip to main content

Overview

Send data directly to the Moda ingest API. This supports LLM conversations across any channel:
  • Standard chat completions (OpenAI, Anthropic, etc.)
  • Chat/messaging platforms (Slack, Discord, etc.)
  • Email conversations
  • Voice and video call transcripts
  • Tool/function calls within conversations
  • Custom integrations and languages without Moda SDK support
All events are processed by Moda and appear in your dashboard alongside SDK-ingested data.

Endpoint

Authentication

Include your Moda API key in the Authorization header:

Request format

You can set the environment at the request level to apply to all events:
Send an array of events in the request body:

Event fields

Required fields

Optional fields

When using content as an array of content blocks, text is automatically extracted from text-type blocks for search and analytics. If both message and content are provided, message takes precedence.

Content blocks

For conversations with tool use, extended thinking, or images, include structured content blocks: Example with tool use:
Example with extended thinking:

Channel-specific event formats

LLM conversations happen across many channels beyond standard chat completions. Use the messageType field to send conversations from messaging platforms, email, voice calls, and to log tool invocations. You can mix these with standard events in the same request.

Channel messages

LLM-powered conversations in chat platforms or messaging systems.

Tool calls

Tool and function invocations made by the LLM during a conversation, with full request and response data.

Emails

LLM-powered conversations happening over email, with threading support via conversationId and optional inReplyTo for referencing specific parent emails.
The conversationId field groups emails into conversations, consistent with all other event types. Use inReplyTo optionally to reference specific parent emails within a conversation (e.g. when there are multiple email threads within the same conversation).

Call transcripts

LLM-powered conversations happening over phone or video calls, with full speaker turn transcripts.
Transcript entry format:
Call transcripts are stored as a single record containing the full transcript. The complete transcript is searchable in the Moda dashboard, and the structured speaker turns are preserved for detailed analysis.

Mixed batch example

You can mix standard events and channel-specific events in the same request:
Each event is validated individually. Standard events (without messageType) use the fields documented above, while channel-specific events are validated according to their messageType schema.

Example

Response

Success response

When the request includes channel-specific events (with messageType), the response includes a details breakdown:

Error response

Batch limits

Error handling

For 503 errors, use exponential backoff when retrying. Start with 1 second and double each retry, up to a maximum of 30 seconds.