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

# Get Click-to-Call Config

> Whether this deployment can place click-to-calls, and the limits it enforces

A readiness check. Click-to-call depends on two server-side secrets you cannot see or fix, and without them the feature fails in two very different ways:

* **no API credential** → nothing dials at all;
* **no signing secret** → calls dial, but every result is rejected at our own door and dead-lettered.

This endpoint says which, so a UI can report it rather than letting someone place calls that can never report back. It also returns the numeric limits, so a client form can validate against the server's own values instead of hard-coding them.

<Note>
  Never returns a secret, a credential or a full URL — only whether one is present, and the callback **host** so you can tell which environment you're pointed at.
</Note>

## Request

### Headers

<ParamField header="Authorization" type="string" required>
  Bearer token with your API key
</ParamField>

## Response

<ResponseField name="api_configured" type="boolean">
  `true` when the server has a call-platform URL and credential. `false` means no call will dial
</ResponseField>

<ResponseField name="webhook_configured" type="boolean">
  `true` when the server can verify inbound call results. `false` means calls dial but outcomes are dropped
</ResponseField>

<ResponseField name="callback_host" type="string | null">
  Host the server publishes for call results, e.g. `api.60db.ai`. `null` when it isn't configured
</ResponseField>

<ResponseField name="limits" type="object">
  <Expandable title="properties">
    <ResponseField name="RING_MIN" type="integer">Minimum ring timeout in seconds (`5`)</ResponseField>
    <ResponseField name="RING_MAX" type="integer">Maximum ring timeout in seconds (`60`)</ResponseField>
    <ResponseField name="DEFAULT_AGENT_RING" type="integer">Default `agent_ring_timeout` (`30`)</ResponseField>
    <ResponseField name="DEFAULT_CUSTOMER_RING" type="integer">Default `customer_ring_timeout` (`45`)</ResponseField>
    <ResponseField name="DURATION_MIN" type="integer">Minimum `max_duration` in seconds (`30`)</ResponseField>
    <ResponseField name="DURATION_MAX" type="integer">Maximum `max_duration` in seconds (`7200`)</ResponseField>
    <ResponseField name="DEFAULT_DURATION" type="integer">Default `max_duration` (`3600`)</ResponseField>
    <ResponseField name="METADATA_MAX_BYTES" type="integer">Serialised `metadata` ceiling (`2048`)</ResponseField>
  </Expandable>
</ResponseField>

## Errors

| Status | Code                     | Meaning                   |
| ------ | ------------------------ | ------------------------- |
| 409    | `DIALER_NOT_PROVISIONED` | Trunk not set up (Gate T) |

## Example

<RequestExample>
  ```bash cURL theme={null}
  curl https://api.60db.ai/dialer/click2call/config \
    -H "Authorization: Bearer your-api-key"
  ```

  ```javascript JavaScript theme={null}
  const res = await fetch('https://api.60db.ai/dialer/click2call/config', {
    headers: { Authorization: `Bearer ${process.env.SIXTYDB_API_KEY}` },
  });
  const { data } = await res.json();

  if (!data.api_configured) throw new Error('Click-to-call is not configured on this server');
  if (!data.webhook_configured) console.warn('Calls will dial, but results will be dropped');
  ```

  ```python Python theme={null}
  res = requests.get(
      "https://api.60db.ai/dialer/click2call/config",
      headers={"Authorization": f"Bearer {os.environ['SIXTYDB_API_KEY']}"},
  )
  cfg = res.json()["data"]
  print(cfg["api_configured"], cfg["webhook_configured"], cfg["callback_host"])
  ```
</RequestExample>

<ResponseExample>
  ```json 200 OK theme={null}
  {
    "success": true,
    "data": {
      "api_configured": true,
      "webhook_configured": true,
      "callback_host": "api.60db.ai",
      "limits": {
        "RING_MIN": 5,
        "RING_MAX": 60,
        "DEFAULT_AGENT_RING": 30,
        "DEFAULT_CUSTOMER_RING": 45,
        "DURATION_MIN": 30,
        "DURATION_MAX": 7200,
        "DEFAULT_DURATION": 3600,
        "METADATA_MAX_BYTES": 2048
      }
    }
  }
  ```
</ResponseExample>
