# CallUltra public API

> Use the versioned API to list agents, create calls, and inspect call records from your own application.

Reviewed: 2026-09-30

Source: https://docs.callultra.com/api-reference

## Base URL and authentication

The public API is served by your CallUltra application host under `/api/v1`. Create an API key in **Developers** and keep it on a trusted server. Send the key with the `Authorization: Bearer` header.

```bash
curl https://app.callultra.com/api/v1/agents \
  -H "Authorization: Bearer dgr_your_api_key"
```

> **Keep the key private:** Never place an API key in a browser bundle, public repository, or client-side widget.

## Supported operations

| Method | Path | Purpose |
| --- | --- | --- |
| GET | `/api/v1/agents` | List agents available to the API key. |
| GET | `/api/v1/calls` | List calls with status, agent, campaign, and date filters. |
| POST | `/api/v1/calls` | Create a single outbound call. |
| GET | `/api/v1/calls/{callId}` | Read one call and its available result fields. |
| POST | `/api/v1/calls/batch` | Submit a batch of calls for dispatch. |

## Create a call

```json
{
  "to": "+919876543210",
  "agent_id": "<agent-id>",
  "contact_name": "Rohit Sharma",
  "company_name": "Acme Interiors",
  "metadata": {
    "service_type": "deep cleaning"
  }
}
```

## API behavior

API calls share account plan, wallet, and number validation checks with the dashboard. Batch requests validate all phone numbers before dispatch. The campaign calling-hours schedule does not apply to calls started directly through the API.
