L Message(エルメ)

L Message(エルメ)API/Webhook リファレンス

版数 1.1.0(2026/09/24)

0. お問い合わせ

CONTACT

本リファレンスおよびエルメAPI・Webhook転送に関するお問い合わせは、以下の専用窓口からお送りください。

専用お問い合わせ窓口を開く

1. 概要

OVERVIEW

本リファレンスは、外部システムからエルメ(L Message)を操作するパブリックAPIと、エルメから外部システムへデータを送信するWebhook転送機能の仕様をまとめたものです。エンドポイントごとに、目的・入力パラメータ・出力パラメータ・リクエスト例・レスポンス例を記載しています。

対象範囲はPhase 1、APIバージョンは /v1、Webhook仕様は版数1.0.0です。

1.1 2つの連携方式

エルメの外部連携は、方向の異なる2つの仕組みで構成されます。外部システムからエルメを操作する場合はAPIを、エルメ側で発生したイベントを外部システムで受け取る場合はWebhook転送機能を使用します。両者は独立しており、どちらか一方のみを利用することもできます。

方向仕組み内容
外部システム → エルメREST API(/v1)友だちの取得、タグ・友だち情報の更新、ステップ配信の開始/停止、メッセージ送信などを実行します。認証は X-LME-API-KEY ヘッダーです。
エルメ → 外部システムWebhook転送LINE Platformから届いたイベントの転送と、エルメ内で発生した tag/friend_info 操作の通知を、指定のURLへPOSTします。

1.2 主なユースケース

ケース連携フロー主要API
AIボットによる自動応答オートメーションツールのAIが友だちからのメッセージ内容を判定し、エルメのAPIを呼び出します。メッセージ送信、友だち詳細の取得、タグをつける/外す、ステップ配信の開始/停止、友だち情報の更新
CRM / SFACRMが既存の友だち一覧を取得し、指定した友だちのタグ/友だち情報/ステップ配信/対応ステータスを更新するためにAPIを呼び出します。友だち一覧の取得、友だち詳細の取得、タグ/ステップ配信/フィールド一覧の取得、カンバセーションの取得、対応ステータスの更新
ECECサイトが商品閲覧、カート追加、チェックアウト、購入、配送、在庫などのイベントを記録し、アプローチ対象となる友だちの情報を更新するためにエルメのAPIを呼び出します。タグをつける/外す、友だち情報の更新、ステップ配信の開始/停止、メッセージ送信

いずれのケースでも、対象の友だちは lmessage_friend_id または line_friend_id で指定します。

1.3 対象範囲(Phase 1)

Phase 1の対象
  • API:友だちの一覧/詳細の取得、タグをつける/外す、友だち情報の更新、ステップ配信の開始/停止、メッセージ送信、テンプレートの取得、カンバセーションの取得。
  • LINE公式アカウントデータ転送機能:対象アカウントにLINE Platformから届いたすべてのイベントを転送します。イベント種別による絞り込みは行わず、エルメ側で処理可能かどうかも問いません。
  • L Messageデータ転送機能:tag と friend_info の操作の2種類のみを対象とします。
Phase 1の対象外
  • フォーム回答、ステップ配信などのその他のエルメ内部イベントのWebhook転送。後続フェーズで追加する場合は、実装前に個別のペイロード仕様を合意する必要があります。

1.4 用語・照合キー

用語説明
lmessage_friend_idエルメ内部の友だちID(integer)。APIの照合キーとして最も広く使用します。/friends/detail と /conversations/detail はこのIDのみを受け付けます。
line_friend_idLINE Friend ID(string、U から始まる文字列)。メッセージ送信APIでは id_type で切り替えて使用できます。
LOALINE公式アカウント(LINE Official Account)。APIキーの発行単位であり、レート制限のカウント単位でもあります。
friend_info友だち情報フィールド。組み込み(標準)フィールドは負のID、カスタムフィールドは正のIDを使用します(標準フィールドID一覧)。
scenarioステップ配信。scenario_id で開始/停止/再開を指定します。
対応ステータスチャットの対応状況を表すステータス(handling status)。/handling-statuses で取得し、/do_action の handling_status アクションで付け外しします。/conversations の絞り込みにも使用します。
確認状態カンバセーションの確認済み/未確認(返信待ち)の状態(confirm_status)。対応ステータスとは別の概念です。/conversations で絞り込み、/do_action の confirm_status アクションで変更します。

1.5 API・Webhook一覧

Phase 1で対象とするAPIの一覧です。パラメータの詳細とサンプルは、各章のブロックに記載しています。

MethodPath目的主なInput
GET/v1/friends友だち一覧の取得page、limit、line_names、tag_ids、emails…
GET/v1/friends/detail友だち詳細の取得lmessage_friend_id
GET/v1/tagsタグ一覧の取得page、limit
GET/v1/friend-info-fields友だち情報フィールド一覧の取得page、limit
GET/v1/scenariosステップ配信一覧の取得page、limit
GET/v1/templatesテンプレート一覧の取得page、limit
GET/v1/handling-statuses対応ステータス一覧の取得なし
POST/v1/messages/pushテキスト/メディアメッセージの送信friend_id、messages[]、messages[].type
POST/v1/messages/templateテンプレートメッセージの送信friend_id、templates[]
GET/v1/conversationsカンバセーション一覧の取得page、limit、confirm_status、handling_status_ids、tag_ids…
GET/v1/conversations/detail友だちの直近100件のメッセージの取得lmessage_friend_id
POST/v1/do_action友だち一括アクションlmessage_friend_ids[]、actions[]、actions[].type
POST(設定した送信先URL)LINE公式アカウントデータ転送LINEイベントをそのまま転送
POST(設定した送信先URL)L Messageデータ転送events[](tag / friend_info)

2. 共通仕様

COMMON SPECIFICATIONS

認証、ページング、冪等性、エラーレスポンスの形式は、すべての /v1 エンドポイントで共通です。

2.1 ベースURL

環境ベースURL
Productionhttps://api.lmes.jp

