> ## 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.

# message/stream

> 통화를 시작하고 상대 발화를 SSE로 받아요.

## 할 수 있는 일

[message/send](/developer/a2a/methods/message-send)의 통화 시작과 같은 요청인데, 응답이 SSE
스트림이에요. 통화가 연결되면 상대가 한 말이 상태 업데이트로 계속 실려 와요.

`capabilities.streaming`이 `true`라 이 메서드를 쓸 수 있어요. Agent Card에서 확인할 수 있어요.

## 요청

```bash theme={null}
curl -N -X POST "https://api.telloai.io" \
  -H "Authorization: Bearer <YOUR_A2A_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "message/stream",
    "params": {
      "message": {
        "role": "user",
        "parts": [{ "kind": "text", "text": "내일 14시 예약이 맞는지 확인해줘" }],
        "messageId": "msg-1",
        "metadata": { "to": "+821012345678" }
      }
    }
  }'
```

`curl`에서는 `-N`으로 버퍼링을 꺼야 이벤트가 실시간으로 보여요.

## 파라미터

[message/send](/developer/a2a/methods/message-send)의 통화 시작과 같아요.
`params.message.metadata.to`가 필수예요.

## 스트림 흐름

```text theme={null}
task              submitted        접수됨. 아직 전화가 걸리기 전
statusUpdate      working          통화 연결. 대화 시작
statusUpdate      working          상대 발화가 메시지 텍스트로 실려 옴
statusUpdate      input-required   판단 필요. 질문이 agent 역할 메시지로 옴
                                   ↑ 여기서 스트림이 정상 종료돼요
```

<Warning>
  **`input-required`는 A2A에서 중단 상태라 이때 스트림이 정상 종료돼요.** 끊긴 게 아니에요.
  답변한 뒤 후속 발화를 받으려면
  [tasks/resubscribe](/developer/a2a/methods/tasks-resubscribe)로 같은 태스크를 다시 열어요.
</Warning>

통화가 끝나면 종단 상태(`completed` · `failed` · `canceled`)로 스트림이 닫혀요.

## 오류

통화 시작과 같아요. `metadata.to`가 없으면 `to_required`로 거부돼요. 전체 목록은
[오류](/developer/a2a/errors)에 있어요.

## 주의사항

* 실제 통화가 발신되고 크레딧이 차감돼요. 통제된 테스트 수신번호로만 시험하세요.
* 답변은 이 스트림이 아니라 별도 요청으로 보내요.
  [message/send](/developer/a2a/methods/message-send)에 `taskId`와 `role: "agent"`를 넣어요.
* 통화가 시작조차 못 하면 `submitted`에서 `failed`로 끝나고 사유가 마지막 상태 업데이트에
  실려요.

## 관련 문서

* [message/send](/developer/a2a/methods/message-send)
* [tasks/resubscribe](/developer/a2a/methods/tasks-resubscribe)
* [태스크 상태](/developer/a2a/task-states)
