Linq API integration for n8n
npm install n8n-nodes-linqCommunity node for the Linq Partner API v3 in n8n. Use this node to manage chats, messages, attachments, phone numbers, webhooks, and contacts from your workflows.
Ownership: The Linq Partner API is owned and operated by Linq (https://linqapp.com/). This repository is community-maintained by Everyday Workflows.
Disclaimer: This is a community-built integration. It is not affiliated with, endorsed by, or supported by Linq App Inc.
Acceptable use: Users are responsible for complying with Linq’s Acceptable Use Policy and Apple’s Business Chat guidelines. Automated messaging should only be used for transactional or opted‑in communications.
- Usage guide: docs/usage.md
- API reference (v3): docs/api-reference.md
- OpenAPI spec: V3.yaml
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
- Node.js >= 20.15
- n8n compatible with n8n-workflow ^1.120.7
- Using the n8n UI:
1. Settings → Community Nodes → Install
2. Enter: n8n-nodes-linq
3. Restart n8n if prompted
- Headless / environment variable:
- Add n8n-nodes-linq to N8N_COMMUNITY_PACKAGES (or install with npm in your instance) and restart n8n.
Create a new credential of type Linq API:
- API Token: Linq Partner API token used as Authorization: Bearer
- Webhook Signing Secret: Required for Linq Trigger signature verification
- This is returned only once when a webhook subscription is created. Store it securely.
Where it’s defined:
Add the Linq node to your workflow. Operations map to Linq Partner API v3 endpoints.
- Node implementation: Linq.node.ts
- Icon: linq.svg
Chat
- Get Many → GET /v3/chats (requires from, supports cursor/limit)
- Get One → GET /v3/chats/{chatId}
- Find → GET /v3/chats (with from + phone_numbers[])
- Create → POST /v3/chats
- Share Contact → POST /v3/chats/{chatId}/share_contact_card
Chat Message
- Get Many → GET /v3/chats/{chatId}/messages
- Get One → GET /v3/messages/{messageId}
- Create → POST /v3/chats/{chatId}/messages
- Delete → DELETE /v3/messages/{messageId}
- React → POST /v3/messages/{messageId}/reactions
Phone Number
- Get Many → GET /v3/phonenumbers
- Update → PUT /v3/phonenumbers/{phoneNumberId}
Webhook Subscription
- Get Many → GET /v3/webhook-subscriptions
- Get One → GET /v3/webhook-subscriptions/{subscriptionId}
- Create → POST /v3/webhook-subscriptions
- Update → PUT /v3/webhook-subscriptions/{subscriptionId}
- Delete → DELETE /v3/webhook-subscriptions/{subscriptionId}
Contact (extension)
- Create → POST /v3/contacts
- Get One → GET /v3/contacts/{contactId}
- Update → PUT /v3/contacts/{contactId}
- Delete → DELETE /v3/contacts/{contactId}
Chat Message (extension)
- Edit → POST /v3/messages/{messageId}/edit
- Get Reaction → GET /v3/chat_message_reactions/{reactionId}
> Note: The “extension” endpoints above are currently implemented in the node but are not present in V3.yaml. They will be aligned once the spec is updated.
Add the Linq Trigger node to start workflows when Linq events occur. The trigger automatically registers a webhook with Linq when the workflow is activated.
Supported Events
- message.sent
- message.received
- message.read
- call.completed
- contact.created
- contact.updated
- contact.deleted
Security
- The trigger verifies Linq webhooks using HMAC-SHA256
- Uses X-Webhook-Timestamp + raw request body for the signature payload: {timestamp}.{payload}
- Requires the Webhook Signing Secret from credentials
- Resource: Chat → Create
- Fields:
- Send From (required): +13175551234
- Display Name (optional): Project A
- Phone Numbers: +13341234567, +13347654321
- Message Text: Hello from n8n!
- Resource: Webhook Subscription → Create
- Fields:
- Webhook URL: https://example.com/webhooks/linq
- Events: message.sent, message.received, contact.created
- Active: true
Requirements:
- Node.js >= 20
- npm or pnpm (npm commands below)
Install and build:
``bash`
cd n8n-nodes-linq
npm install
npm run build
npm run lint
Local link for testing in n8n:
`bash`in this folder
npm linkin your n8n folder
npm link n8n-nodes-linqrestart n8n, then add "Linq" node
Project files of interest:
- Node: Linq.node.ts
- Trigger: LinqTrigger.node.ts
- Credentials: LinqApi.credentials.ts
- Gulp (icons): gulpfile.js
- TypeScript config: tsconfig.json
- Index shim: index.js
`bash``
npm run build
npm publish --access public
MIT — see LICENSE.md.