すべてのエンドポイントは /v1 配下に配置します(例:https://api.lmes.jp/v1/friends)。

2.2 認証(APIキー)

すべてのリクエストに X-LME-API-KEY ヘッダーを付与します。APIキーは lme_live_sk_<32hex> 形式で、LOAごとに発行します。

REQUEST HEADER
X-LME-API-KEY: lme_live_sk_0123456789abcdef0123456789abcdef
Content-Type: application/json

サーバー側では、受け取ったAPIキーをもとに api_keys.key_lookup_hash = HMAC-SHA256(key, API_KEY_PEPPER) を照合し、対象のLOAおよび権限 scope(full/read)を特定します。あわせて is_deleted、status、expires_at を確認し、APIキーが有効かつ利用可能な状態であることを検証します。expires_at が null の場合は、有効期限なしとして扱います。

権限スコープ

read 権限のAPIキーで書き込みAPI(POST/PUT/DELETE)を実行した場合は 403 forbidden を返します。書き込みを行う連携では full 権限のキーを使用してください。

APIキーの取り扱い

APIキーは秘密情報として扱い、クライアントサイドに埋め込まないでください。

2.3 リクエスト形式・日時形式

項目仕様
Content-Typeapplication/json
パラメータの渡し方一覧取得API(GET)ではクエリパラメータ、更新系API(POST)ではJSON形式のリクエストボディを使用します。
日時形式YYYY-MM-DD、YYYY-MM-DDTHH:mm:ss+09:00。イベント、予約、決済に関する日時は日本時間(JST)を基準とします。

2.4 ページング

一覧取得APIは page と limit のクエリパラメータを受け付けます。

パラメータTypeデフォルト説明
pageinteger1取得するページ番号。
limitinteger1001ページあたりの取得件数。最大500。

レスポンスの pagination オブジェクトには page、limit、total_items、total_pages、has_next が含まれます。has_next が false になるまで page を進めて取得してください。

2.5 レート制限

リクエスト数はLOA単位でカウントし、1分単位の固定ウィンドウ(fixed window)方式とします。カウントは毎分の開始時にリセットされます。カウント対象は、APIキーによる認証が成功したリクエストのみです。

種別上限単位
読み取り(GET)300リクエスト/分LOA単位・1分固定ウィンドウ
書き込み(POST/PUT/DELETE)60リクエスト/分LOA単位・1分固定ウィンドウ
レスポンスヘッダー
ヘッダー説明
X-RateLimit-Limit現在のウィンドウにおける上限リクエスト数。
X-RateLimit-Remaining現在のウィンドウで残っているリクエスト数。
X-RateLimit-Resetカウントがリセットされる時刻。
Retry-After429 応答時のみ。再試行までに待機する秒数。

上限を超えた場合は HTTP 429 rate_limited と Retry-After ヘッダー(秒)を返します。指定された秒数だけ待機してから、再度呼び出してください。

2.6 冪等性(Idempotency-Key)

/do_action、/messages/push、/messages/template では、Idempotency-Key ヘッダーにより同一リクエストの重複実行を防止できます。値は利用側で任意に設定でき、最大100文字まで指定できます(超過した場合は 400 invalid_request を返します)。

REQUEST HEADER
Idempotency-Key: push-12345-20260730
推奨する値の作り方

「操作種別 + 対象ID + 業務上のイベントID(または日時)」のように、同じ業務イベントに対して同じ値、別のイベントには別の値になる組み立て方を推奨します。ネットワークエラー時のリトライでは、初回と同じ値を送信してください。

2.7 共通レスポンス

すべてのAPIは、以下の構造でレスポンスを返します。pagination は一覧取得APIのみに含まれます。

RESPONSE
{
  "success": true,
  "request_id": "req_20260730_001",
  "data": {},
  "pagination": {"page": 1, "limit": 100, "total_items": 1240, "total_pages": 13, "has_next": true}
}
Output fieldType説明
successbooleanリクエストが正常に処理された場合は true。
request_idstringエラー調査が必要な際にログを追跡するためのID。お問い合わせの際はこの値をお知らせください。
dataobject|arrayAPIごとの応答本体。
paginationobject一覧取得APIのページング情報。

2.8 エラーレスポンス

HTTPCode意味例
400invalid_requestリクエスト形式が不正JSONの形式が不正、必須フィールドが不足している
401unauthorized認証に失敗APIキーが未指定、誤っている、有効期限切れ、または削除済み
403forbidden対象へのアクセス権限がないAPIキーが無効化されている、read 権限のAPIキーで書き込みAPIを実行している、対象のLOAが削除されている
404not_found対象が存在しない友だち、タグ、ステップ配信、テンプレート、友だち情報フィールド/オプション、対応ステータスが見つからない場合、または指定したリソースが別のLOAに属している場合
409conflict更新時の重複または競合同一のイベントIDを再送
422validation_error入力値がバリデーション条件を満たしていないフィールド型に対して許可されていない操作
429rate_limitedAPI呼び出しの上限を超過LOA単位の上限(読み取り300 req/分、書き込み60 req/分)を超過。Retry-After ヘッダーで指定された秒数だけ待機してから再度呼び出してください

3. 友だち

FRIENDS

エルメに登録されている友だちの一覧および詳細を取得します。CRMの初回同期や、友だち単位の情報参照に使用します。

MethodPath目的
GET/v1/friends友だち一覧の取得
GET/v1/friends/detail友だち詳細の取得

3.1 友だち一覧の取得

GEThttps://api.lmes.jp/v1/friends

CRMで初回同期を行う際、またはエルメ内の友だち一覧をページングや基本的なフィルタ条件で更新する際に使用します。

Input parameter
Parameter位置必須Type説明
pagequery任意integer取得するページ番号。デフォルトは1です。
limitquery任意integer取得する件数。デフォルトは100、最大500です。
line_namesquery任意string | CSVLINE名またはシステム表示名による部分一致検索(大文字・小文字を区別しません)。複数指定した場合はOR条件となります。
tag_idsquery任意integer | CSV絞り込みに使用するタグID(/tags から取得)。複数指定した場合はOR条件となります(いずれか1つ以上のタグがついている友だちが対象)。
emailsquery任意string | CSV絞り込みに使用するメールアドレス。完全一致で判定します。複数指定した場合はOR条件となります。
added_date_fromquery任意date友だち追加日の開始日。フォーマットは YYYY-MM-DD。
added_date_toquery任意date友だち追加日の終了日。フォーマットは YYYY-MM-DD。

異なるフィルタ同士はAND条件で組み合わされます。同一フィルタ内に複数の値を指定した場合(カンマ区切り、またはパラメータの繰り返し指定)は、OR条件で組み合わされます。

Output parameter
Output fieldType説明
successbooleanリクエストが正常に処理された場合は true。
request_idstringエラー調査が必要な際にログを追跡するためのID。
data.total_itemsintegerフィルタ条件を満たす友だちの総数。
data.total_pagesinteger現在の limit に基づく総ページ数。
data.friend_detail[]array<object>現在のページに含まれる友だち詳細の一覧。
└ added_timedate友だちがエルメに追加された日付。
└ friendtypestring友だちの種別:old または new。
└ line_friend_idstringLINE Friend ID。
└ lmessage_friend_idintegerエルメ内部の友だちID。
└ line_namestringLINE名。
└ system_namestring|nullシステム表示名(存在する場合)。
└ emailstring|null友だち情報に保存されているメールアドレス(存在する場合)。
└ phonestring|null友だち情報に保存されている携帯電話(存在する場合)。
SAMPLE INPUT
GET /v1/friends?page=1&limit=100&line_names=Tanaka,Sato&tag_ids=101,102&added_date_from=2026-07-01&added_date_to=2026-07-30
CURL
curl -G "https://api.lmes.jp/v1/friends" \
  -H "X-LME-API-KEY: lme_live_sk_0123456789abcdef0123456789abcdef" \
  --data-urlencode "page=1" \
  --data-urlencode "limit=100" \
  --data-urlencode "line_names=Tanaka,Sato" \
  --data-urlencode "tag_ids=101,102" \
  --data-urlencode "added_date_from=2026-07-01" \
  --data-urlencode "added_date_to=2026-07-30"
SAMPLE OUTPUT
{
  "success": true,
  "request_id": "req_20260730_0001",
  "data": {
    "total_items": 250,
    "total_pages": 3,
    "friend_detail": [
      {
        "added_time": "2026-07-30",
        "friendtype": "new",
        "line_friend_id": "Uxxxxxxxx",
        "lmessage_friend_id": 12345,
        "line_name": "Tanaka",
        "system_name": "Tanaka CRM",
        "email": "customer@example.com",
        "phone": "09000000000"
      }
    ]
  }
}

3.2 友だち詳細の取得

GEThttps://api.lmes.jp/v1/friends/detail

1人の友だちの詳細情報(タグ、友だち情報、配信中のステップ配信)を取得します。

受け付けるキーは lmessage_friend_id のみ

本APIは lmessage_friend_id のみを受け付けます。LINE Friend ID/メールアドレス/携帯電話は入力として受け付けません。LINE Friend IDしか分からない場合は、先に /friends で対象の lmessage_friend_id を特定してください。

Input parameter
Parameter位置必須Type説明
lmessage_friend_idquery必須integerL Message Friend ID。1リクエストにつき1人の友だちのみ取得します。
Output parameter
Output fieldType説明
successbooleanリクエストが正常に処理された場合は true。
request_idstringエラー調査が必要な際にログを追跡するためのID。
data.friendobject友だちの詳細。
└ lmessage_friend_idintegerエルメ内部の友だちID。
└ line_friend_idstringLINE Friend ID。
└ line_namestring|nullLINE名。
└ system_namestring|nullシステム表示名(存在する場合)。
└ emailstring|nullCRM側で顧客を紐付ける際に使用するメールアドレス。
└ phonestring|nullCRM側で顧客を紐付ける際に使用する携帯電話。
└ tags[]array<object>友だちに付与されているタグ。id(integer)と name(string)を含みます。
└ friend_info[]array<object>組み込みの基本フィールドとカスタムフィールドを含む友だち情報。
 └ idinteger友だち情報フィールドID。
 └ typestringTEXT、POINT、DATE、SELECT のいずれか。
 └ namestringフィールド名。
 └ valuestring|number|null現在の値。POINT は number を返します(数値として解析できない場合は null)。DATE は YYYY-MM-DD 形式。それ以外は string です。
└ scenarios[]array<object>友だちが配信中、または停止済みのステップ配信。
 └ idintegerステップ配信ID。
 └ namestringステップ配信名。
 └ statusstringfollowing(配信中)、completed(完了)または stopped(停止)。
SAMPLE INPUT
GET /v1/friends/detail?lmessage_friend_id=12345
SAMPLE OUTPUT
{
  "success": true,
  "request_id": "req_20260730_0003",
  "data": {
    "friend": {
      "lmessage_friend_id": 12345,
      "line_friend_id": "Uxxxxxxxx",
      "line_name": "Tanaka",
      "system_name": "Tanaka CRM",   // ← 追加
      "email": "customer@example.com",
      "phone": "09000000000",
      "tags": [
        { "id": 101, "name": "cart_abandonment" }
      ],
      "friend_info": [
        { "id": -3, "type": "TEXT", "name": "email", "value": "customer@example.com" },
        { "id": 5001, "type": "POINT", "name": "point", "value": 20 }
      ],
      "scenarios": [
        { "id": 88, "name": "cart_abandonment_reminder", "status": "following" }
      ]
    }
  }
}

4. マスタ取得

MASTER DATA

タグ、友だち情報フィールド、ステップ配信、テンプレート、対応ステータスの各IDを取得します。これらのIDは /do_action や /messages/template の入力値として使用します。

MethodPath目的
GET/v1/tagsタグ一覧の取得
GET/v1/friend-info-fields友だち情報フィールド一覧の取得
GET/v1/scenariosステップ配信一覧の取得
GET/v1/templatesテンプレート一覧の取得
GET/v1/handling-statuses対応ステータス一覧の取得

4.1 タグ一覧の取得

GEThttps://api.lmes.jp/v1/tags

/do_action で友だちにタグをつける/外す前に、タグIDを特定するため既存のタグ一覧を取得します。

Input parameter
Parameter位置必須Type説明
pagequery任意integer取得するページ番号。デフォルトは1です。
limitquery任意integer取得する件数。デフォルトは100、最大500です。
Output parameter
Output fieldType説明
data.tags[]array<object>現在のページのタグ一覧。
└ idintegerタグID。
└ namestringタグ名。
└ friend_countintegerこのタグがついている友だちの数。
paginationobjectページング情報:page、limit、total_items、total_pages、has_next。
SAMPLE INPUT
GET /v1/tags?page=1&limit=100
SAMPLE OUTPUT
{
  "success": true,
  "request_id": "req_20260730_0005",
  "data": {
    "tags": [
      { "id": 101, "name": "cart_abandonment", "friend_count": 25 }
    ]
  },
  "pagination": { "page": 1, "limit": 100, "total_items": 36, "total_pages": 1, "has_next": false }
}

4.2 友だち情報フィールド一覧の取得

GEThttps://api.lmes.jp/v1/friend-info-fields

/do_action で更新する友だち情報のフィールドIDを特定するために使用します。組み込み(標準)フィールドは負のID、カスタムフィールドは正のIDを使用します。

Input parameter
Parameter位置必須Type説明
pagequery任意integer取得するページ番号。デフォルトは1です。
limitquery任意integer取得する件数。デフォルトは100、最大500です。
Output parameter
Output fieldType説明
data.fields[]array<object>フィールドの一覧。
└ field_idintegerフィールドID。組み込みフィールドは負のID、カスタムフィールドは正のIDを使用します。
└ titlestring表示用のフィールド名、または内部で使用する名称。
└ field_typestringTEXT、POINT、DATE、SELECT のいずれか。
└ options[]array<object>|nullfield_type が SELECT の場合のオプション一覧(option_id、label)。
paginationobjectページング情報:page、limit、total_items、total_pages、has_next。
SAMPLE INPUT
GET /v1/friend-info-fields?page=1&limit=100
SAMPLE OUTPUT
{
  "success": true,
  "request_id": "req_20260730_0009",
  "data": {
    "fields": [
      { "field_id": -3, "title": "email", "field_type": "TEXT", "options": null },
      { "field_id": 5001, "title": "purchase_count", "field_type": "POINT", "options": null },
      {
        "field_id": 5002,
        "title": "member_rank",
        "field_type": "SELECT",
        "options": [
          { "option_id": 1, "label": "gold" },
          { "option_id": 2, "label": "silver" }
        ]
      }
    ]
  },
  "pagination": { "page": 1, "limit": 100, "total_items": 48, "total_pages": 1, "has_next": false }
}

4.3 ステップ配信一覧の取得

GEThttps://api.lmes.jp/v1/scenarios

ステップ配信一覧を取得し、/do_action で友だちのステップ配信を開始/停止する際に使用する scenario_id を特定します。

Input parameter
Parameter位置必須Type説明
pagequery任意integer取得するページ番号。デフォルトは1です。
limitquery任意integer取得する件数。デフォルトは100、最大500です。
Output parameter
Output fieldType説明
successbooleanリクエストが正常に処理された場合は true。
request_idstringエラー調査が必要な際にログを追跡するためのID。
data.scenarios[]array<object>ステップ配信の一覧。
└ scenario_idinteger開始/停止の操作に使用するステップ配信ID。
└ namestringステップ配信名。
└ followers_countinteger配信中の友だちの数。
└ completed_countinteger完了数。
└ dropped_countinteger離脱数。
paginationobjectページング情報:page、limit、total_items、total_pages、has_next。
SAMPLE INPUT
GET /v1/scenarios?page=1&limit=100
SAMPLE OUTPUT
{
  "success": true,
  "request_id": "req_20260730_0013",
  "data": {
    "scenarios": [
      {
        "scenario_id": 88,
        "name": "cart_abandonment_reminder",
        "followers_count": 120,
        "completed_count": 80,
        "dropped_count": 5
      }
    ]
  },
  "pagination": { "page": 1, "limit": 100, "total_items": 1, "total_pages": 1, "has_next": false }
}

4.4 テンプレート一覧の取得

GEThttps://api.lmes.jp/v1/templates

テンプレートを送信する前に、対象のテンプレートIDを特定するために使用します。取得した template_id は /messages/template で指定します。

Input parameter
Parameter位置必須Type説明
pagequery任意integer取得するページ番号。デフォルトは1です。
limitquery任意integer取得する件数。デフォルトは100、最大500です。
Output parameter
Output fieldType説明
successbooleanリクエストが正常に処理された場合は true。
request_idstringエラー調査が必要な際にログを追跡するためのID。
data.templates[]array<object>テンプレートの一覧。
└ template_idinteger送信に使用するテンプレートID。
└ namestringテンプレート名。
paginationobjectページング情報:page、limit、total_items、total_pages、has_next。
SAMPLE INPUT
GET /v1/templates?page=1&limit=100
SAMPLE OUTPUT
{
  "success": true,
  "request_id": "req_20260730_0021",
  "data": {
    "templates": [
      { "template_id": 7001, "name": "shipping_complete_notice" },
      { "template_id": 7002, "name": "review_request" }
    ]
  },
  "pagination": { "page": 1, "limit": 100, "total_items": 24, "total_pages": 1, "has_next": false }
}

4.5 対応ステータス一覧の取得

GEThttps://api.lmes.jp/v1/handling-statuses

チャットの対応ステータスをCRMと同期するため、エルメ側の対応ステータスIDを取得します。このIDは、/do_action の handling_status アクション、および /conversations の handling_status_ids による絞り込みで使用します。

Input parameter
Parameter説明
なし本APIはパラメータを受け付けません。
Output parameter
Output fieldType説明
successbooleanリクエストが正常に処理された場合は true。
request_idstringエラー調査が必要な際にログを追跡するためのID。
data[]array<object>対応ステータスの一覧。
└ idinteger同期に使用する対応ステータスID。
└ namestring対応ステータス名。
SAMPLE INPUT
GET /v1/handling-statuses
SAMPLE OUTPUT
{
  "success": true,
  "request_id": "req_20260730_0023",
  "data": [
    { "id": 12, "name": "deal_in_progress" },
    { "id": 13, "name": "follow_up" }
  ]
}

5. メッセージ

MESSAGING

指定した友だちへのメッセージ送信と、カンバセーションの取得を行います。送信系APIでは Idempotency-Key の付与を推奨します。

MethodPath目的
POST/v1/messages/pushメッセージ送信(テキスト/メディア)
POST/v1/messages/templateテンプレートメッセージの送信
GET/v1/conversationsカンバセーション一覧の取得
GET/v1/conversations/detail直近メッセージの取得

5.1 メッセージ送信(テキスト/メディア)

POSThttps://api.lmes.jp/v1/messages/push

指定したLINEの友だちにメッセージを送信します。本APIは /messages/text と /messages/media を統合したAPIです。messages[] 配列にはテキストとメディアを混在させることができ、指定した順に送信されます。対応するメディア形式は image、video、audio のみです。

制限
項目制限
1リクエスト内のメッセージオブジェクト最大5件
テキスト1オブジェクトあたり最大5,000文字
メディアのURL最大2,000文字、HTTPS(TLS 1.2以上)
元画像JPEG / PNG、最大10 MB
プレビュー画像JPEG / PNG、最大1 MB
動画MP4、最大200 MB
音声M4A、最大200 MB
Input parameter
Parameter位置必須Type説明
friend_idbody必須integer|string送信先となる友だちのID。
id_typebody任意stringlmessage_friend_id または line_friend_id。デフォルトは lmessage_friend_id です。
messages[]body必須array<object>送信するメッセージの配列。テキストとメディアを混在させることができ、指定した順に送信されます。最大5オブジェクトです。
└ typebody必須stringtext / image / video / audio
└ textbody条件付きstringtype=text の場合のテキスト本文。最大5,000文字。
└ urlbody条件付きstringtype=image/video/audio の場合のメディアURL。外部からアクセス可能なHTTPS URL(TLS 1.2以上、最大2,000文字)。
└ preview_urlbody任意stringimage / video 用のプレビュー画像URL(JPEG/PNG、最大1 MB)。未指定の場合、エルメは元のURLをプレビューとして使用します。
└ durationbody条件付きinteger音声ファイルの再生時間(ミリ秒)。type=audio の場合は必須です。
mark_confirmedbody任意boolean送信後にチャットを確認済みとして扱うかどうか。
Idempotency-Keyheader推奨string外部システムが同一リクエストをリトライした際の重複処理を防止するためのキー。
Output parameter
Output fieldType説明
successbooleanリクエストが正常に処理された場合は true。
request_idstringエラー調査が必要な際にログを追跡するためのID。
SAMPLE INPUT
POST /v1/messages/push
Idempotency-Key: push-12345-20260730

{
  "friend_id": 12345,
  "id_type": "lmessage_friend_id",
  "messages": [
    {"type": "text", "text": "お問い合わせいただきありがとうございます。ご案内資料をお送りいたします。"},
    {"type": "image", "url": "https://example.com/images/guide.jpg", "preview_url": "https://example.com/images/guide_preview.jpg"},
    {"type": "video", "url": "https://example.com/videos/intro.mp4", "preview_url": "https://example.com/videos/intro_preview.jpg"},
    {"type": "audio", "url": "https://example.com/audio/guide.m4a", "duration": 60000}   // ← .mp3 から修正
  ],
  "mark_confirmed": true
}
CURL
curl -X POST "https://api.lmes.jp/v1/messages/push" \
  -H "X-LME-API-KEY: lme_live_sk_0123456789abcdef0123456789abcdef" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: push-12345-20260730" \
  -d '{
    "friend_id": 12345,
    "id_type": "lmessage_friend_id",
    "messages": [
      {"type": "text", "text": "ご案内資料をお送りいたします。"}
    ],
    "mark_confirmed": true
  }'
