Agent Skills: line

LINE API for messaging. Use when user mentions "LINE", "LINE message",

UncategorizedID: vm0-ai/vm0-skills/line

Install this agent skill to your local

pnpm dlx add-skill https://github.com/vm0-ai/vm0-skills/tree/HEAD/line

Skill Files

Browse the full folder contents for line.

Download Skill

Loading file tree…

line/SKILL.md

Skill Metadata

Name
line
Description
LINE API for messaging. Use when user mentions "LINE", "LINE message",

Troubleshooting

If requests fail, run zero doctor check-connector --env-name LINE_TOKEN or zero doctor check-connector --url https://api.line.me/v2/bot/info --method GET

How to Use

All examples below assume you have LINE_TOKEN set. Authentication uses Bearer token in the Authorization header.

Base URL

  • https://api.line.me

1. Get Bot Info

Retrieve information about the bot associated with the channel access token.

curl -s "https://api.line.me/v2/bot/info" --header "Authorization: Bearer $LINE_TOKEN" | jq .

2. Get User Profile

Retrieve a user's display name, profile image, and status message. Replace USER_ID with the actual user ID.

curl -s "https://api.line.me/v2/bot/profile/USER_ID" --header "Authorization: Bearer $LINE_TOKEN" | jq .

3. Get Follower IDs

Retrieve a list of user IDs that have added the bot as a friend. Supports pagination with start parameter.

curl -s "https://api.line.me/v2/bot/followers/ids?limit=100" --header "Authorization: Bearer $LINE_TOKEN" | jq .

For pagination, use the next token from the response:

curl -s "https://api.line.me/v2/bot/followers/ids?limit=100&start=CONTINUATION_TOKEN" --header "Authorization: Bearer $LINE_TOKEN" | jq .

4. Send Push Message

Send a message to a specific user. Replace USER_ID with the target user ID.

Write to /tmp/line_request.json:

{
  "to": "USER_ID",
  "messages": [
    {
      "type": "text",
      "text": "Hello from the LINE bot!"
    }
  ]
}

Then run:

curl -s -X POST "https://api.line.me/v2/bot/message/push" --header "Content-Type: application/json" --header "Authorization: Bearer $LINE_TOKEN" -d @/tmp/line_request.json | jq .

5. Send Reply Message

Reply to a user event using a reply token received from a webhook event. Reply tokens expire after a short time.

Write to /tmp/line_request.json:

{
  "replyToken": "REPLY_TOKEN",
  "messages": [
    {
      "type": "text",
      "text": "Thanks for your message!"
    }
  ]
}

Then run:

curl -s -X POST "https://api.line.me/v2/bot/message/reply" --header "Content-Type: application/json" --header "Authorization: Bearer $LINE_TOKEN" -d @/tmp/line_request.json | jq .

6. Send Multicast Message

Send the same message to multiple users at once (up to 500 user IDs).

Write to /tmp/line_request.json:

{
  "to": ["USER_ID_1", "USER_ID_2", "USER_ID_3"],
  "messages": [
    {
      "type": "text",
      "text": "This is a multicast message!"
    }
  ]
}

Then run:

curl -s -X POST "https://api.line.me/v2/bot/message/multicast" --header "Content-Type: application/json" --header "Authorization: Bearer $LINE_TOKEN" -d @/tmp/line_request.json | jq .

7. Send Broadcast Message

Send a message to all users who have added the bot as a friend.

Write to /tmp/line_request.json:

{
  "messages": [
    {
      "type": "text",
      "text": "This broadcast goes to all followers!"
    }
  ]
}

Then run:

curl -s -X POST "https://api.line.me/v2/bot/message/broadcast" --header "Content-Type: application/json" --header "Authorization: Bearer $LINE_TOKEN" -d @/tmp/line_request.json | jq .

8. Check Message Quota

Get the monthly message quota for the LINE Official Account.

curl -s "https://api.line.me/v2/bot/message/quota" --header "Authorization: Bearer $LINE_TOKEN" | jq .

Check how many messages have been sent this month:

curl -s "https://api.line.me/v2/bot/message/quota/consumption" --header "Authorization: Bearer $LINE_TOKEN" | jq .

9. Send Image Message

Send an image to a user.

Write to /tmp/line_request.json:

{
  "to": "USER_ID",
  "messages": [
    {
      "type": "image",
      "originalContentUrl": "https://example.com/image.jpg",
      "previewImageUrl": "https://example.com/image_preview.jpg"
    }
  ]
}

Then run:

curl -s -X POST "https://api.line.me/v2/bot/message/push" --header "Content-Type: application/json" --header "Authorization: Bearer $LINE_TOKEN" -d @/tmp/line_request.json | jq .

10. Send Template Message (Buttons)

Send a button template message with actions.

Write to /tmp/line_request.json:

