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.

Find any past call. Filter by status, date, agent, or endpoint — then drill down to transcripts, recordings, and tool executions for complete conversation analysis. What you’ll learn: Filtering and searching calls, viewing call details, and API response structure.

Access call history

Navigate to Calls in the sidebar to view all calls.

Filter calls

By status

Filter calls by their final outcome:
StatusDescription
CompletedConversation finished successfully
FailedError occurred during call
CanceledCall was canceled before completion
RunningCall currently in progress
QueuedWaiting in queue
PendingWaiting to be queued
CreatedJust created, not yet queued
const response = await fetch(
  'https://blackbox.dasha.ai/api/v1/callresults/search',
  {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      callStatuses: ['Completed', 'Failed'],
      page: 0,
      size: 50
    })
  }
).then(r => r.json());
const response = await fetch(
  'https://blackbox.dasha.ai/api/v1/callresults/search',
  {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      fromDate: '2025-01-01T00:00:00Z',
      toDate: '2025-01-31T23:59:59Z',
      page: 0,
      size: 50
    })
  }
).then(r => r.json());

console.log(`Calls in January: ${response.totalCount}`);
const response = await fetch(
  'https://blackbox.dasha.ai/api/v1/callresults/search',
  {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      agentIds: ['YOUR_AGENT_ID'],
      page: 0,
      size: 50
    })
  }
).then(r => r.json());

console.log(`Agent calls: ${response.totalCount}`);

View call details

Quick details

Click any call row to expand inline details:
  • Full call ID — Complete identifier for API operations
  • Duration and timestamps — Precise timing information
  • Agent configuration — Agent that handled the call
  • Additional data — Custom metadata passed when scheduling
  • Transcript preview — Quick view of conversation

Open Call Inspector

Click the Inspect button for full analysis:
  • Complete transcript with timestamps
  • Audio recording playback
  • Tool execution logs
  • LLM interaction details
  • Performance metrics

Call Inspector

Deep dive into individual calls

API response structure

Search call results

Request: POST /api/v1/callresults/search Request body:
FieldTypeDescription
pageintegerPage number (0-indexed)
sizeintegerResults per page (max 100)
fromDateDateTimeOffsetFilter start date
toDateDateTimeOffsetFilter end date
agentIdsstring[]Filter by agents
callStatusesCallStatus[]Filter by status
searchTextstringFull-text search
includeAggregationsbooleanInclude statistics
{
  "results": [
    {
      "callId": "call_abc123",
      "agentId": "agent_def456",
      "orgId": "org_xyz",
      "callStatus": "Completed",
      "callType": "OutboundAudio",
      "createdTime": "2025-01-20T10:30:00Z",
      "completedTime": "2025-01-20T10:35:00Z",
      "durationSeconds": 300,
      "endpoint": "+1-555-123-4567",
      "callAdditionalData": {
        "customerId": "cust_123"
      },
      "transcription": [...],
      "result": {...},
      "inspectorUrl": "https://...",
      "recordingUrl": "https://..."
    }
  ],
  "totalCount": 150,
  "page": 0,
  "size": 20,
  "totalPages": 8,
  "executionTimeMs": 45
}

Get single call

Request: GET /api/v1/calls/{callId} Returns call details including status, timestamps, and endpoint.

Get call queue

View scheduled and pending calls: Request: GET /api/v1/calls/queue/list Query parameters:
ParameterTypeDescription
skipintegerItems to skip
takeintegerItems to return (max 1000)
agentIdstringFilter by agent
statusCallStatus[]Filter by status
fromDateDateTimeOffsetFilter start date
toDateDateTimeOffsetFilter end date

Call statistics

Get aggregated call statistics: Request: GET /api/v1/calls/statistics/statuses
const response = await fetch(
  'https://blackbox.dasha.ai/api/v1/calls/statistics/statuses',
  { headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
).then(r => r.json());

console.log('Call counts by status:', response.statuses);
// { Created: 5, Pending: 3, Queued: 10, Running: 2, Completed: 150, Failed: 12, Canceled: 8 }

Common tasks

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

// Review error messages
response.results.forEach(call => {
  console.log(`${call.callId}: ${call.errorMessage}`);
});
Query calls using custom fields in additional data:
const response = await fetch(
  'https://blackbox.dasha.ai/api/v1/callresults/search',
  {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      additionalDataFilters: {
        'result.postCallAnalysis.sentiment': 'positive',
        'result.postCallAnalysis.info.age': { 'gte': 25, 'lte': 65 }
      },
      size: 100
    })
  }
).then(r => r.json());
const response = await fetch(
  'https://blackbox.dasha.ai/api/v1/callresults/search',
  {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      includeAggregations: true,
      aggregationFields: ['result.postCallAnalysis.sentiment'],
      size: 0  // Only get aggregations, no results
    })
  }
).then(r => r.json());

console.log('Status counts:', response.aggregations?.statusCounts);
console.log('Agent counts:', response.aggregations?.agentCounts);

Call statuses reference

StatusDescription
CreatedCall created but not yet queued
PendingWaiting to be queued
QueuedIn queue, waiting for resources
RunningCall in progress
CompletedSuccessfully finished
FailedError occurred
CanceledManually canceled or deadline exceeded

What’s next

Call Inspector

Deep dive into individual calls

Conversations

Understand call transcripts

Concurrency Monitoring

Monitor active calls