Wassenger Integrations API
The Integrations API from Wassenger — 8 operation(s) for integrations.
The Integrations API from Wassenger — 8 operation(s) for integrations.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/wassenger:wassenger-integrations-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Wassenger Integrations API
version: 1.0.0
description: '**API documentation for Wassenger**
> 🔥 🆕 **Introducing Flows**: No-Code Automation Solution to create AI agents and automate anything on WhatsApp! Learn more
## Introduction
This API documentation provides detailed information about the API endpoints and request/response API contracts. You can easily browse all the API resources, request/response the with code examples in 15+ programming languages, including JavaScript/Node.js, Python, PHP, Ruby, Java, C#, Go, Swift, Kotlin, ObjectiveC, C/C++, cURL, Powershell and more. This is a web based API, therefore is only required to send HTTPS requests in order to communicate with the API, making it very easy to use and integrate with any third-party software, programming language, CMS, CRM or CLI tools. The API does not require any SDK and has no strict software dependencies, it can be easily used with no friction by simply sending HTTPS requests to the desired API endpoint. > 🤩 🤖 **Ask the Wassenger AI Assistant to write code for you** 👉
## Security
This API is intended for use exclusively in server-side applications. Attempting to use them in a client-side application will result in Cross-Origin Resource Sharing (CORS) errors. This restriction is intentional and ensures the security and integrity of the service. ## Tutorials
Learn how to use the API exploring our handy tutorials with detailed code examples and live API testing:
- 💬 Send messages to phone numbers
- 💬 Send messages to group chats
- 💬 Send messages to channel 🆕
- 💬 Send messages from a CSV file 🆕
- 💬 Send messages from a Google Sheets document 🆕
- 📁 Send multimedia messages (images, videos, documents, files or audios)
- 💬 Include emojis in text messages
- 💬 Send location messages
- 💬 Send contacts
- 💬 Send URL links in text messages
- 💬 Send auto-expiring messages
- 💬 Send messages in real-time without queueing
- 💬 Send messages through a specific WhatsApp number/device
- 💬 Send messages on behalf of a chat agent
- 💬 Send messages replying to a specific message
- 💬 Send dynamic buttons message
- 💬 Send dynamic list message
- 📝 How to use template variables
- 📝 How to format text with styling in messages
- ✅ Check if a phone number exists in WhatsApp and can receive messages
## Chatbots 🔥
- 🤖 Create a custom chat bot using the API + Webhooks 🆕
- 🤖 Create a ChatGPT-powered AI chatbot assistant for your business 🆕
## MCP 🆕
MCP (acronym of Model Context Protocol) connector lets you connect your Wassenger WhatsApp numbers into modern AI LLMs and chat with your WhatsApp data, analyze conversation, send messages, or perform any other WhatsApp action directly from your favorite AI chat or code tool. - 🤖 **Learn how to use MCP with your AI tool**
## Integrations
- n8n: integrate with 600+ third-party apps
- Zapier: integrate with 6000+ third-party apps
- Make (formerly Integromat): integrate with 2000+ third-party apps
- Integrately: integrate with 1200+ third-party apps
- Google Sheets
- Hubspot
- Shopify
- Zoho CRM
- Salesforce
- Microsoft Dynamics
- Pipedrive
- Bitrix24
- Airtable
- Notion
- Nimble CRM
- Monday.com
## Live API testing
Explore the live API testing using real use cases with dozens of ready-to-use examples:
- **Go to the API client live tester**
- **Explore, test and debug the API using Postman graphical HTTP client**
### API examples
Explore the many API use cases in the API tester ready-to-use code examples available in 15+ programming languages. > 🤩 🤖 **Ask the Wassenger AI Assistant to write code for you** 👉
Find below each relevant API endpoint documentation with more ready-to-use code examples. ## How to use the API
Search or browse the API endpoint by name or action to perform in the left bar. Then click on the API endpoint and browse the details of the request/response, including query or body required/optional parameters and possible valid responses.'
x-traitTag: true
x-logo:
url: https://api.wassenger.com/v1/static/accounts/waplatform/fenix/logo.png
backgroundColor: '#FFFFFF'
altText: Wassenger
servers:
- url: https://api.wassenger.com/v1
tags:
- name: Integrations
paths:
/install/vault:
parameters: []
get:
summary: Vault
description: 'Read the vault of the calling install: its host credentials and the version to write on top of.
A revoked install reads the copy kept for 24 hours, and `null` once that copy is gone.'
operationId: getInstallVault
security:
- apiKey: []
tags:
- Integrations
responses:
default:
description: Vault
content:
application/json:
schema:
type: object
put:
summary: Write vault
description: 'Replace the vault of the calling install, writing on top of the version last read.
A different version answers 409 `install:vault_conflict`: read again and write on top of what comes back. The vault takes at most 16 KB.'
operationId: putInstallVault
security:
- apiKey: []
tags:
- Integrations
responses:
'409':
description: The vault changed since it was read
default:
description: Vault
content:
application/json:
schema:
type: object
requestBody:
content:
application/json:
schema:
type: object
required:
- version
- data
properties:
version:
type: integer
data:
type: object
required: true
/install/agents:
parameters: []
get:
summary: Install agents
description: List the account owner and the agents who can answer on the numbers of the calling install, with the numbers each one reaches.
operationId: listInstallAgents
security:
- apiKey: []
tags:
- Integrations
responses:
default:
description: Agents
content:
application/json:
schema:
type: array
items:
type: object
/install:
parameters: []
get:
summary: Install
description: 'Read the CRM install the calling bridge or install token belongs to, with its numbers, scopes, events and webhook signing secrets.
Requires a bridge key with the `X-Install-Id` header, or an install token. A regular API key has no install and receives a 403.'
operationId: getInstall
security:
- apiKey: []
tags:
- Integrations
responses:
'403':
description: The token has no install, the install was revoked, or its token expired
default:
description: Install
content:
application/json:
schema:
type: object
patch:
summary: Update install
description: 'Update the CRM install of the calling bridge: its external account id, host status, host metadata and activation.
`hostInfo` merges by key and a key written as an empty string is removed. `status` only takes `active`, and only on a pending install.'
operationId: patchInstall
security:
- apiKey: []
tags:
- Integrations
responses:
'400':
description: A field the install cannot write
'409':
description: The status change is not allowed, or the external account is taken
default:
description: Install
content:
application/json:
schema:
type: object
requestBody:
content:
application/json:
schema:
type: object
properties:
externalAccountId:
type: string
hostStatus: {}
hostInfo:
type: object
status:
type: string
enum:
- active
required: true
delete:
summary: Revoke install
description: 'Revoke the CRM install of the calling token.
A bridge sends `{ "reason": "bridge" }` or `{ "reason": "host_uninstalled" }` and keeps read access to the install and its vault for 24 hours. An install token sends no body and its access ends at once.'
operationId: revokeInstall
security:
- apiKey: []
tags:
- Integrations
responses:
'400':
description: A reason the token cannot use, or a body where none is allowed
default:
description: Install
content:
application/json:
schema:
type: object
requestBody:
content:
application/json:
schema:
type: object
properties:
reason:
type: string
/bridges/pending:
parameters: []
post:
summary: Create pending connection
description: 'Park the credentials of a connection that started in the host until the customer finishes it in the console.
Requires a bridge key without the `X-Install-Id` header. `externalAccountId` is optional, because the host account may not exist yet: the bridge sets it with `PATCH /v1/install` once the install is created. The vault is stored encrypted and expires in 30 minutes.'
operationId: createPending
security:
- apiKey: []
tags:
- Integrations
responses:
'400':
description: A body this route cannot serve
'503':
description: The vault store is not available right now
default:
description: The id of the pending connection
content:
application/json:
schema:
type: object
requestBody:
content:
application/json:
schema:
type: object
/bridges/installs:
parameters: []
get:
summary: Bridge installs
description: 'List the active CRM installs of the calling bridge, or find the one of a host account.
Requires a bridge key without the `X-Install-Id` header. Pass `externalAccountId` to look one up, or `status=active` with `cursor` and `size` to page through them all.'
operationId: listInstalls
security:
- apiKey: []
tags:
- Integrations
parameters:
- name: externalAccountId
in: query
required: false
schema:
type: string
- name: status
in: query
required: false
schema:
type: string
- name: cursor
in: query
required: false
schema:
type: string
- name: size
in: query
required: false
schema:
type: string
responses:
'400':
description: A query this route cannot serve
'403':
description: The token is not a bridge key, or carries an install
default:
description: Installs of the bridge
content:
application/json:
schema:
type: object
/bridges/exchange:
parameters: []
post:
summary: Exchange install code
description: 'Exchange the one-time code of a console connection for the install behind it.
Requires a bridge key without the `X-Install-Id` header. A code can be exchanged once: the second time it answers 409 `install:code_used`. `fromPending` says the install came from a pending connection started in the host, and `reconnect` that the customer reconnected an install that already existed.
Pass as `origin` the Origin of the request the customer''s browser sent to the bridge. A code bound to the console that asked for it only goes with that origin: any other answers 403 `install:code_origin` and leaves the code unspent.'
operationId: exchangeCode
security:
- apiKey: []
tags:
- Integrations
responses:
'400':
description: A key the body cannot carry
'401':
description: The code does not exist, belongs to another bridge or expired
'403':
description: The install was revoked, or the code is bound to another console origin
'409':
description: The code was already exchanged
default:
description: The install of the code
content:
application/json:
schema:
type: object
requestBody:
content:
application/json:
schema:
type: object
/install/kv/{key}:
parameters: []
get:
summary: Read install key
description: 'Read a key of the key-value store of the calling install.
Answers `{ value, expiresAt }`, or 404 `install:kv_not_found` when the key is not there or already expired.'
operationId: getInstallKey
security:
- apiKey: []
tags:
- Integrations
parameters:
- name: key
in: path
required: true
description: Key of the store, matching `^[A-Za-z0-9:._-]{1,128}$`.
schema:
type: string
responses:
'400':
description: A key this store cannot serve
'404':
description: 'No such key: `install:kv_not_found`'
default:
description: The value and when it expires
content:
application/json:
schema:
type: object
put:
summary: Write install key
description: 'Write a key of the key-value store of the calling install, with a time to live between 1 second and 7 days.
There is no delete: a lock is released by writing it again with `ttlSec: 1`. `ifAbsent` writes only when the key is free and `ifValue` only when it holds that exact value; when the condition does not hold the answer is 409 `install:kv_conflict` with the live value in `meta.value`. An install holds 5000 live keys, keys of the reserved `rt:` prefix aside.'
operationId: setInstallKey
security:
- apiKey: []
tags:
- Integrations
parameters:
- name: key
in: path
required: true
description: Key of the store, matching `^[A-Za-z0-9:._-]{1,128}$`.
schema:
type: string
responses:
'400':
description: A key, value or ttl this store cannot take
'409':
description: The condition did not hold, or the install is out of keys
default:
description: Written
content:
application/json:
schema:
type: object
requestBody:
content:
application/json:
schema:
type: object
required: true
/bridges/kv/{key}:
parameters: []
get:
summary: Read bridge key
description: 'Read a key of the key-value store of the calling bridge.
Answers `{ value, expiresAt }`, or 404 `install:kv_not_found` when the key is not there or already expired.'
operationId: getBridgeKey
security:
- apiKey: []
tags:
- Integrations
parameters:
- name: key
in: path
required: true
description: Key of the store, matching `^[A-Za-z0-9:._-]{1,128}$`.
schema:
type: string
responses:
'400':
description: A key this store cannot serve
'404':
description: 'No such key: `install:kv_not_found`'
default:
description: The value and when it expires
content:
application/json:
schema:
type: object
put:
summary: Write bridge key
description: 'Write a key of the key-value store of the calling bridge, with a time to live between 1 second and 7 days.
Same rules as the install store: no delete, `ifAbsent` and `ifValue` as conditions, and 409 `install:kv_conflict` with the live value in `meta.value` when one does not hold. The reserved `rt:` prefix here only takes the schedule lock and the revoked marker.'
operationId: setBridgeKey
security:
- apiKey: []
tags:
- Integrations
parameters:
- name: key
in: path
required: true
description: Key of the store, matching `^[A-Za-z0-9:._-]{1,128}$`.
schema:
type: string
responses:
'400':
description: A key, value or ttl this store cannot take
'409':
description: The condition did not hold
default:
description: Written
content:
application/json:
schema:
type: object
requestBody:
content:
application/json:
schema:
type: object
required: true
components:
securitySchemes:
apiKey:
type: apiKey
name: Token
in: header
description: 'User API key token needs to be used on every API request that requires authentication.
You can define it via "token" URL query param or via "Token" HTTP request header.
Get or create your API key from the [Web Console](https://console.wassenger.com/apikeys).
**Note**: chat agents and supervisors have no access to the API.
#### Example as request header:
```
GET /v1/messages HTTP/1.1
Host: api.wassenger.com:443
Token: 5f2296349b12abf18c3e4a072cfceb47f51bde312477d048a0baf7cccf4af17861e28f80739d3a3f
```
#### Example as URL query param:
```
GET /v1/messages?token=5f2296349b12abf18c3e4a072cfceb47f51bde312477d048a0baf7cccf4af17861e28f80739d3a3f HTTP/1.1
Host: api.wassenger.com:443
```'
keypassToken:
type: apiKey
name: Authorization
in: header
description: Account-wide keypass token in the Authorization header (issued via the extension download).
externalDocs:
description: Website
url: https://app.wassenger.com
x-tagGroups:
- name: Messages (outbound)
tags:
- Messages
- name: Numbers Management
tags:
- Devices
- Session
- Groups
- Channels
- Queue
- Settings
- Profile
- Contacts
- Team Members
- Departments
- Labels
- Automatic Replies
- Automatic Assignment
- Automatic Resolution
- Quick Replies
- Meeting Links
- Business catalog
- Billing
- name: Chat
tags:
- Chats
- Chat Messages
- Chat Contacts
- Chat Files
- User Status
- Analytics
- name: Sales Funnel
tags:
- Pipeline
- Deals
- name: Campaigns
tags:
- Campaigns
- name: WhatsApp Business API
tags:
- Templates
- Templates Pricing
- Catalog
- Flows
- name: Files Storage
tags:
- Files
- name: Notifications
tags:
- Webhooks
- name: Utilities
tags:
- Verify
x-mcp:
protocolVersion: '2025-11-25'
capabilities:
tools: {}
prompts: {}
logging: {}
completions: {}
servers:
- url: https://api.wassenger.com/mcp
description: 'MCP server (beta). Authenticate with an Authorization Bearer header holding your API key. Setup guide: /help/mcp'
x-express-openapi-disable-response-validation-middleware: true
x-express-openapi-additional-middleware:
- null
x-express-openapi-schema-extension:
definitions:
schema:
properties:
oneOf:
type: array
minItems: 1
items: {}