Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.blackbox.dasha.ai/llms.txt

Use this file to discover all available pages before exploring further.

Track what happened, when, and why. Activity logs capture every significant event across your organization — from webhook deliveries to tool executions to agent configuration changes. What you’ll learn: How to search and filter activity logs, understand event types and severities, and use the API for programmatic access.

Access activity logs

Navigate to Activity Logs in the sidebar to view all events across your organization.

Event types

Activity logs capture events across four categories:

Agent lifecycle

TypeDescription
AgentCreatedA new agent was created
AgentUpdatedAn existing agent was updated
AgentDeletedAn agent was deleted
AgentClonedAn agent was cloned from another agent

Conversation lifecycle

TypeDescription
CallCreatedA conversation was created via REST API or WebSocket
CallBulkScheduledA bulk batch of conversations was scheduled
CallCanceledA conversation was canceled
CallCompletedA conversation completed successfully
CallFailedA conversation failed
CallDeadlineExceededA conversation exceeded its deadline
CallDispatchedA conversation was dispatched to the runner for execution
CallReceivedAn incoming call was received
CallRejectedByWebhookA conversation was rejected by the start webhook

Webhooks

TypeDescription
WebhookSuccessA webhook was delivered successfully
WebhookFailedA webhook delivery failed

Runtime events

TypeDescription
ToolCallSuccessA tool call executed successfully during a conversation
ToolCallFailedA tool call failed during a conversation
McpCallExecutedAn MCP (Model Context Protocol) call was executed

Configuration changes

TypeDescription
ConfigurationCreatedA configuration resource was created (provider, SIP, media, integration)
ConfigurationUpdatedA configuration resource was updated
ConfigurationDeletedA configuration resource was deleted

Severity levels

Each event has a severity level indicating its importance:
SeverityDescriptionExamples
InfoNormal operation, no action requiredSuccessful webhook delivery, call completed
WarningSomething unusual happened but operation continuedSlow webhook response, retry succeeded
ErrorAn operation failedWebhook timeout, tool call error
CriticalSevere failure requiring immediate attentionAuthentication failure, system unavailable

Caller types

Events track who initiated the action:
CallerDescription
UserAction initiated by a user via API, dashboard, or web interface
SystemAction initiated by the platform (scheduler, webhooks, internal processes)

Filter activity logs

By event type

Filter to specific event types to focus your analysis:
const response = await fetch(
  'https://blackbox.dasha.ai/api/v1/activity-logs/search',
  {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      types: ['WebhookFailed', 'ToolCallFailed'],
      size: 50
    })
  }
).then(r => r.json());

console.log(`Failed events: ${response.totalCount}`);

By severity

Focus on errors and critical issues:
const response = await fetch(
  'https://blackbox.dasha.ai/api/v1/activity-logs/search',
  {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      severities: ['Error', 'Critical'],
      size: 100
    })
  }
).then(r => r.json());

response.results.forEach(event => {
  console.log(`[${event.severity}] ${event.message}`);
  if (event.metadata) {
    console.log('  Details:', JSON.stringify(event.metadata, null, 2));
  }
});

By date range

Query events within a specific time window:
const response = await fetch(
  'https://blackbox.dasha.ai/api/v1/activity-logs/search',
  {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      fromDate: '2026-04-01T00:00:00Z',
      toDate: '2026-04-15T23:59:59Z',
      size: 100
    })
  }
).then(r => r.json());

console.log(`Events in range: ${response.totalCount}`);

By agent or call

Track events for a specific agent or call:
const response = await fetch(
  'https://blackbox.dasha.ai/api/v1/activity-logs/search',
  {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      agentIds: ['YOUR_AGENT_ID'],
      size: 50
    })
  }
).then(r => r.json());
const response = await fetch(
  'https://blackbox.dasha.ai/api/v1/activity-logs/search',
  {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      callIds: ['YOUR_CALL_ID'],
      size: 50
    })
  }
).then(r => r.json());
Search across event messages and metadata:

Aggregations

Search results include aggregated counts for quick analysis. These show how events break down by type, severity, and caller across all matching results — not just the current page.
const response = await fetch(
  'https://blackbox.dasha.ai/api/v1/activity-logs/search',
  {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      fromDate: '2026-04-01T00:00:00Z',
      toDate: '2026-04-15T23:59:59Z',
      size: 0  // Only get aggregations, no results
    })
  }
).then(r => r.json());

console.log('By type:', response.aggregations?.typeCounts);
// { WebhookSuccess: 1523, ToolCallSuccess: 892, CallCompleted: 456, ... }

console.log('By severity:', response.aggregations?.severityCounts);
// { Info: 2800, Warning: 45, Error: 12, Critical: 1 }

console.log('By caller:', response.aggregations?.callerCounts);
// { System: 2750, User: 108 }

API response structure

Search activity logs

