---
title: HTTP API
description: MCP を使わないプログラム向けの LINE Agent SDK HTTP API。LINE 接続の作成、各ステップが誰の番かの確認、公開後のメッセージ送信ができ、AI ツールは認証情報に触れません。
url: https://agentlab.cresclab.com/docs/ja/line/api
language: ja
updated: 2026-10-24
---

# HTTP API

MCP を使わないプログラム向けの LINE Agent SDK HTTP API。LINE 接続の作成、各ステップが誰の番かの確認、公開後のメッセージ送信ができ、AI ツールは認証情報に触れません。

## ベース URL

API は自分で動かすサービスの下にあり、パスはすべて `/api` で始まります：

```text
https://line-oa-mcp--<組織>.hosting.agentlab.run/api
```

動かし方は [Agent Lab で LINE OA MCP を動かす](https://agentlab.cresclab.com/docs/ja/line/quickstart.md)を参照してください。

> [!NOTE] MCP のほうが簡単です
> MCP に対応した AI ツール（Claude Code、Codex、Cursor）は [LINE OA MCP](https://agentlab.cresclab.com/docs/ja/line/mcp-tools.md) を使えます。ツールはこの API と同じことをします。動いているサービスは `/agent.md` で AI 向けの説明も返します。

## 認証

`/api` へのリクエストにはすべて Agent トークンが必要です。Google でコントロールパネルにログインし、**Agent トークン** ページ（`/tokens`）で作成します：

```http
Authorization: Bearer <Agent トークン>
```

ない、違う、または取り消されている場合は `401` を返します。トークンの表示は一度だけで、不要になったら同じページで取り消します。

> [!WARNING] トークンを会話に貼らない
> トークンは AI ツールの環境変数（たとえば `LINE_AGENT_SDK_TOKEN`）に入れてもらい、会話には貼らないでください。Channel Secret も、サービスのページでだけ入力します。

## 1. 接続を作る

| メソッドとパス              | 用途                                                                                       |
| --------------------------- | ------------------------------------------------------------------------------------------ |
| `POST /api/connections`     | 既存の LINE 公式アカウントへの接続を作成します。人に渡す `setupUrl` を含む接続を返します。 |
| `GET /api/connections`      | 接続を一覧にします。                                                                       |
| `GET /api/connections/{id}` | 接続の現在の状態を読みます。読むたびに、人が LINE 側で作業を終えたかも確認します。         |

```http
POST /api/connections
Content-Type: application/json

{ "workspace": "acme", "label": "サポート用アカウント" }
```

どちらの項目も省略できます。返ってきた `setupUrl` を人に渡してください。Channel ID と Channel Secret はそのページでだけ入力します。

## 2. 各ステップの完了を待つ

接続の `nextStep` は、いま誰の番か、何をするか、どうなれば完了かを示します：

```json
{
  "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` | ペアリング済みのテストユーザーにテキストをプッシュ送信します。 |

```http
POST /api/connections/conn_9f3a1c2b4d5e/messages
Content-Type: application/json

{ "text": "ご注文の商品を発送しました" }
```

```json
{ "ok": true, "to": "paired test user" }
```

接続がまだ公開されていないときは、`nextStep` とともに `409` を返します。

> [!NOTE] プッシュは上限を使います
> プッシュメッセージは公式アカウントの月間上限に数えられ、応答メッセージは数えられません。テストユーザーが公式アカウントにメッセージを送ると 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 に登録するので、手で貼り付ける必要はありません。
