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

# createCall

> 수신번호로 발신을 시작하고 통화를 만들어요.

## 할 수 있는 일

수신번호로 전화를 걸어요. 통화 목적을 `prompt`로 넘기면 에이전트가 그 목적에 맞춰 대화해요.
에이전트는 서버가 정하므로 명령으로 지정하지 않아요.

## 시그니처

<CodeGroup>
  ```python Python theme={null}
  await client.create_call(
      to: str,
      prompt: str = "",
      metadata: dict | None = None,
      request_id: str | None = None,
  ) -> None
  ```

  ```ts Node theme={null}
  await client.createCall(
    to: string,
    prompt?: string,
    metadata?: Record<string, unknown>,
    requestId?: string,
  ): Promise<void>
  ```

  ```go Go theme={null}
  err := client.CreateCall(
  	ctx context.Context,
  	to, prompt string,
  	metadata map[string]any,
  	requestID string,
  ) error
  ```

  ```java Java theme={null}
  CompletableFuture<Void> createCall(String to)
  CompletableFuture<Void> createCall(String to, String prompt)
  CompletableFuture<Void> createCall(String to, String prompt,
                                     Map<String, Object> metadata, String requestId)
  ```
</CodeGroup>

## 파라미터

| 이름          | 필수 | 기본값  | 설명                                    |
| ----------- | -- | ---- | ------------------------------------- |
| `to`        | 필수 | 없음   | 전화 걸 번호. E.164 형식(`+821012345678`) 권장 |
| `prompt`    | 선택 | `""` | 통화 목적. 에이전트가 이 지시를 따라 대화해요            |
| `metadata`  | 선택 | 없음   | 임의 JSON. 통화에 함께 기록돼요                  |
| `requestId` | 선택 | 없음   | 응답·오류 프레임에 그대로 에코돼요                   |

## 결과

호출은 프레임을 보내고 바로 반환해요. **통화가 성립될 때까지 기다리지 않아요.**
성공하면 `call.created`가 오고 거기서 `callId`를 받아요. 통화가 끝날 때까지 기다리려면
`waitClosed`를 써요.

```text theme={null}
call.created                       초기 상태 queued
call.statusChanged  dialing
call.statusChanged  ringing
call.statusChanged  inProgress     상대가 받음
```

`dialing`·`ringing`은 건너뛸 수 있어요. 이미 응답된 통화는 `inProgress`로 바로 가요.

## 오류

| 코드                  | 클래스                      | 언제                           |
| ------------------- | ------------------------ | ---------------------------- |
| `toRequired`        | `ValidationError`        | `to`가 비어 있음                  |
| `callAlreadyActive` | `CallAlreadyActiveError` | 이 연결에 이미 활성 통화가 있음           |
| `callRejected`      | `CallRejectedError`      | 의도 검증에서 거부. `question` 동반 가능 |

발신 게이트가 거부하면 `call.created` 없이 오류만 오고 세션이 끝나요. 통화가 만들어지지
않았으므로 `callId`도 과금도 없어요. 계정 정책 4종은 `CallRefusedError`, 서비스측 4종은
`CallProviderError`예요. 자세한 건 [오류](/developer/sdk/errors)를 보세요.

## 주의사항

* 한 연결에서 활성 통화는 하나예요.
* 실제 통화가 발신되고 크레딧이 차감돼요. 통제된 테스트 수신번호로만 시험하세요.
* 거부는 게이트웨이가 재시도하지 않아요. 재시도 정책은 호출자 몫이에요.

## 관련 문서

* [레퍼런스](/developer/sdk/reference)
* [이벤트](/developer/sdk/events)
* [오류](/developer/sdk/errors)