SAMPLE OUTPUT
{
  "success": true,
  "request_id": "req_20260730_0018"
}

5.2 テンプレートメッセージの送信

POSThttps://api.lmes.jp/v1/messages/template

指定した友だちに既存のテンプレートを送信します。templates[] 配列を使用し、1リクエストで最大5件のテンプレートを送信できます。テンプレートIDは /templates から取得します。

Input parameter
Parameter位置必須Type説明
friend_idbody必須integer|string送信先となる友だちのID。
id_typebody任意stringlmessage_friend_id または line_friend_id。デフォルトは lmessage_friend_id です。
templates[]body必須array<object>送信するテンプレートの配列。指定した順に送信され、最大5件まで指定できます。
└ template_idbody必須integer送信するテンプレートID。/templates APIから取得します。
mark_confirmedbody任意boolean送信後にチャットを確認済みとして扱うかどうか。
Idempotency-Keyheader推奨string外部システムが同一リクエストをリトライした際の重複処理を防止するためのキー。
Output parameter
Output fieldType説明
successbooleanリクエストが正常に処理された場合は true。
request_idstringエラー調査が必要な際にログを追跡するためのID。
SAMPLE INPUT
POST /v1/messages/template
Idempotency-Key: template-12345-7001-20260730

{
  "friend_id": 12345,
  "id_type": "lmessage_friend_id",
  "templates": [
    {"template_id": 7001},
    {"template_id": 7002}
  ]
}
SAMPLE OUTPUT
{
  "success": true,
  "request_id": "req_20260730_0019"
}