{
  "to": "USER_ID",
  "messages": [
    {
      "type": "template",
      "altText": "Button template",
      "template": {
        "type": "buttons",
        "title": "Menu",
        "text": "Please select an option",
        "actions": [
          {
            "type": "message",
            "label": "Option 1",
            "text": "option1"
          },
          {
            "type": "uri",
            "label": "Visit Website",
            "uri": "https://example.com"
          }
        ]
      }
    }
  ]
}

Then run:

curl -s -X POST "https://api.line.me/v2/bot/message/push" --header "Content-Type: application/json" --header "Authorization: Bearer $LINE_TOKEN" -d @/tmp/line_request.json | jq .

11. Get Webhook Endpoint

Retrieve the current webhook URL configuration.

curl -s "https://api.line.me/v2/bot/channel/webhook/endpoint" --header "Authorization: Bearer $LINE_TOKEN" | jq .

12. Set Webhook Endpoint

Configure the webhook URL where LINE sends events.

curl -s -X PUT "https://api.line.me/v2/bot/channel/webhook/endpoint" --header "Content-Type: application/json" --header "Authorization: Bearer $LINE_TOKEN" -d '{"endpoint":"https://example.com/webhook"}' | jq .

13. Test Webhook

Test the webhook endpoint connectivity.

curl -s -X POST "https://api.line.me/v2/bot/channel/webhook/test" --header "Content-Type: application/json" --header "Authorization: Bearer $LINE_TOKEN" -d '{"endpoint":"https://example.com/webhook"}' | jq .

14. List Rich Menus

Get all rich menus created for the bot.

curl -s "https://api.line.me/v2/bot/richmenu/list" --header "Authorization: Bearer $LINE_TOKEN" | jq '.richmenus[] | {richMenuId, name, size}'

15. Create Rich Menu

Create a new rich menu.

Write to /tmp/line_request.json:

{
  "size": {
    "width": 2500,
    "height": 1686
  },
  "selected": false,
  "name": "Main Menu",
  "chatBarText": "Menu",
  "areas": [
    {
      "bounds": {
        "x": 0,
        "y": 0,
        "width": 1250,
        "height": 1686
      },
      "action": {
        "type": "message",
        "text": "Left button tapped"
      }
    },
    {
      "bounds": {
        "x": 1250,
        "y": 0,
        "width": 1250,
        "height": 1686
      },
      "action": {
        "type": "message",
        "text": "Right button tapped"
      }
    }
  ]
}

Then run:

curl -s -X POST "https://api.line.me/v2/bot/richmenu" --header "Content-Type: application/json" --header "Authorization: Bearer $LINE_TOKEN" -d @/tmp/line_request.json | jq .

16. Delete Rich Menu

Delete a rich menu by ID.

curl -s -X DELETE "https://api.line.me/v2/bot/richmenu/RICH_MENU_ID" --header "Authorization: Bearer $LINE_TOKEN" | jq .

17. Get Message Delivery Statistics

Get the number of messages delivered on a specific date (format: yyyyMMdd).

curl -s "https://api.line.me/v2/bot/insight/message/delivery?date=20260301" --header "Authorization: Bearer $LINE_TOKEN" | jq .

18. Get Follower Demographics

Retrieve demographic data about followers (gender, age, area distribution).

curl -s "https://api.line.me/v2/bot/insight/demographic" --header "Authorization: Bearer $LINE_TOKEN" | jq .

19. Get Group Summary

Retrieve information about a group chat the bot is a member of.

curl -s "https://api.line.me/v2/bot/group/GROUP_ID/summary" --header "Authorization: Bearer $LINE_TOKEN" | jq .

20. Get Group Member Profile

Retrieve the profile of a specific member in a group chat.

curl -s "https://api.line.me/v2/bot/group/GROUP_ID/member/USER_ID" --header "Authorization: Bearer $LINE_TOKEN" | jq .

Message Types

LINE supports multiple message types in the messages array:

| Type | Description | |------|-------------| | text | Plain text message | | image | Image with original and preview URLs | | video | Video with original and preview URLs | | audio | Audio file with duration | | location | Location with title, address, and coordinates | | sticker | LINE sticker with package and sticker IDs | | template | Interactive template (buttons, confirm, carousel) | | flex | Flexible layout message using Flex Message JSON |

Guidelines

  1. Message limits: Push messages count toward your monthly quota. Free plans have limited push messages. Reply messages are free
  2. Reply tokens: Reply tokens from webhook events expire quickly. Process and reply promptly
  3. Multicast limit: Multicast supports up to 500 user IDs per request
  4. Rich menu images: After creating a rich menu, upload an image separately using the content upload endpoint
  5. User IDs: User IDs are channel-specific. The same user has different IDs across different channels
  6. Message objects: Each request can contain up to 5 message objects in the messages array
  7. HTTPS required: All image, video, and audio URLs must use HTTPS
  8. Webhook verification: LINE sends a signature in the x-line-signature header for webhook verification using HMAC-SHA256
line Skill | Agent Skills