Capture Interactions and Messages
Send us your AI conversations so we can analyze them for you. Works with everything from simple chatbots to complex agentic systems — text or voice.
Getting Started (Simple Chat):
Just provide the role (“user”, “assistant”, or “system”) and content for each message, along with an externalConversationId and your productId. That’s it!
Advanced Usage (Agentic Workflows):
Capture the full execution trace of your AI agents using messageType for tool calls, thoughts, observations, and more. Include structured data via input/output fields to track what your agents are doing.
Voice Agents:
For voice conversations, include a voiceCall object on the request (call duration, recording URL, ended reason, latency stats, structured outputs) and a voice object on each message (per-turn timing, ASR confidence, prosody, interruption signals). Native webhook integrations are available for Vapi, Retell, ElevenLabs, Bland AI, Synthflow, and Simple.ai — point your provider at /v1/integrations/<provider>?productId=<uuid> and we’ll handle the transform. See the voice example below for the canonical shape.
Key Features:
- Automatic Ordering: Messages are stored with sequential timestamps, or provide your own
createdAttimestamps for historical data. - Threading: Create nested conversations by referencing parent messages using
parentMessageIdorparentExternalMessageId. - Organization Tracking: Associate users with organizations via
externalOrganizationId. We’ll create the organization automatically if it doesn’t exist. - Automatic De-duplication: Messages with an
externalMessageIdthat already exists in the conversation are automatically skipped. This allows you to safely resend a batch of messages with new messages appended — previously ingested messages will be deduplicated and only new messages will be inserted. Each message in the response includes astatusfield (“created” or “deduplicated”) so you know what happened.
Perfect for understanding how your AI is performing in production and identifying areas for improvement.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Request payload for logging conversations and messages.
Your external user ID that will be mapped to a user in our system.
Array of conversation messages.
1The Greenflash product this conversation belongs to. Either conversationId, externalConversationId, productId must be provided.
The Greenflash conversation ID. When provided, updates an existing conversation instead of creating a new one. Either conversationId, externalConversationId, productId must be provided.
Your external identifier for the conversation. Either conversationId, externalConversationId, productId must be provided.
Your unique identifier for the organization this user belongs to. If provided, the user will be associated with this organization.
The AI model used for the conversation.
Additional data about the conversation.
System prompt for the conversation. Can be a simple string or a prompt object with components.
1Controls the percentage of requests that are ingested (0.0 to 1.0). For example, 0.1 means 10% of requests will be stored. Defaults to 1.0 (all requests ingested). Sampling is deterministic based on conversation ID.
0 <= x <= 1When true, bypasses sampling and ensures this request is always ingested regardless of sampleRate. Use for critical conversations that must be captured.
Voice-specific signals for the full call/conversation (platform, duration, latency aggregates, recording URL, etc.). Stored on the conversation alongside properties and analyzed by voice-aware pipelines.
Response
Messages logged successfully
Success response for message logging.
Whether the API call was successful.
The ID of the conversation that was created or updated.
The prompt ID used internally to track the system prompt.
The component IDs used internally to track the system prompt components.
The messages that were processed.
Template variables used or detected for this conversation.
Template match info when content was auto-matched against an existing template.