5.3 カンバセーション一覧の取得

GEThttps://api.lmes.jp/v1/conversations

LOAの1対1チャットにおけるカンバセーション一覧を取得します。並び順は、ブックマークしたカンバセーションを先頭に表示し、以降は最新のメッセージ順となります。確認/未確認、対応ステータス、友だちの名前、タグ、表示状態による絞り込みに対応しており、CRM側で返信待ちのカンバセーションや、特定の条件に該当するカンバセーションを検索する際に使用します。

Input parameter
Parameter位置必須Type説明
pagequery任意integer取得するページ番号。デフォルトは1です。
limitquery任意integer取得する件数。デフォルトは100、最大500です。
confirm_statusquery任意integer確認状態による絞り込み:0 = 確認済み、1 = 未確認(返信待ち)。
handling_status_idsquery任意integer | CSV対応ステータスによる絞り込み。1件または複数のステータスIDをカンマ区切りで指定でき(例:12,13)、OR条件で判定します。ステータスIDは /handling-statuses APIから取得します。
handling_status_namesquery任意string | CSV対応ステータス名による絞り込み。完全一致で判定します(大文字・小文字を区別しません)。handling_status_ids とはOR条件で統合されます。
line_namesquery任意string | CSVLINE名またはシステム表示名による部分一致検索(大文字・小文字を区別しません)。複数指定した場合はOR条件となります。
tag_idsquery任意integer | CSV友だちのタグIDによる絞り込み。/tags APIから取得します。tag_names と統合して判定します。
tag_namesquery任意string | CSVタグ名による絞り込み。完全一致で判定します(大文字・小文字を区別しません)。
tag_modequery任意string複数タグの組み合わせ方法:or(デフォルト — いずれか1つ以上のタグがついている友だち)または and(すべてのタグがついている友だち)。
display_statusquery任意string1対1チャットにおける表示状態:display(デフォルト — 表示中のカンバセーションのみ)、hidden(非表示のカンバセーションのみ)、all(両方)。

