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
| Name | Type | Required | Description |
|---|---|---|---|
workspace_id | UUID | Yes | Target workspace |
source_ids | UUID[] | Yes | List of research source IDs to synthesize |
synthesis_type | string | No | Type 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?