Skip to main content

Context Summarization

Summarize and compress conversation history and memory context.

Summarize Scope

Endpoint:
POST /api/v2/context/summarize
Headers:
Authorization: Bearer mk_api_key
X-Session-Token: {session_token}
Content-Type: application/json
Request Body:
{
  "scope_type": "agent",
  "scope_id": "my-agent"
}
Response (200 OK):
{
  "summary": "Agent has 42 memories about customer support. Key facts: Alice in Finance, prefers email. Commitments: deliver report by Friday.",
  "memory_count": 42,
  "scope_type": "agent",
  "scope_id": "my-agent"
}

Summarize Custom (By IDs)

Endpoint:
POST /api/v2/context/summarize/custom
Headers:
Authorization: Bearer mk_api_key
X-Session-Token: {session_token}
Content-Type: application/json
Request Body:
{
  "memory_ids": ["mem_1", "mem_2", "mem_3", "mem_4"]
}
Response (200 OK):
{
  "summary": "Customer Alice prefers email contact and is in Finance dept. Will deliver report by Friday.",
  "memory_count": 4
}

Compress Conversation

Endpoint:
POST /api/v2/context/compress
Headers:
Authorization: Bearer mk_api_key
X-Session-Token: {session_token}
Content-Type: application/json
Request Body:
{
  "conversation": [
    {"role": "user", "content": "What's the status?"},
    {"role": "assistant", "content": "The order is shipped..."},
    {"role": "user", "content": "When will it arrive?"},
    {"role": "assistant", "content": "Expected delivery is Friday..."}
  ]
}
Response (200 OK):
{
  "compressed": "User asked about order status. Order is shipped, expected delivery Friday.",
  "original_tokens": 45,
  "compressed_tokens": 15,
  "compression_ratio": 0.33
}

Use Cases

Summarize Before Export

# Summarize agent's memories before export
response = httpx.post(
    f"{base}/context/summarize",
    json={
        "scope_type": "agent",
        "scope_id": "customer-support"
    },
    headers=headers
)
summary = response.json()["summary"]

Compress Long Conversations

# Reduce conversation size before storage
conversation = [
    {"role": "user", "content": "..."},
    # ... many turns ...
]

response = httpx.post(
    f"{base}/context/compress",
    json={"conversation": conversation},
    headers=headers
)
compressed = response.json()["compressed"]

Summarize Specific Memories

# Summarize a subset of memories
response = httpx.post(
    f"{base}/context/summarize/custom",
    json={"memory_ids": ["mem_1", "mem_2", "mem_3"]},
    headers=headers
)
summary = response.json()["summary"]

Next Steps