異なるフィルタ同士はAND条件で組み合わされます。同一フィルタ内に複数の値を指定した場合はOR条件となります(タグのみ tag_mode に従います)。名称によるフィルタはカンマで値を区切るため、名称自体にカンマを含む場合はIDによるフィルタをご利用ください。

Output parameter
Output fieldType説明
successbooleanリクエストが正常に処理された場合は true。
request_idstringエラー調査が必要な際にログを追跡するためのID。
data.conversations[]array<object>ページごとのカンバセーション一覧。ブックマークしたカンバセーションを先頭に、以降は最新のメッセージ順に並びます。
└ lmessage_friend_idintegerL Message Friend ID。/conversations/detail、/friends/detail、/do_action で使用します。
└ line_friend_idstring友だちの LINE user ID。
└ line_namestringLINE名。
└ system_namestring|nullシステム表示名(存在する場合)。
└ last_messagestring最新メッセージの内容(要約表示)。
└ last_message_datedatetime最新メッセージの日時。
└ confirm_statusstring確認状態:read(確認済み)または unread(未確認)。
└ handling_statusobject|null現在の対応ステータス {id, name}。未設定の場合は null。
paginationobject{page, limit, total_items, total_pages, has_next}。
SAMPLE INPUT
GET /v1/conversations?page=1&limit=100&confirm_status=1&handling_status_ids=12,13&tag_names=vip,cart_abandonment&tag_mode=or
CURL
curl -G "https://api.lmes.jp/v1/conversations" \
  -H "X-LME-API-KEY: lme_live_sk_0123456789abcdef0123456789abcdef" \
  --data-urlencode "page=1" \
  --data-urlencode "limit=100" \
  --data-urlencode "confirm_status=1" \
  --data-urlencode "handling_status_ids=12,13" \
  --data-urlencode "tag_names=vip,cart_abandonment" \
  --data-urlencode "tag_mode=or"
SAMPLE OUTPUT
{
  "success": true,
  "request_id": "req_20260916_0025",
  "data": {
    "conversations": [
      {
        "lmessage_friend_id": 12345,
        "line_friend_id": "U1234abcd...",
        "line_name": "Tanaka",
        "system_name": "Tanaka CRM",
        "last_message": "こんにちは",
        "last_message_date": "2026-09-16T10:00:00+09:00",
        "confirm_status": "unread",
        "handling_status": { "id": 12, "name": "deal_in_progress" }
      }
    ]
  },
  "pagination": { "page": 1, "limit": 100, "total_items": 36, "total_pages": 1, "has_next": false }
}

5.4 直近メッセージの取得

GEThttps://api.lmes.jp/v1/conversations/detail

CRMやオートメーションツールがカンバセーションの文脈を確認できるよう、1人の友だちについて直近100件のメッセージを取得します。

