SendPulse Messengers API

The messengers API from SendPulse — 3 operation(s) for messengers.

Operations 5

GET /companies/{companyId}/messengers Get messengers #
POST /companies/{companyId}/messengers Create messenger #
POST /companies/{companyId}/messengers/batch Batch create messenger #
PUT /companies/{companyId}/messengers/{messengerId} Update messenger #
DELETE /companies/{companyId}/messengers/{messengerId} Delete messenger #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/sendpulse-messengers-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

sendpulse-messengers-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: Using the API for the CRM service, you can integrate your system with CRM from SendPulse and receive detailed information on pipelines, deals, contacts and their attributes and users. You can also create deals and contacts, assign and remove fields, tags, contact details and instant messengers. On the right, there is a button for authorizing requests made on this page. Click “Authorize,” then insert the ID and Secret from your account. To perform a request directly from the page, click the "Try it out" button within each method block. Then fill in input fields if any (for URL parameters, the description is right below the URL request; for body parameters, the description is under the “Scheme” button to the right of the example), and click “Run.” You will find the server response and description of received parameters below.
  title: SendPulse CRM Public Messengers API
  version: 0.1.0
servers:
- url: https://api.sendpulse.com/crm/v1
security:
- apiKey: []
- oauth2: []
tags:
- name: messengers
paths:
  /companies/{companyId}/messengers:
    get:
      tags:
      - messengers
      summary: Get messengers
      parameters:
      - name: companyId
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Messenger'
                  metadata:
                    type: object
                    properties:
                      total:
                        type: integer
      operationId: getCompanyMessengers
      x-ai-role: crm_integration_specialist
      x-ai-description: Retrieves all messenger channels connected to a specific CRM company. This endpoint is the entry point for understanding which communication channels (WhatsApp, Telegram, Viber, etc.) are available for a given company, enabling multichannel outreach orchestration.
      x-ai-reasoning-instructions:
      - Verify the companyId exists and is accessible before interpreting an empty result as 'no messengers'.
      - Use the metadata.total field to detect pagination — if total exceeds the returned array length, additional pages may exist.
      - If the goal is to send a message, cross-reference available messengers with the contact's subscribed channels before selecting one.
      x-ai-responding-instructions:
      - List the available messenger types clearly (e.g., 'This company has WhatsApp and Telegram connected').
      - If the array is empty, suggest connecting a messenger channel in the SendPulse dashboard.
      - Highlight the total count from metadata when presenting results to give the user a complete picture.
      x-ai-suggestions:
      - Use the returned messenger IDs to send messages via the corresponding send-message endpoint.
      - Check this endpoint before initiating a campaign to ensure at least one active channel is available.
      x-ai-capabilities:
        confirmation:
          type: None
        security_info:
          data_handling:
          - ReadOnly
    post:
      tags:
      - messengers
      summary: Create messenger
      parameters:
      - name: entityType
        in: path
        required: true
        schema:
          type: string
          enum:
          - company
      - name: entityId
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        description: ''
        content:
          application/json:
            schema:
              properties:
                data:
                  type: object
                  properties:
                    typeId:
                      type: integer
                    login:
                      type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/Messenger'
      operationId: createCompanyMessenger
      x-ai-role: crm_integration_specialist
      x-ai-description: Connects a messenger channel (e.g., Telegram, Viber, WhatsApp) to a specific company entity in the CRM. This is a configuration step that enables omnichannel communication — once a messenger is linked, the company can send and receive messages through that channel. The typeId determines which messenger platform is being registered.
      x-ai-reasoning-instructions:
      - Resolve the correct entityType and entityId before calling — this endpoint uses path params that mirror the generic entity structure; for companies, entityType must be 'company'.
      - Check whether a messenger of the same typeId is already linked to this company to avoid duplicate channel registrations.
      - Verify that login format matches the requirements of the target messenger platform (e.g., phone number for WhatsApp, username for Telegram).
      x-ai-responding-instructions:
      - Confirm the created messenger by referencing its ID and type from the response.
      - Suggest activating or testing the messenger channel as an immediate next step.
      - If creation fails due to a conflict, explain that the channel may already be registered and suggest listing existing messengers first.
      x-ai-suggestions:
      - Use typeId=1 for Telegram, typeId=2 for Viber — verify the platform's type registry before calling.
      - After creation, associate the messenger with contacts to enable targeted messaging.
      x-ai-capabilities:
        confirmation:
          type: None
        security_info:
          data_handling:
          - ResourceStateUpdate
  /companies/{companyId}/messengers/batch:
    post:
      tags:
      - messengers
      summary: Batch create messenger
      parameters:
      - name: companyId
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        content:
          application/json:
            schema:
              properties:
                messengers:
                  type: array
                  items:
                    type: object
                    properties:
                      typeId:
                        type: integer
                      login:
                        type: string
                      botId:
                        type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Messenger'
      operationId: batchCreateCompanyMessengers
      x-ai-role: crm_integration_specialist
      x-ai-description: Bulk-registers multiple messenger channels (WhatsApp, Telegram, Viber, etc.) for a CRM company in a single atomic call. Use this instead of sequential single-messenger creation when onboarding a company that already operates across several platforms — it reduces round-trips and ensures all channels are provisioned together.
      x-ai-reasoning-instructions:
      - Verify that companyId exists before submitting — a 404 here silently discards the entire batch.
      - Check that each messenger's typeId corresponds to a supported platform type; unknown typeIds may cause partial failures.
      - Ensure no duplicate (typeId + login) pairs exist within the batch or in already-registered messengers for this company.
      - If botId is required for bot-based channels (e.g., Telegram), validate its presence before the call to avoid partial success.
      - Prefer this endpoint over repeated POST /messengers calls whenever two or more messengers must be created together.
      x-ai-responding-instructions:
      - Confirm how many messengers were successfully created out of how many were submitted.
      - List the returned messenger IDs and their associated typeId/login for traceability.
      - If the response includes partial failures, clearly identify which items failed and why.
      - Suggest verifying connectivity or triggering a test message as the immediate next step.
      x-ai-suggestions:
      - Combine all messenger channels known at company onboarding into one batch call.
      - After batch creation, use GET /companies/{companyId}/messengers to confirm all channels are active.
      - If a specific messenger type requires webhook configuration, do that immediately after this call.
      x-ai-capabilities:
        confirmation:
          type: Recommended
          message: You are about to register {{count}} messenger channel(s) for company {{companyId}}. Proceed?
        security_info:
          data_handling:
          - ResourceStateUpdate
          - BulkWrite
  /companies/{companyId}/messengers/{messengerId}:
    put:
      tags:
      - messengers
      summary: Update messenger
      parameters:
      - name: entityType
        in: path
        required: true
        schema:
          type: string
          enum:
          - company
      - name: entityId
        in: path
        required: true
        schema:
          type: integer
      - name: messengerId
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        description: ''
        content:
          application/json:
            schema:
              properties:
                data:
                  type: object
                  properties:
                    typeId:
                      type: integer
                    login:
                      type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/Messenger'
      operationId: updateCompanyMessenger
      x-ai-role: crm_integration_specialist
      x-ai-description: Updates the messenger configuration linked to a specific company entity. A messenger in this context is a communication channel integration (e.g., Telegram, WhatsApp) tied to a company account. Modifying the typeId changes the channel type, while updating the login reassigns the account identifier — both can affect active chatbot routing and message delivery.
      x-ai-reasoning-instructions:
      - Fetch the current messenger record before updating to understand which fields are already set and avoid accidental overwrites.
      - Verify that the new typeId corresponds to a valid and supported messenger type in the system.
      - If changing the login, confirm the new account identifier belongs to the same company to prevent cross-account conflicts.
      - Check if the messenger is currently active and linked to any chatbot flows — modifying it may interrupt ongoing conversations.
      x-ai-responding-instructions:
      - Confirm which fields were updated and reflect the new values in the response summary.
      - If the messenger type changed, note the implications for any chatbots or automation flows using this channel.
      - Suggest verifying the integration is still functional after the update, especially if the login was changed.
      x-ai-suggestions:
      - Use `getCompanyMessengers` first to retrieve the current state before patching.
      - After updating, verify connectivity with a test message if the messenger type supports it.
      x-ai-capabilities:
        confirmation:
          type: Recommended
          message: Updating a messenger may disrupt active chatbot flows using this channel. Confirm before proceeding.
        security_info:
          data_handling:
          - ResourceStateUpdate
    delete:
      tags:
      - messengers
      summary: Delete messenger
      parameters:
      - name: entityType
        in: path
        required: true
        schema:
          type: string
          enum:
          - company
      - name: entityId
        in: path
        required: true
        schema:
          type: integer
      - name: messengerId
        in: path
        required: true
        schema:
          type: integer
      responses:
        '204':
          description: Successfully deleted
      operationId: deleteCompanyMessenger
      x-ai-role: crm_integration_specialist
      x-ai-description: Permanently removes a messenger channel linked to a company entity. In SendPulse CRM, messengers are communication touchpoints — deleting one severs the channel and may affect active automation flows, ongoing conversations, and contact reachability. This action is irreversible.
      x-ai-reasoning-instructions:
      - Confirm that the messengerId belongs to the specified companyId before proceeding — a mismatch will result in a 404 or unintended deletion.
      - Check whether this messenger is referenced in active pipelines, automation sequences, or contact records before deletion.
      - Treat this as a destructive operation — ask for explicit user confirmation if context suggests the messenger may still be in active use.
      - entityType must be 'company' — validate this before constructing the request.
      x-ai-responding-instructions:
      - A 204 response means the messenger was successfully deleted — inform the user that the channel no longer exists.
      - Warn the user that any automation or contact flows relying on this messenger will be broken.
      - Suggest reviewing related pipelines or contacts to reassign a communication channel if needed.
      x-ai-suggestions:
      - After deletion, verify related contacts still have at least one active communication channel.
      - Use GET /companies/{companyId}/messengers to confirm the messenger list post-deletion.
      x-ai-capabilities:
        confirmation:
          type: Required
          message: This will permanently delete the messenger and cannot be undone.
        security_info:
          data_handling:
          - ResourceDestruction
          - IrreversibleAction
components:
  schemas:
    Messenger:
      type: object
      properties:
        id:
          type: integer
        typeId:
          type: integer
        login:
          type: string
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: 'Static API Key authentication.  A long-lived token generated manually in the SendPulse account settings.

        '
      x-ai-description: 'Permanent authentication token. Ideal for simple integrations without token refresh logic.

        '
    outh2:
      type: oauth2
      description: OAuth 2.0 Client Credentials flow for temporary access tokens.
      flows:
        clientCredentials:
          tokenUrl: https://api.sendpulse.com/oauth/access_token
          scopes: {}
      x-ai-description: 'Standard OAuth 2.0 flow using Client ID and Client Secret.  Provides temporary tokens (valid for 1 hour) for enhanced security.

        '