Request: POST /api/v1/activity-logs/search Request body:
FieldTypeDefaultDescription
pageinteger0Page number (0-indexed)
sizeinteger20Results per page (max 100)
typesActivityEventType[]Filter by event types
severitiesActivityEventSeverity[]Filter by severity levels
callersActivityEventCaller[]Filter by caller (User, System)
userEmailstringFilter by user email
callIdsstring[]Filter by call IDs
agentIdsstring[]Filter by agent IDs
fromDateDateTimeOffsetStart of date range
toDateDateTimeOffsetEnd of date range
searchTextstringFull-text search query
sortFieldstring”timestamp”Field to sort by
sortDirectionSortDirectionDescendingAscending or Descending
{
  "results": [
    {
      "eventId": "evt_abc123",
      "orgId": "org_xyz",
      "userEmail": null,
      "type": "WebhookSuccess",
      "severity": "Info",
      "callId": "call_def456",
      "agentId": "agent_ghi789",
      "message": "Webhook delivered successfully to https://api.example.com/webhook",
      "caller": "System",
      "metadata": {
        "url": "https://api.example.com/webhook",
        "statusCode": 200,
        "responseTimeMs": 145
      },
      "timestamp": "2026-04-15T10:30:00Z"
    },
    {
      "eventId": "evt_def456",
      "orgId": "org_xyz",
      "userEmail": "developer@company.com",
      "type": "AgentUpdated",
      "severity": "Info",
      "callId": null,
      "agentId": "agent_ghi789",
      "message": "Agent configuration updated",
      "caller": "User",
      "metadata": {
        "changedFields": ["systemPrompt", "ttsConfig"]
      },
      "timestamp": "2026-04-15T10:25:00Z"
    }
  ],
  "totalCount": 2858,
  "page": 0,
  "size": 20,
  "totalPages": 143,
  "aggregations": {
    "typeCounts": {
      "WebhookSuccess": 1523,
      "CallCompleted": 456,
      "ToolCallSuccess": 892
    },
    "severityCounts": {
      "Info": 2800,
      "Warning": 45,
      "Error": 12,
      "Critical": 1
    },
    "callerCounts": {
      "System": 2750,
      "User": 108
    }
  },
  "executionTimeMs": 23
}

Common tasks

const response = await fetch(
  'https://blackbox.dasha.ai/api/v1/activity-logs/search',
  {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      types: ['WebhookFailed'],
      sortDirection: 'Descending',
      size: 50
    })
  }
).then(r => r.json());

response.results.forEach(event => {
  console.log(`Call ${event.callId}: ${event.message}`);
  if (event.metadata) {
    console.log(`  URL: ${event.metadata.url}`);
    console.log(`  Error: ${event.metadata.error || event.metadata.statusCode}`);
  }
});
// Get all events for a specific call
const response = await fetch(
  'https://blackbox.dasha.ai/api/v1/activity-logs/search',
  {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      callIds: ['YOUR_CALL_ID'],
      sortField: 'timestamp',
      sortDirection: 'Ascending',
      size: 100
    })
  }
).then(r => r.json());

// Timeline of events
response.results.forEach(event => {
  const time = new Date(event.timestamp).toISOString();
  console.log(`${time} [${event.type}] ${event.message}`);
});
const response = await fetch(
  'https://blackbox.dasha.ai/api/v1/activity-logs/search',
  {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      types: ['ToolCallFailed'],
      fromDate: new Date(Date.now() - 24 * 60 * 60 * 1000).toISOString(), // Last 24h
      size: 100
    })
  }
).then(r => r.json());

// Group by tool name
const byTool = {};
response.results.forEach(event => {
  const toolName = event.metadata?.toolName || 'unknown';
  byTool[toolName] = (byTool[toolName] || 0) + 1;
});

console.log('Tool failures by name:', byTool);
const response = await fetch(
  'https://blackbox.dasha.ai/api/v1/activity-logs/search',
  {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      types: ['AgentCreated', 'AgentUpdated', 'AgentDeleted'],
      callers: ['User'],
      size: 50
    })
  }
).then(r => r.json());

response.results.forEach(event => {
  console.log(`${event.userEmail} ${event.type} agent ${event.agentId}`);
  if (event.metadata?.changedFields) {
    console.log(`  Changed: ${event.metadata.changedFields.join(', ')}`);
  }
});

Troubleshooting with activity logs

Activity logs are your first stop when debugging issues. Here’s how to approach common problems:

Webhook not triggering?

  1. Search for WebhookFailed events for your agent
  2. Check the metadata field for error details (timeout, DNS failure, HTTP status)
  3. Verify webhook URL is publicly accessible

Tool calls failing silently?

  1. Filter by types: ['ToolCallFailed'] and your call ID
  2. Review error messages and response times in metadata
  3. Check if the tool webhook is responding within the 10-second timeout

Unexpected call behavior?

  1. Get the full event timeline for the call ID (sort ascending by timestamp)
  2. Look for warning or error severity events
  3. Check if CallRejectedByWebhook or CallFailed events explain the issue
Activity logs are retained for 90 days. For longer retention or compliance requirements, export logs periodically using the search API.

What’s next

Call History

View and search past calls

Call Inspector

Deep dive into individual calls

Webhook Events

Understand webhook payloads

Testing Webhooks

Test webhook delivery