制限
項目制限
メッセージ件数直近100件まで
チャット履歴の対象期間LOAの契約種別によって異なります。無料LOAでは直近180日、有料LOAでは直近365日(12か月)まで取得できます。この期間より古いメッセージは返却されません。
Input parameter
Parameter位置必須Type説明
lmessage_friend_idquery必須integerカンバセーションを取得する L Message Friend ID。
Output parameter
Output fieldType説明
successbooleanリクエストが正常に処理された場合は true。
request_idstringエラー調査が必要な際にログを追跡するためのID。
data.lmessage_friend_idintegerカンバセーションを取得した L Message Friend ID。
data.messages[]array<object>取得可能なチャット履歴の期間内における、直近100件までのメッセージの配列(「制限」参照)。
└ delivery_datedatetimeメッセージの送受信日時。
└ senderstringfriend または LINE_OA。
└ message_typestringメッセージの種別:text、image、video、file、sticker、template など。
└ datastring|array|object|nullmessage_type に応じて正規化したメッセージ内容を返します。text およびメディア(image/video/audio/file)は string(テキストまたはURL)、template/scenario/event/broadcast/action は array [{type,content}]、pdf/予約/ステップ配信イベントは object で返します。内部フィールド(image_server、thumbnail_path、from など)は除外して返します。
data.handling_statusobject|nullカンバセーションの現在の対応ステータス(id、name)。
data.display_statusstringdisplay または hidden。
data.block_statusstringblocked、block または normal。
data.favoritestringブックマークの状態:yes または no。
SAMPLE INPUT
GET /v1/conversations/detail?lmessage_friend_id=12345
SAMPLE OUTPUT
{
  "success": true,
  "request_id": "req_20260730_0022",
  "data": {
    "lmessage_friend_id": 12345,
    "messages": [
      {
        "delivery_date": "2026-07-30T13:00:00+09:00",
        "sender": "friend",
        "message_type": "text",
        "data": "相談したいのですが"
      },
      {
        "delivery_date": "2026-07-30T13:00:05+09:00",
        "sender": "LINE_OA",
        "message_type": "template",
        "data": [
          { "type": "text", "content": "お問い合わせいただきありがとうございます。" },
          { "type": "image", "content": "https://.../guide.jpg" }
        ]
      },
      {
        "delivery_date": "2026-07-30T13:00:08+09:00",
        "sender": "LINE_OA",
        "message_type": "pdf",
        "data": { "file_name": "doc.pdf", "file_size": 67209, "url": "https://.../doc.pdf", "file_name_original": "document.pdf" }
      }
    ],
    "handling_status": { "id": 12, "name": "deal_in_progress" },   // ← compliant_statuses から改称
    "display_status": "display",
    "block_status": "normal",
    "favorite": "yes"
  }
}

6. アクション

ACTIONS

友だちに対する更新操作は、すべて /do_action に統合されています。複数の友だちに対して、複数のアクションを1リクエストで実行できます。

MethodPath目的
POST/v1/do_action友だち一括アクション

6.1 友だち一括アクション

POSThttps://api.lmes.jp/v1/do_action

1リクエストで、複数の友だちに対して1つ以上のアクションを実行します。本APIは、次の個別APIを統合したものです:/update-tag、/friend-info-field-update、/operate-scenarios、/change-handling-statuses、/change-block-statuses、/change-favorite-statuses。

動作の仕組み
  • リクエストには、友だちIDの配列(lmessage_friend_ids[])とアクションの配列(actions[])を指定します。
  • 各アクションは、lmessage_friend_ids[] に含まれるすべての友だちに適用され、指定した順に順次実行されます。
  • 各アクションは type(アクションの種別)+ action(操作)+ 種別ごとの固有パラメータで構成されます。構造は、エルメで現在使用しているアクション体系に準拠しています。
Input parameter
Parameter位置必須Type適用対象説明
lmessage_friend_ids[]body必須array<integer>共通操作対象となる L Message Friend ID の一覧。1リクエストあたり100人以内を推奨します。
actions[]body必須array<object>共通実行するアクションの一覧。指定した順に順次実行されます。1リクエストあたり10件以内を推奨します。
└ typebody必須string共通アクションの種別:tag friend_info scenario handling_status block favorite confirm_status
└ actionbody必須string共通実行する操作。指定可能な値は type ごとに異なります(アクション分類表を参照)。
└ tag_ids[]body条件付きarray<integer>tagadd/remove の対象となるタグIDの一覧。/tags APIから取得します。
└ field_idbody条件付きintegerfriend_info友だち情報フィールドID。組み込みフィールドは負のID、カスタムフィールドは正のIDを使用します。/friend-info-fields APIから取得します。
└ valuebody条件付きstringfriend_infoset point_replace point_plus point_minus の際に更新する値。TEXTはテキスト、DATEは YYYY-MM-DD、POINTは数値を使用します。clear today point_clear の場合は不要です。
└ option_idbody条件付きintegerfriend_infoSELECTフィールドを set する際のオプションID。/friend-info-fields APIの options[] から取得します。
└ scenario_idbody条件付きintegerscenariostart/resume で操作するステップ配信ID。stop の場合は不要です。/scenarios APIから取得します。
└ start_frombody条件付きintegerscenarioステップ配信内の開始日。resume の場合にのみ使用します。例:3 を指定すると3日目から再開します。start は常にステップ配信の先頭から開始します。
└ handling_status_idbody条件付きintegerhandling_statusattach の際に紐付ける対応ステータスID。detach の場合は不要です。/handling-statuses APIから取得します。
Idempotency-Keyheader推奨string共通外部システムが同一リクエストをリトライした際の重複処理を防止するためのキー。
Output parameter
Output fieldType説明
successbooleanリクエストが正常に処理された場合は true。
request_idstringエラー調査が必要な際にログを追跡するためのID。
SAMPLE INPUT
POST /v1/do_action
Idempotency-Key: do-action-20260730-001

{
  "lmessage_friend_ids": [12345, 12346],
  "actions": [
    { "type": "tag", "action": "add", "tag_ids": [101] },
    { "type": "friend_info", "action": "point_plus", "field_id": 5001, "value": "10" },
    { "type": "scenario", "action": "start", "scenario_id": 88 },
    { "type": "handling_status", "action": "attach", "handling_status_id": 12 },
    { "type": "block", "action": "hide" },
    { "type": "favorite", "action": "add" },
    { "type": "confirm_status", "action": "confirm" }   // ← 追加
  ]
}
CURL
curl -X POST "https://api.lmes.jp/v1/do_action" \
  -H "X-LME-API-KEY: lme_live_sk_0123456789abcdef0123456789abcdef" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: do-action-20260730-001" \
  -d '{
    "lmessage_friend_ids": [12345, 12346],
    "actions": [
      { "type": "tag", "action": "add", "tag_ids": [101] }
    ]
  }'
SAMPLE OUTPUT
{
  "success": true,
  "request_id": "req_20260730_0024"
}

6.2 アクション分類表

type目的有効な action固有パラメータ
tag友だちにタグをつける/外すadd removetag_ids[]
friend_info友だち情報フィールドの更新set clear today point_replace point_plus point_minus point_clearfield_id value option_id
scenarioステップ配信の開始/停止/再開start stop resumescenario_id start_from
handling_statusチャットの対応ステータスの変更attach detachhandling_status_id
block1対1チャットにおけるブロック・非表示状態の変更block unblock show hideなし
favoriteブックマークをつける/外すadd removeなし
confirm_statusカンバセーションの確認/未確認状態の変更(対応ステータス handling_status とは異なります)confirm unconfirmなし

7. Webhook転送

WEBHOOK FORWARDING

エルメから外部システムへデータを送信する機能です。管理画面の「Webhook転送」画面で、送信先URLとオン/オフを設定します。

7.1 2つの転送機能

