> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dialgen.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Call Status

> Monitor call status, lifecycle, and completion states.

## Call Status Types

Calls progress through these statuses:

| Status      | Description                                |
| ----------- | ------------------------------------------ |
| `SCHEDULED` | Call is queued and waiting to be initiated |
| `ONGOING`   | Call is currently in progress              |
| `COMPLETED` | Call finished successfully                 |
| `MISSED`    | Call was not answered                      |
| `FAILED`    | Call failed due to technical error         |

***

## Checking Call Status

### Live Status (30 Days)

For recent calls, use the live status endpoint:

```bash theme={null}
curl --location 'https://sa.dialgen.ai/api/v1/status/call?callId=call_123' \
--header 'Authorization: Bearer YOUR_API_KEY'
```

**Response:**

```json theme={null}
{
  "callId": "call_123",
  "status": "ONGOING",
  "startTime": "2025-11-15T14:30:01.123Z",
  "phoneNumber": "+15551234567",
  "contactId": "contact_456",
  "batchId": null,
  "error": null,
  "duration": null,
  "recordingUrl": null
}
```

### Persistent Status (After 30 Days)

For older calls, use the persistent status endpoint:

```bash theme={null}
curl --location 'https://sa.dialgen.ai/api/v1/call/check-status?callId=call_123' \
--header 'Authorization: Bearer YOUR_API_KEY'
```

<Info>
  Live status is cached for 30 days. After that, use the persistent status endpoint for historical data.
</Info>

***

## Call Lifecycle

<Steps>
  <Step title="SCHEDULED">
    Call is queued in the system
  </Step>

  <Step title="ONGOING">
    Call is connected and conversation is active
  </Step>

  <Step title="COMPLETED / MISSED / FAILED">
    Call has ended with a final status
  </Step>
</Steps>

***

## Status Details

### SCHEDULED

* Call is in queue
* Waiting to be initiated
* Can be cancelled

### ONGOING

* Call is connected
* Conversation in progress
* Real-time transcription active
* Duration counter running

### COMPLETED

* Call ended successfully
* Recording available
* Transcript available
* Metrics generated
* Summary created

### MISSED

* Call was not answered
* Will retry based on retry strategy
* No recording or transcript

### FAILED

* Technical error occurred
* Error message available
* May retry based on error type

***

## Monitoring Active Calls

Track ongoing calls in real-time:

```javascript theme={null}
async function monitorCall(callId) {
  let status = 'ONGOING';
  
  while (status === 'ONGOING' || status === 'SCHEDULED') {
    const response = await fetch(
      `https://sa.dialgen.ai/api/v1/status/call?callId=${callId}`,
      {
        headers: {
          'Authorization': 'Bearer YOUR_API_KEY'
        }
      }
    );
    
    const data = await response.json();
    status = data.status;
    
    if (data.duration) {
      console.log(`Call duration: ${data.duration}s`);
    }
    
    if (status === 'ONGOING') {
      await new Promise(resolve => setTimeout(resolve, 5000)); // Wait 5s
    }
  }
  
  console.log(`Call ended with status: ${status}`);
}
```

***

## Error Handling

### Common Error Codes

| Error Code             | Description                      |
| ---------------------- | -------------------------------- |
| `INVALID_NUMBER`       | Phone number is invalid          |
| `BUSY`                 | Line is busy                     |
| `NO_ANSWER`            | Call was not answered            |
| `NETWORK_ERROR`        | Network connectivity issue       |
| `INSUFFICIENT_CREDITS` | Not enough credits to place call |

### Retry Behavior

* **BUSY**: Retries after `busyDelay`
* **NO\_ANSWER**: Retries after `noAnswerDelay`
* **Other errors**: May not retry depending on error type

***

## Webhooks for Status Updates

Receive real-time status updates via webhooks:

```json theme={null}
{
  "webhooks": {
    "onCallComplete": "https://api.yourcompany.com/webhooks/call-complete"
  }
}
```

### Webhook Payload

```json theme={null}
{
  "event": "call.completed",
  "callId": "call_123",
  "status": "COMPLETED",
  "duration": 180,
  "contactId": "contact_456",
  "summary": "Call summary...",
  "recordingUrl": "https://..."
}
```

***

## Next Steps

<CardGroup cols={2}>
  <Card title="Call Metrics" icon="chart-bar" href="/api-reference/endpoint/get-call-metrics">
    Get detailed call metrics and analytics
  </Card>

  <Card title="Recordings" icon="file-audio" href="/guides/call-management/recordings">
    Access call recordings and transcripts
  </Card>
</CardGroup>
