SendPulse Contact tags API

The Contact tags API from SendPulse — 3 operation(s) for contact tags.

Operations 6

POST /contact-tags/{tagId}/contact/{contactId} Add a tag to the contact #
DELETE /contact-tags/{tagId}/contact/{contactId} Delete a tag from a contact #
GET /contact-tags Get a list of contact tags #
POST /contact-tags Create a tag #
PUT /contact-tags/{tagId} Update a tag #
DELETE /contact-tags/{tagId} Remove tag #

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-contact-tags-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-contact-tags-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 Contact tags API
  version: 0.1.0
servers:
- url: https://api.sendpulse.com/crm/v1
security:
- apiKey: []
- oauth2: []
tags:
- description: ''
  name: Contact tags
paths:
  /contact-tags/{tagId}/contact/{contactId}:
    post:
      tags:
      - Contact tags
      summary: Add a tag to the contact
      description: Adds a tag to the specified contact
      parameters:
      - name: tagId
        in: path
        required: true
        description: Tag ID you want to add. It can be obtained with the "Get a list of contact tags" method
        schema:
          type: integer
      - name: contactId
        in: path
        required: true
        description: Contact ID to which you want to add the tag. It can be obtained with the "Get a list of contacts" method
        schema:
          type: integer
      responses:
        '201':
          description: Created
      operationId: addTagToContact
      x-ai-role: crm_contact_segmentation_specialist
      x-ai-description: Associates an existing tag with a specific contact, enabling behavioral segmentation and targeted automation triggers. Tags in SendPulse CRM act as lightweight, non-exclusive labels that can drive conditional flows, filtering, and personalized outreach without modifying contact variables.
      x-ai-reasoning-instructions:
      - Verify that tagId exists by calling 'Get a list of contact tags' before attempting assignment.
      - Verify that contactId is valid via 'Get a list of contacts' to avoid a silent 404.
      - Check whether the tag is already assigned to the contact to prevent duplicate entries if the API does not handle idempotency.
      - Consider whether a bulk-tagging endpoint exists if the user intends to tag multiple contacts — prefer it over repeated single calls.
      x-ai-responding-instructions:
      - Confirm the tag was successfully applied and mention both the tag name and contact identifier for clarity.
      - Suggest triggering an automation or filter based on this tag as an immediate next step.
      - If a 404 is returned, clarify whether the tagId or contactId is the likely culprit and guide the user to retrieve valid IDs.
      x-ai-suggestions:
      - Use 'Get a list of contact tags' to look up valid tagId values before calling this endpoint.
      - After tagging, consider using 'Get contacts by tag' to verify the assignment.
      x-ai-capabilities:
        confirmation:
          type: None
        security_info:
          data_handling:
          - ResourceStateUpdate
    delete:
      tags:
      - Contact tags
      summary: Delete a tag from a contact
      description: Removes the tag of the specified contact
      parameters:
      - name: tagId
        in: path
        required: true
        description: Tag ID you want to remove. It can be obtained with the "Get a list of contact tags" method
        schema:
          type: integer
      - name: contactId
        in: path
        required: true
        description: Contact ID from which you want to remove the tag. It can be obtained with the "Get a list of contacts" method
        schema:
          type: integer
      responses:
        '204':
          description: Successfully deleted
      operationId: deleteContactTagFromContact
      x-ai-role: crm_contact_management_specialist
      x-ai-description: Removes a specific tag assignment from a contact without deleting the tag itself or the contact record. This is the primary mechanism for maintaining accurate audience segmentation when a contact's profile changes — e.g., after a purchase, lifecycle stage transition, or incorrect tagging. Impacts how the contact appears in tag-based filters and automations.
      x-ai-reasoning-instructions:
      - Before removing, verify the tag is actually assigned to the contact — a missing association returns the same 204, which could mask logic errors.
      - Check if any active automations, segments, or campaigns rely on this tag for targeting before removing it.
      - This operation affects segmentation silently — no downstream notification is triggered; warn the user if this contact is part of active workflows.
      - Obtain tagId from `getContactTags` and contactId from `getContacts` if not already known.
      x-ai-responding-instructions:
      - Confirm that the tag was successfully removed (HTTP 204 means no response body — state this explicitly to avoid user confusion).
      - Suggest verifying the contact's remaining tags via the 'Get a list of contacts' method.
      - If the tag was used in segmentation or automation, proactively recommend reviewing affected workflows.
      x-ai-capabilities:
        confirmation:
          type: Recommended
          reason: Tag removal affects contact segmentation and may silently break automation targeting
        security_info:
          data_handling:
          - ResourceStateUpdate
  /contact-tags:
    get:
      tags:
      - Contact tags
      summary: Get a list of contact tags
      description: Returns a list of contact tags with the tag ID, tag name, and the number of contacts associated with this tag
      parameters:
      - name: name
        in: query
        required: false
        description: Exact match filter by tag name
        schema:
          type: string
          maxLength: 64
      - name: search
        in: query
        required: false
        description: Partial match filter by tag name (LIKE %search%)
        schema:
          type: string
          maxLength: 64
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ContactTag'
      operationId: listContactTags
      x-ai-role: crm_data_analyst
      x-ai-description: Retrieves the taxonomy of contact tags used for audience segmentation in the CRM. Tags are lightweight labels that group contacts without requiring a dedicated field or variable — they reflect behavioural, source, or lifecycle attributes. This endpoint is the entry point for any tag-based filtering, reporting, or bulk operations on contact segments.
      x-ai-reasoning-instructions:
      - Use `name` for exact lookups when the full tag name is known; use `search` for discovery or autocomplete-style queries.
      - Check the `contacts_count` in the response before performing tag-based bulk operations — a tag with 0 contacts may indicate stale taxonomy.
      - If the user wants to filter contacts by tag, first retrieve the tag ID here, then pass it to the contacts list endpoint.
      - Avoid calling both `name` and `search` simultaneously — they serve different precision levels and combining them may yield unexpected results depending on backend logic.
      x-ai-responding-instructions:
      - 'Present results as a structured list: tag name, ID, and contact count.'
      - If no tags are returned, suggest that no tags have been created yet and recommend using the tag creation endpoint.
      - If the user is searching for a specific tag, confirm whether an exact or partial match was used and clarify which parameter was applied.
      - Highlight tags with high contact counts as likely candidates for segmentation or campaign targeting.
      x-ai-suggestions:
      - Use `search=vip` to find all tags containing 'vip' in the name.
      - Use `name=newsletter` for an exact match when you know the precise tag label.
      - After retrieving tag IDs, use them to filter contacts or assign tags in bulk.
      x-ai-capabilities:
        confirmation:
          type: None
        security_info:
          data_handling:
          - ReadOnly
    post:
      tags:
      - Contact tags
      summary: Create a tag
      description: Creates a tag with the specified name
      requestBody:
        content:
          application/json:
            schema:
              properties:
                name:
                  type: string
                  description: Tag name to be created. The maximum number of characters is 64
                colorText:
                  type: string
                  description: Text color
                colorBackground:
                  type: string
                  description: Background color
              required:
              - name
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ContactTag'
      operationId: createContactTag
      x-ai-role: crm_data_organization_specialist
      x-ai-description: Creates a named tag used to categorize and segment contacts in SendPulse CRM. Tags are lightweight, visual labels that enable fast filtering and targeted bulk actions across the contact base. Color customization allows teams to build consistent visual taxonomies (e.g., red for high-priority, green for qualified leads).
      x-ai-reasoning-instructions:
      - Before creating, check if a tag with the same or similar name already exists to avoid duplicates.
      - Suggest meaningful, action-oriented tag names that reflect contact state or segment (e.g., 'Hot_Lead', 'Churn_Risk', 'VIP_Customer').
      - If colorText and colorBackground are omitted, the system will apply defaults — inform the user if visual consistency matters.
      - Remind the user that tag names are limited to 64 characters; truncate or abbreviate long names proactively.
      x-ai-responding-instructions:
      - Confirm the tag was created and surface the returned tag ID for reference in future operations.
      - Suggest immediately assigning the tag to contacts using the relevant contact-update endpoint.
      - If creation fails due to a duplicate name, offer to retrieve the existing tag instead.
      x-ai-suggestions:
      - Hot_Lead
      - VIP_Customer
      - Churn_Risk
      - Onboarding_Complete
      - Re_Engagement
      x-ai-capabilities:
        confirmation:
          type: None
        security_info:
          data_handling:
          - ResourceStateUpdate
  /contact-tags/{tagId}:
    put:
      tags:
      - Contact tags
      summary: Update a tag
      description: Updates the specified tag with a new name. Provided property values will be overwritten.
      parameters:
      - name: tagId
        in: path
        required: true
        description: Tag ID you want to update. It can be obtained with the "Get a list of contact tags" method
        schema:
          type: integer
      requestBody:
        content:
          application/json:
            schema:
              properties:
                name:
                  type: string
                  description: New tag name. The maximum number of characters is 255
                colorText:
                  type: string
                  description: Text color
                colorBackground:
                  type: string
                  description: Background color
              required:
              - name
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ContactTag'
      operationId: updateContactTag
      x-ai-role: crm_data_architect
      x-ai-description: Modifies the metadata of an existing contact tag — its display name and visual styling (text and background color). Tags in SendPulse CRM are classification labels attached to contacts; renaming or recoloring a tag instantly affects all contacts it is applied to, making this a high-impact bulk-update operation even though only one record is targeted.
      x-ai-reasoning-instructions:
      - Retrieve the current tag state via 'Get a list of contact tags' before updating to confirm the tagId is valid and to present the user with the current values.
      - If only colorText or colorBackground is being changed without a name change, you must still supply the current name in the request body because 'name' is required.
      - Warn the user that renaming a widely-used tag changes how it appears across all associated contacts and pipelines immediately.
      - Validate that the new name does not exceed 255 characters before sending the request.
      - Check for duplicate tag names in the existing tag list to avoid creating visual confusion in the CRM.
      x-ai-responding-instructions:
      - Confirm the update by echoing the new tag name and, if changed, the new color values.
      - If colorText or colorBackground was updated, mention that the visual change is reflected immediately in the CRM contact view.
      - If the tagId was not found (404), advise the user to fetch the current tag list to verify the correct ID.
      - Suggest filtering or segmenting contacts by this tag as a logical next step after renaming.
      x-ai-suggestions:
      - VIP_Client
      - Hot_Lead
      - Churned_2024
      - Needs_Followup
      x-ai-capabilities:
        confirmation:
          type: Recommended
          message: Renaming a tag affects all contacts it is currently applied to. Confirm the new name before proceeding.
        security_info:
          data_handling:
          - ResourceStateUpdate
    delete:
      tags:
      - Contact tags
      summary: Remove tag
      description: Removes the specified tag
      parameters:
      - name: tagId
        in: path
        required: true
        description: Tag ID you want to remove. It can be obtained with the "Get a list of contact tags" method
        schema:
          type: integer
      responses:
        '204':
          description: Successfully deleted
      operationId: deleteContactTag
      x-ai-role: crm_data_manager
      x-ai-description: Permanently removes a contact tag from the account. Tags are used to categorize and segment contacts — deleting a tag removes it from all contacts it was applied to, which may affect segment-based automations or filters that rely on this tag.
      x-ai-reasoning-instructions:
      - Before deleting, verify the tag exists using 'Get a list of contact tags' to obtain the correct tagId.
      - Warn the user that this action is irreversible — the tag will be unlinked from all contacts.
      - Check if the tag is used in any active automations or audience segments before proceeding.
      - If the user provides a tag name instead of an ID, resolve the ID first via the tag list endpoint.
      x-ai-responding-instructions:
      - Confirm successful deletion by noting the tagId that was removed (204 returns no body).
      - Remind the user that contacts previously assigned this tag are no longer tagged — segments or automations using it may behave differently.
      - If a 404 is returned, clarify that the tag may have already been deleted or the ID is incorrect.
      x-ai-capabilities:
        confirmation:
          type: Required
          message: This will permanently delete the tag and remove it from all associated contacts. This action cannot be undone.
        security_info:
          data_handling:
          - IrreversibleDelete
          - CascadingEffect
components:
  schemas:
    ContactTag:
      type: object
      properties:
        id:
          type: integer
          description: Tag ID
        name:
          type: string
          description: Tag name
        colorText:
          type: string
        colorBackground:
          type: string
        contactCount:
          type: integer
          description: Number of contacts associated with the tag
        taskCount:
          type: integer
          description: Number of tasks associated with a tag
  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.

        '