エルメでは独立した2つの転送機能をご利用いただけます。各機能は送信先URLとオン/オフを個別に設定でき、一方の設定を変更しても、もう一方には影響しません。受信側では、どちらか一方のみを利用することも、異なるURLを設定して両方を利用することもできます。

転送機能送信内容送信タイミング認証
LINE公式アカウントデータ転送LINE Platformからエルメへ届いたイベントをそのまま送信します(message、follow、unfollow、postback など)。エルメ側が当該イベントを受信した直後(通常は数秒以内)署名なし
L Messageデータ転送エルメ内で発生した tag または friend_info の操作を、events[] の形式で送信します。エルメ内で操作が完了した直後X-Lme-Signature ヘッダーあり
ご利用開始時の注意事項

転送機能を有効化した場合、エルメ側は有効化した時点以降に発生したイベントのみを転送します。それ以前の過去データが遡って送信されることはありません。受信側で過去データが必要な場合は、転送機能ではなく別途APIからご取得ください。

設定変更の反映には最大約1分かかります

イベントごとに設定を再取得する処理を避けるため、エルメ側は転送設定を1分ごとに読み込む方式としています。そのため「Webhook転送」画面で「保存する」を押しても、変更内容は即時には反映されません。最大約1分の間、転送処理は変更前の設定で動作します。特に以下の3つのケースにご注意ください。

  • 転送機能を有効化した直後:この待機時間中に発生したイベントは転送されない可能性があり、その場合エラー一覧にも表示されません(システム上はまだ無効の状態として扱われるためです)。先に有効化を行い、約1分お待ちいただいてから動作確認を開始してください。
  • 転送機能を無効化した直後、または送信先URLを変更した直後:この待機時間中は、変更前の送信先にもリクエストが届く可能性があります。変更前のエンドポイントの停止は、1分以上経過してから実施してください。
  • シークレットを再生成した直後:最も慎重な連携が必要なケースです。詳細はシークレットのライフサイクルをご参照ください。

7.2 共通仕様

特に記載がない限り、2つの転送機能の両方に適用されます。

項目仕様備考
メソッドPOST「Webhook転送」画面でご設定いただいた送信先URLへ送信します。
Content-Typeapplication/json; charset=utf-8文字コードはUTF-8です。
成功判定HTTP 2xxエルメ側はレスポンスの内容を参照しません。
タイムアウト10秒接続および応答待ちの合計時間です。これを超えた場合、エルメ側は失敗として扱います。
失敗時の再送最大3回、間隔は1分再送の対象となるのは、タイムアウト(408、504を含む)またはHTTP 5xx の場合のみです。1回目は即時送信し、以降の2回は1分間隔で再送するため、1イベントの処理は最長で約2分となります。これ以外のエラーは再送せず、その時点でエラーを記録します。再送対象のエラーについては、3回すべて失敗した場合のみ、利用者が確認できるエラー記録を1件登録します(1件の障害につきエラー1行)。
イベントの順序保証しませんエルメ側は送信速度を優先し、友だち単位でのキューイングは行いません。同一の友だちに対する連続した2つの操作が、発生順と異なる順序で到着する可能性があるため、受信側での考慮が必要です。
重複送信発生する可能性がありますリクエストが到達していても応答が失われた場合、エルメ側は失敗と判定して再送します。再送時は初回と同一の X-Lme-Delivery-Id を付与しますので、受信側ではこのヘッダーを用いて重複を判別し、破棄してください。

7.3 LINE公式アカウントデータ転送機能

POSTLINE公式アカウントデータ転送機能の送信先URL

LINE Platformからエルメへ届いたイベントを、加工や変換を行わずにそのまま転送します。

仕様
項目内容
送信内容LINE PlatformからL Messageに送信されたリクエストボディを、そのまま送信します。
メディアを含むイベント画像・動画・音声のイベントも転送対象です。ただし、ペイロードに含まれるのはコンテンツのIDのみで、ファイル本体は含まれません。ファイルを取得する場合は、受信側で自身のトークンを用いて LINE Content API を呼び出してください。
有効期限切れのアカウント削除済みのLINE公式アカウント、または有効期限切れから7日を超えたアカウントは、転送の対象外となります。設定はそのまま保持されるため、アカウントを復旧すれば再度ご利用いただけます。
認証署名は付与されません。X-Lme-Delivery-Id と X-Lme-Timestamp は付与されます(リクエストヘッダー・認証)。
SAMPLE INPUT
{
  "destination": "Uxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "events": [
    {
      "type": "message",
      "replyToken": "xxxxxxxxxxxxxxxx",
      "source": { "type": "user", "userId": "Uxxxxxxxx" },
      "timestamp": 1789000000000,
      "message": { "id": "987654321", "type": "text", "text": "こんにちは" }
    }
  ]
}
SAMPLE OUTPUT(受信側が返すレスポンス)
HTTP/1.1 200 OK

HTTP 2xxを返却いただければ十分です。レスポンスボディの内容は参照しません。

7.4 L Messageデータ転送機能

POSTL Messageデータ転送機能の送信先URL

友だちに対して tag の付与・解除、または friend_info の登録・更新・削除が行われた際に、エルメのイベントとして転送します。エルメ側は events[] 配列を含むリクエストを1件送信します。各要素は発生した1件の操作を表し、操作内容と、友だちを識別する2つのフィールドで構成されます。

Input parameter
FieldType必須適用対象説明
events[]array<object>必須共通エルメ側が外部システムへ通知するイベントの配列。
└ lmessage_friend_idinteger必須共通操作対象となった友だちの L Message Friend ID。
└ line_friend_idstring必須共通操作対象となった友だちの LINE Friend ID。まれなケースとして、イベント送信前に当該友だちがエルメから削除された場合、本項目が空文字列となることがあります。その場合、受信側では lmessage_friend_id にて突合してください。
└ typestring必須共通操作の種別。Phase 1では tag または friend_info です。
└ actionstring必須共通tag:add remove / friend_info:set clear
└ tag_idinteger条件付きtag操作対象となったタグのID。
└ field_idinteger条件付きfriend_info操作対象となった友だち情報の項目ID。標準項目は負のID(標準フィールドID一覧)、カスタム項目は正のIDを使用します。
└ valuestring条件付きfriend_info操作後の項目の値。action が clear の場合は本項目自体が含まれません。
複数の操作を1リクエストにまとめる場合
項目仕様
最大要素数1リクエストあたり events[] は1,000要素まで。超過する場合は複数のリクエストに分割します。
1リクエストの範囲1つのリクエストは必ず単一のLINE公式アカウントのデータのみで構成されます。複数アカウントのデータが混在することはありません。
実際の要素数操作の発生頻度により変動し、1要素のみのリクエストとなる場合もあります。受信側ではいずれのケースも処理できる必要があります。
SAMPLE INPUT
{
  "events": [
    {
      "lmessage_friend_id": 12345,
      "line_friend_id": "Uxxxxxxxx",
      "type": "tag",
      "action": "add",
      "tag_id": 101
    },
    {
      "lmessage_friend_id": 12345,
      "line_friend_id": "Uxxxxxxxx",
      "type": "friend_info",
      "action": "set",
      "field_id": -1,
      "value": "山田太郎"
    },
    {
      "lmessage_friend_id": 12345,
      "line_friend_id": "Uxxxxxxxx",
      "type": "friend_info",
      "action": "clear",
      "field_id": 5001
    }
  ]
}
SAMPLE OUTPUT(受信側が返すレスポンス)
HTTP/1.1 200 OK

