HTTP API
MCP を使わないプログラム向けの LINE Agent SDK HTTP API。LINE 接続の作成、各ステップが誰の番かの確認、公開後のメッセージ送信ができ、AI ツールは認証情報に触れません。
ベース URL#
API は自分で動かすサービスの下にあり、パスはすべて /api で始まります:
https://line-oa-mcp--<組織>.hosting.agentlab.run/api動かし方は Agent Lab で LINE OA MCP を動かすを参照してください。
MCP のほうが簡単です
MCP に対応した AI ツール(Claude Code、Codex、Cursor)は LINE OA MCP を使えます。ツールはこの API と同じことをします。動いているサービスは /agent.md で AI 向けの説明も返します。
認証#
/api へのリクエストにはすべて Agent トークンが必要です。Google でコントロールパネルにログインし、Agent トークン ページ(/tokens)で作成します:
Authorization: Bearer <Agent トークン>ない、違う、または取り消されている場合は 401 を返します。トークンの表示は一度だけで、不要になったら同じページで取り消します。
トークンを会話に貼らない
トークンは AI ツールの環境変数(たとえば LINE_AGENT_SDK_TOKEN)に入れてもらい、会話には貼らないでください。Channel Secret も、サービスのページでだけ入力します。
1. 接続を作る#
| メソッドとパス | 用途 |
|---|---|
POST /api/connections | 既存の LINE 公式アカウントへの接続を作成します。人に渡す setupUrl を含む接続を返します。 |
GET /api/connections | 接続を一覧にします。 |
GET /api/connections/{id} | 接続の現在の状態を読みます。読むたびに、人が LINE 側で作業を終えたかも確認します。 |
POST /api/connections
Content-Type: application/json
{ "workspace": "acme", "label": "サポート用アカウント" }どちらの項目も省略できます。返ってきた setupUrl を人に渡してください。Channel ID と Channel Secret はそのページでだけ入力します。
2. 各ステップの完了を待つ#
接続の nextStep は、いま誰の番か、何をするか、どうなれば完了かを示します:
{
"id": "conn_9f3a1c2b4d5e",
"state": "webhook_active",
"live": false,
"nextStep": {
"key": "webhook_active",
"title": "打開「Use webhook」",
"actor": "human",
"status": "current",
"doneWhen": "LINE 回報 webhook active = true(每 2 秒自動偵測,不用回來按)",
"how": "LINE Developers › Messaging API › Webhook settings › Use webhook 打開。",
"url": "https://developers.line.biz/console/"
}
}actorがhumanのときは、title、how、urlを人に伝えて、接続を読み続けます。ステップは自動で完了するので、「終わりましたか」と聞く必要はありません。actorがopsのときは、サービスの運営側が対応中です。対応中だと人に伝えます。actorがagentのときは、サービスが自分で行います。statusがerrorのときは、理由がnoteに入ります。
2〜5 秒ごとに読むことをおすすめします。live が true になれば、最初の LINE メッセージが人のスマートフォンに届いています。ステップのタイトルや説明は繁体字中国語です。
ステップ
key | 誰が | 完了の条件 |
|---|---|---|
credentials | 本人 | Channel ID と Channel Secret でトークンを発行できる。 |
health | 自動 | アカウント情報、チャットモード、Webhook、上限、友だち数を読み取る。設定は変えない。 |
mode | 本人 | サービスのページで、送信のみ・転送・直接引き継ぎのいずれかを選ぶ。 |
webhook_set | 自動 | Webhook URL をこのサービスに設定し、読み戻して確認する。 |
webhook_active | 本人 | LINE Developers で「Use webhook」をオンにする。自動で検知される。 |
auto_reply | 本人 | OA Manager で自動応答メッセージをオフにし、サービスのページで確認する。 |
pair | 本人 | 友だち追加して pairingCode を送る。 |
first_message | 自動 | ペアリングメッセージへの応答が受け付けられる。 |
送信のみを選ぶと、webhook_set、webhook_active、auto_reply は skipped になり、pair はテスト用の userId を貼り付ける手順に変わります。転送を選ぶと auto_reply は省略され、既存システムの設定はそのままです。
3. メッセージを送る#
| メソッドとパス | 用途 |
|---|---|
POST /api/connections/{id}/messages | ペアリング済みのテストユーザーにテキストをプッシュ送信します。 |
POST /api/connections/conn_9f3a1c2b4d5e/messages
Content-Type: application/json
{ "text": "ご注文の商品を発送しました" }{ "ok": true, "to": "paired test user" }接続がまだ公開されていないときは、nextStep とともに 409 を返します。
プッシュは上限を使います
プッシュメッセージは公式アカウントの月間上限に数えられ、応答メッセージは数えられません。テストユーザーが公式アカウントにメッセージを送ると Agent は応答で答え、応答トークンの期限が切れた場合だけプッシュに切り替えます。
サンドボックス#
公式アカウントがないときは、運営側が用意した共有サンドボックスで試せます:
| メソッドとパス | 用途 |
|---|---|
POST /api/sandbox | join コードを取得します。joinText(たとえば join blue-fox-42)とサンドボックスの account.addFriendUrl を返します。 |
GET /api/sandbox/{id} | サンドボックスの状態を読みます。live が true なら最初のメッセージが届いています。 |
addFriendUrl と joinText を人に渡します。友だち追加してその 1 行を送ると、スマートフォンがワークスペースに結び付きます。サンドボックスは join したスマートフォンにしか送れず、友だち関係は本番のアカウントには引き継がれません。
接続オブジェクト#
| 項目 | 意味 |
|---|---|
id | 接続 ID。以後の呼び出しで使います。 |
state | いまのステップの key。すべて終われば live。 |
live | 最初のメッセージが届いたら true。 |
mode | push_only、relay、direct。まだ選んでいなければ null。 |
account | 公式アカウントの basicId、displayName、addFriendUrl。確認が終わるまでは null。 |
pairingCode | スマートフォンから送るペアリングコード。たとえば AL-7Q4K。 |
tester | ペアリング済みテストユーザーの userId。 |
webhookUrl | この接続の Webhook URL。サービスが自分で LINE に登録します。 |
setupUrl | 人に渡すコントロールパネルのページ。 |
steps | すべてのステップ。それぞれ key、title、actor、status、doneWhen と、場合により how、url、note を持ちます。 |
nextStep | いま取り組むステップ。すべて終われば null。 |
エラー#
| ステータス | 意味 | 対応 |
|---|---|---|
400 | リクエストが正しくない。たとえば text が空。理由は error に入ります。 | 直して送り直します。 |
401 | トークンがない、違う、または取り消されている。 | Authorization: Bearer <Agent トークン> を確認します。 |
404 | その接続やサンドボックスが見つからない。 | id を確認します。 |
409 | 接続がまだ公開されておらず、送信できない。 | 返ってきた nextStep に従って続けます。 |
Webhook#
POST /hooks/line/{id} は LINE プラットフォームが呼び出すものです。トークンは不要ですが、すべてのリクエストが x-line-signature の検証を通る必要があり、通らなければ 401 を返します。この URL はサービスが webhook_set のステップで自分で LINE に登録するので、手で貼り付ける必要はありません。