Synthesis

Synthesize research sources into structured insights using the AI agent.

Overview

Synthesis is the core AI workflow in Praxiom AI. It takes selected research sources (interviews, surveys, support tickets) and uses the Claude Agent SDK to cross-reference themes, extract structured insights with quotes, severity, and frequency, then persists them to the database.


Synthesize Research

POST /api/research/synthesize

Trigger AI synthesis of research sources into structured insights. This is a blocking endpoint that typically takes 15-60 seconds to complete. For real-time progress updates, use the SSE streaming endpoint instead.

Requires: Active subscription. Rate-limited to 10 requests per minute.

Request Body

NameTypeRequiredDescription
workspace_idUUIDYesTarget workspace
source_idsUUID[]YesList of research source IDs to synthesize
synthesis_typestringNoType of synthesis (default: "comprehensive")

Prerequisites

  • All referenced sources must have processing_status: "completed"
  • No other synthesis can be running for the same workspace (returns 409)

Example Request

curl -X POST https://api.praxiomai.xyz/api/research/synthesize \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "workspace_id": "550e8400-e29b-41d4-a716-446655440000",
    "source_ids": [
      "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "b2c3d4e5-f6a7-8901-bcde-f12345678901"
    ],
    "synthesis_type": "comprehensive"
  }'
import requests

resp = requests.post(
    "https://api.praxiomai.xyz/api/research/synthesize",
    headers={"Authorization": f"Bearer {token}"},
    json={
        "workspace_id": "550e8400-e29b-41d4-a716-446655440000",
        "source_ids": [
            "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
            "b2c3d4e5-f6a7-8901-bcde-f12345678901",
        ],
        "synthesis_type": "comprehensive",
    },
)
const resp = await fetch("https://api.praxiomai.xyz/api/research/synthesize", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${token}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    workspace_id: "550e8400-e29b-41d4-a716-446655440000",
    source_ids: [
      "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "b2c3d4e5-f6a7-8901-bcde-f12345678901",
    ],
    synthesis_type: "comprehensive",
  }),
});

Response (200 OK)

{
  "insights": [
    {
      "id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
      "workspace_id": "550e8400-e29b-41d4-a716-446655440000",
      "insight_type": "pain_point",
      "title": "Users struggle with onboarding flow",
      "description": "Multiple interview subjects mentioned confusion during initial setup...",
      "source_ids": ["a1b2c3d4-e5f6-7890-abcd-ef1234567890"],
      "quotes": [
        {
          "text": "I had no idea what to do after signing up",
          "source_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
          "speaker": "User 3"
        }
      ],
      "frequency": 4,
      "severity": "high",
      "created_at": "2026-03-27T10:35:00Z"
    }
  ],
  "insight_ids": ["c3d4e5f6-a7b8-9012-cdef-123456789012"],
  "summary": "Synthesized 5 insights from 2 sources. Key themes: onboarding friction, pricing confusion, and feature discoverability."
}

Was this helpful?