7.5 リクエストヘッダー・認証

認証ヘッダー(X-Lme-Signature)が付与されるのは L Messageデータ転送機能のみです。LINE公式アカウントデータ転送機能には付与されません。

ヘッダー対象内容
X-Lme-SignatureL Messageデータ転送機能のみ当該LINE公式アカウントのシークレットの値(whsec_… 形式)。文字列の比較のみで検証できます。
X-Lme-Delivery-Id両機能1リクエストを識別するIDで、UUID形式です(例:3f2a8c10-9d4b-4e21-8a77-1c5e9b0d6f34)。同一内容の送信であれば3回の送信すべてで同じ値となり、内容が異なる場合は別の値となります。受信側の重複排除のキーとしてご利用ください。既に処理済みの値を再度受信した場合は、そのまま破棄し、HTTP 2xxを返却していただいて構いません。
X-Lme-Timestamp両機能エルメ側がリクエストを送信した時刻。エポックミリ秒形式です(例:1789000000000)。LINEのWebhookペイロード内の timestamp と同じ単位です。再送のたびに新しい値が入り、初回送信時の時刻ではありません。
Content-Type両機能application/json; charset=utf-8
REQUEST HEADER(L Messageデータ転送機能)
POST /your/webhook/endpoint HTTP/1.1
Content-Type: application/json; charset=utf-8
X-Lme-Signature: whsec_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
X-Lme-Delivery-Id: 3f2a8c10-9d4b-4e21-8a77-1c5e9b0d6f34
X-Lme-Timestamp: 1789000000000

7.6 シークレットのライフサイクル

項目内容
値の出所当該LINE公式アカウントの「署名シークレット」です。利用者は「Webhook転送」画面にて、シークレットの表示・コピー・再生成を行えます。
形式接頭辞 whsec_ で始まる文字列です。
再生成時の挙動管理画面上では、再生成と同時に旧シークレットが即時無効となり、猶予期間はありません。一方で転送処理は設定を1分ごとに読み込むため、再生成後の最大約1分間は、エルメ側が旧シークレットを付与して送信します。
推奨対応:再生成時は新旧2つのシークレットを約2分間受け付ける

シークレットを再生成される際は、受信側にて旧シークレットと新シークレットの両方を約2分間受け付けるようにし、その後に旧シークレットを破棄してください。即時に新シークレットのみへ切り替えた場合、待機時間中のリクエストが拒否され、双方に誤りがないにもかかわらずエラー一覧に記録されます。

7.7 送信失敗時の挙動

利用者は「Webhook転送」画面にてエラー一覧を確認できます。一覧は転送機能ごとに分かれています。

  • 1回目:イベント発生時に即時送信します。タイムアウトまたは5xxで失敗した場合は1分待機して再送し、それ以外のエラーはその時点でエラーを記録します。
  • 2〜3回目:最大2回まで、1分間隔で再送します。内容および X-Lme-Delivery-Id は初回と同一です。いずれかで成功した場合は終了し、エラーは記録しません。
  • 3回失敗後:3回すべてがタイムアウトまたは5xxとなった場合(初回から約2分後)、利用者が確認できるエラー記録を1件登録します。
利用者に表示されるエラー内容
発生状況ステータスコードエルメ画面での表示
接続を確立できない、またはDNSエラー—接続できませんでした
応答待ちの超過(エルメ側が10秒以上待機、またはエンドポイント側がタイムアウトを示すコードを返却)— / 408 / 504タイムアウト(10秒)
エンドポイントが認証を拒否した場合401 / 403認証エラー
パスが見つからない場合404転送先が見つかりません
エンドポイントが一時的に応答できない場合503転送先が一時的に応答できません
エンドポイント側でエラーが発生した場合その他の5xx転送先でエラーが発生しました
上記以外のステータスコード実際のコード表示文言は未確定
「タイムアウト(10秒)」の文言について

エンドポイントが408または504を返却した場合、文言中の「10秒」は実際の状況と一致しません(エルメ側は速やかに応答を受け取っており、タイムアウトを申告しているのはエンドポイント側です)。この表示が紛らわしいと受信側でご判断される場合は、エラーコード列に値があるかどうかに応じて、2種類の文言に分けることも可能です。

7.8 受信側エンドポイント要件

  • 10秒以内にHTTP 2xxを返却してください。これを超えた場合は失敗として扱われます。重い処理は非同期化し、受信後すぐに応答することを推奨します。
  • 重複受信に対応してください。X-Lme-Delivery-Id を重複排除のキーとしてご利用ください。
  • 受信順序に依存しない実装としてください。必要に応じて X-Lme-Timestamp をご利用ください。
  • L Messageデータ転送機能では、X-Lme-Signature の値を設定済みのシークレットと文字列比較して検証してください(再生成時は新旧2つを約2分間受け付け)。

8. 付録

APPENDIX

8.1 標準フィールドID一覧

友だち情報の標準項目は負の field_id、カスタム項目は正の field_id を使用します。以下は、Webhook転送仕様に記載されている標準項目の一覧です。最新の全項目は /friend-info-fields から取得してください。

field_idエルメ上の項目名内容
-1システム表示名エルメシステム上での表示名
-2携帯電話携帯電話番号
-3メールアドレスメールアドレス
-4生年月日生年月日
-6都道府県都道府県
-7郵便番号郵便番号
-8市区町村名市区町村名
-9町名/番地町名・番地
-10建物名・部屋番号建物名・部屋番号

8.2 制限値まとめ

対象項目制限値
API 共通ページングの limitデフォルト100 / 最大500
API 共通レート制限(読み取り)300リクエスト/分(LOA単位)
API 共通レート制限(書き込み)60リクエスト/分(LOA単位)
API 共通Idempotency-Key最大100文字
/messages/pushmessages[]最大5オブジェクト
/messages/pushテキスト1オブジェクトあたり最大5,000文字
/messages/pushメディアURL最大2,000文字 / HTTPS(TLS 1.2以上)
/messages/push元画像 / プレビュー画像JPEG・PNG 最大10 MB / 最大1 MB
/messages/push動画 / 音声MP4 最大200 MB / M4A 最大200 MB
/messages/templatetemplates[]最大5件
/conversations/detail取得件数直近100件
/conversations/detail取得可能期間無料LOA:180日 / 有料LOA:365日
/do_actionlmessage_friend_ids[]1リクエストあたり100人以内を推奨
/do_actionactions[]1リクエストあたり10件以内を推奨
Webhookタイムアウト10秒
Webhook再送最大3回 / 1分間隔(最長約2分)
Webhookevents[]1リクエストあたり最大1,000要素
Webhook設定変更の反映最大約1分