Sonar Customers API

The Customers API from Sonar — 7 operation(s) for customers.

Operations 9

GET /v1/customers GET Customer #
POST /v1/customers Add/Update Customer #
POST /v1/customers/close Close Customer #
POST /v1/customers/follow_ups Follow-Up Endpoint #
DELETE /v1/customers/follow_ups Remove Follow-Up #
GET /v1/customers/personal_data?token=company_private_token&phone_number=contact_phone_number GDPR GET Request #
DELETE /v1/customers/personal_data?token=your_private_token&phone_number=contact_phone_number GDPR DELETE Request #
DELETE /v1/customers/properties DELETE Customer Properties #
POST /v1/customers/unassign Unassign Agent #

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/sendsonar-com:sendsonar-com-customers-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 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 Specification

sendsonar-com-customers-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Settings Customers API
  version: '1.0'
servers:
- url: https://www.sendsonar.com/api
security:
- sec0: []
  sec1: []
tags:
- name: Customers
paths:
  /v1/customers:
    get:
      summary: GET Customer
      description: ''
      operationId: get-customer
      parameters:
      - name: phone_number
        in: query
        description: The unique phone number of the customer you want to retrieve.
        required: true
        schema:
          type: string
          default: '+13105551234'
      - name: token
        in: query
        description: Your private API token for your account.
        required: true
        schema:
          type: string
      - name: email
        in: query
        description: The email address of the customer you want to retrieve.
        schema:
          type: string
      - name: customer_id
        in: query
        description: The unique ID of the customer you want to retrieve.
        schema:
          type: string
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n  \"phone_number\": \"+13105551234\",\n  \"email\": \"matt@sendsonar.com\",\n  \"first_name\": \"Matthew\",\n  \"last_name\": \"Berman\",\n  \"subscribed\": true,\n  \"unsubscribed_at\": null,\n  \"public_id\": \"4092e34b-a5bc-4b89-8268-7370ff47c3c2\",\n  \"external_id\": null,\n  \"properties\": {\n   \t\"cool_dude\": \"TRUE\"\n   },\n  \"assigned_phone_number\": \"+14155558888\",\n  \"assignee\": null,\n  \"doubly_opted_in\": false,\n  \"team_names\": []\n}"
              schema:
                type: object
                properties:
                  phone_number:
                    type: string
                    example: '+13105551234'
                  email:
                    type: string
                    example: matt@sendsonar.com
                  first_name:
                    type: string
                    example: Matthew
                  last_name:
                    type: string
                    example: Berman
                  subscribed:
                    type: boolean
                    example: true
                    default: true
                  unsubscribed_at: {}
                  public_id:
                    type: string
                    example: 4092e34b-a5bc-4b89-8268-7370ff47c3c2
                  external_id: {}
                  properties:
                    type: object
                    properties:
                      cool_dude:
                        type: string
                        example: 'TRUE'
                  assigned_phone_number:
                    type: string
                    example: '+14155558888'
                  assignee: {}
                  doubly_opted_in:
                    type: boolean
                    example: false
                    default: true
                  team_names:
                    type: array
                    items:
                      type: object
                      properties: {}
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
                type: object
                properties: {}
      deprecated: false
      x-readme:
        code-samples:
        - language: html
          code: https://www.sendsonar.com/api/v1/customers?token=your_private_token&phone_number=3105551234
        samples-languages:
        - html
      tags:
      - Customers
    post:
      summary: Add/Update Customer
      description: ''
      operationId: addupdate-customer
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - phone_number
              properties:
                phone_number:
                  type: string
                  description: The phone number of the customer you want to add. This is the unique identifier for a customer.
                  default: '+13105551234'
                email:
                  type: string
                  description: Email address of the customer.
                first_name:
                  type: string
                  description: First name of the customer.
                last_name:
                  type: string
                  description: Last name of the customer.
                properties:
                  type: object
                  description: Add as many properties as you want for each customer, in hash format.
                  properties: {}
                picture_url:
                  type: string
                  description: Link to the customer's picture so you can see their picture whe replying to them
                  default: http://where_the_pics_live.com/the_bermanator.png
                subscribed:
                  type: boolean
                  description: Whether the customer will receive API Messages and Mass Messages.
                  default: false
                assign:
                  type: string
                  description: 'Assign the customer to the team member (user) specified by their email. {"user_email": "john@company.com"}'
                  format: json
                zipcode:
                  type: string
                  description: Specific Zipcode of the contact
                  default: '90210'
                timezone:
                  type: string
                  description: State the timezone your contact is in
                  default: America/Los_Angeles
                external_id:
                  type: string
                  description: 'OPTIONAL:  Represents an ID from a system external to Sonar'
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n  \"phone_number\": \"+13105551234\",\n  \"email\": \"matt@sendsonar.com\",\n  \"first_name\": \"Matthew\",\n  \"last_name\": \"Berman\",\n  \"picture_url\": \"http://where_the_pics_live.com/the_bermanator.png\",\n  \"subscribed\": true,\n  \"properties\": {\n    \"great_customer\": \"true\"\n  }\n}"
              schema:
                type: object
                properties:
                  phone_number:
                    type: string
                    example: '+13105551234'
                  email:
                    type: string
                    example: matt@sendsonar.com
                  first_name:
                    type: string
                    example: Matthew
                  last_name:
                    type: string
                    example: Berman
                  picture_url:
                    type: string
                    example: http://where_the_pics_live.com/the_bermanator.png
                  subscribed:
                    type: boolean
                    example: true
                    default: true
                  properties:
                    type: object
                    properties:
                      great_customer:
                        type: string
                        example: 'true'
        '201':
          description: '201'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n  \"phone_number\": \"+13105551234\",\n  \"email\": \"matt@sendsonar.com\",\n  \"first_name\": \"Matthew\",\n  \"last_name\": \"Berman\",\n  \"picture_url\": \"http://where_the_pics_live.com/the_bermanator.png\",\n  \"subscribed\": true,\n  \"properties\": {\n    \"great_customer\": \"true\"\n  }\n}"
              schema:
                type: object
                properties:
                  phone_number:
                    type: string
                    example: '+13105551234'
                  email:
                    type: string
                    example: matt@sendsonar.com
                  first_name:
                    type: string
                    example: Matthew
                  last_name:
                    type: string
                    example: Berman
                  picture_url:
                    type: string
                    example: http://where_the_pics_live.com/the_bermanator.png
                  subscribed:
                    type: boolean
                    example: true
                    default: true
                  properties:
                    type: object
                    properties:
                      great_customer:
                        type: string
                        example: 'true'
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
                type: object
                properties: {}
      deprecated: false
      x-readme:
        code-samples:
        - language: curl
          code: "curl 'https://www.sendsonar.com/api/v1/customers' \\\n  -X POST \\\n  -H 'X-Token:XXXXXXXXXXXXXXXXXXXXX' \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"phone_number\": \"+13105551234\", \"email\": \"matt@sendsonar.com\", \"first_name\": \"Matthew\", \"last_name\": \"Berman\", \"picture_url\": \"http://where_the_pics_live.com/the_bermanator.png\", \"assign\": {\"user_email\": \"john@company.com\"}, \"properties\": {\"great_customer\": \"true\"}, \"external_id\": \"12345\"}'"
        samples-languages:
        - curl
      tags:
      - Customers
  /v1/customers/close:
    post:
      summary: Close Customer
      description: ''
      operationId: close-customer
      parameters:
      - name: X-Token
        in: header
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - phone_number
              properties:
                phone_number:
                  type: string
                  description: The phone number of the customer you want to close.
                  default: '+13105551234'
      responses:
        '201':
          description: '201'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n\t\"success\":true\n}"
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                    default: true
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
                type: object
                properties: {}
      deprecated: false
      x-readme:
        code-samples:
        - language: curl
          code: "curl 'https://www.sendsonar.com/api/v1/customers/close' \\\n  -X POST \\\n  -H 'X-Token:XXXXXXXXXXXXXXXXXXXXX' \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"phone_number\": \"+13105551234\"}'"
        samples-languages:
        - curl
      tags:
      - Customers
  /v1/customers/follow_ups:
    post:
      summary: Follow-Up Endpoint
      description: ''
      operationId: follow-up-endpoint
      parameters:
      - name: token
        in: header
        description: Sonar Account Private Key
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                phone_number:
                  type: string
                  description: Phone Number of the contact
                  default: '+12223334444'
                follow_up_strategy_id:
                  type: string
                  description: ID of the specific follow-up to attach to the given customer
                  default: XXXX-XXXX-XXXX-XXXX
      responses:
        '201':
          description: '201'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n    \"message\": \"Successfully attached follow-up to customer\",\n    \"customer_id\": \"ed726e4b-xxxx-406d-xxxx-46874acex9bf\",\n    \"follow_up_id\": \"xxxxxxxx-2cc8-xxxx-a03a-67931xe3c16e\"\n}"
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Successfully attached follow-up to customer
                  customer_id:
                    type: string
                    example: ed726e4b-xxxx-406d-xxxx-46874acex9bf
                  follow_up_id:
                    type: string
                    example: xxxxxxxx-2cc8-xxxx-a03a-67931xe3c16e
        '400':
          description: '400'
          content:
            application/json:
              examples:
                No Follow-up Id:
                  value: "{\n    \"error\": \"Follow-up strategy with this ID cannot be found: \"\n}"
                No Customer Provided:
                  value: "{\n    \"error\": \"That customer cannot be found\"\n}"
              schema:
                oneOf:
                - title: No Follow-up Id
                  type: object
                  properties:
                    error:
                      type: string
                      example: 'Follow-up strategy with this ID cannot be found: '
                - title: No Customer Provided
                  type: object
                  properties:
                    error:
                      type: string
                      example: That customer cannot be found
        '401':
          description: '401'
          content:
            application/json:
              examples:
                Unauthorized:
                  value: "{\n    \"error\": \"Token or publishable_key not found\"\n}"
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Token or publishable_key not found
      deprecated: false
      tags:
      - Customers
    delete:
      summary: Remove Follow-Up
      description: ''
      operationId: remove-follow-up
      parameters:
      - name: X-Token
        in: header
        description: Your Sonar Account's private token
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - phone_number
              - follow_up_strategy_id
              properties:
                phone_number:
                  type: string
                  description: Phone Number of the customer you want to cancel a Follow-Up for
                follow_up_strategy_id:
                  type: string
                  description: Specific Follow-Up strategy id that you wish to cancel for your giving customer
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n    \"message\": \"Successfully removed follow-up from customer\",\n    \"customer_id\": \"XXX6f63f-d596-4de3-9725-abb51663fXXX\",\n    \"follow_up_id\": \"XXX81af3-4baf-BBBB-9f2d-XXXX5cdbbf85\"\n}"
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Successfully removed follow-up from customer
                  customer_id:
                    type: string
                    example: XXX6f63f-d596-4de3-9725-abb51663fXXX
                  follow_up_id:
                    type: string
                    example: XXX81af3-4baf-BBBB-9f2d-XXXX5cdbbf85
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n    \"error\": \"Follow-up strategy with this ID cannot be found: CAA\"\n}"
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: 'Follow-up strategy with this ID cannot be found: CAA'
        '500':
          description: '500'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n    \"error\": \"Internal error, we have been notified.\"\n}"
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Internal error, we have been notified.
      deprecated: false
      tags:
      - Customers
  /v1/customers/personal_data?token=company_private_token&phone_number=contact_phone_number:
    get:
      summary: GDPR GET Request
      description: ''
      operationId: gdpr-get-request
      parameters:
      - name: token
        in: query
        description: Optional. See Authentication section above
        schema:
          type: string
      - name: phone_number
        in: query
        description: Optional
        schema:
          type: string
      - name: external_id
        in: query
        description: Optional. Customer ID from a system external to Sonar
        schema:
          type: string
      - name: email
        in: query
        description: Optional. Customer email
        schema:
          type: string
      - name: customer_id
        in: query
        description: Optional. The public id of a customer found. Public id can be obtained from the response to a GET Customer request or from custom webhook payloads
        schema:
          type: string
      - name: destination_email
        in: query
        description: Optional. The email address where personal information and message data will be sent in .csv format. If `destination_email` is omitted from the request, data is provided in the response body
        schema:
          type: string
      - name: X-Token
        in: header
        description: Optional. See Authentication section above
        schema:
          type: string
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n  {\n    \"status\": \"complete\",\n    \"customer_data\": {\n      \"customer_phone_number\": \"+12085555835\",\n      \"email\": \"help@sendsonar.com\",\n      \"first_name\": \"Nic\",\n      \"last_name\": \"Bahoogaman\"\n    },\n    \"message_data\": [\n      {\n        \"to_phone_number\": \"+12085555835\",\n        \"from_phone_number\": \"+15556200755\",\n        \"media_url\": null,\n        \"text\": \"Hello Nic, I'm a sales rep responding to your request. How can I help?\",\n        \"created_at\": \"2022-04-08T11:45:01-07:00\"\n      }\n    ]\n  }\n}"
        '404':
          description: '404'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n    \"error\": \"Sorry, we couldn't find a customer with that phone number.\"\n}"
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Sorry, we couldn't find a customer with that phone number.
      deprecated: false
      x-readme:
        code-samples:
        - language: curl
          code: curl "https://www.sendsonar.com/api/v1/customers/personal_data?token=company_private_token&phone_number=contact_phone_number"
        samples-languages:
        - curl
      tags:
      - Customers
  /v1/customers/personal_data?token=your_private_token&phone_number=contact_phone_number:
    delete:
      summary: GDPR DELETE Request
      description: ''
      operationId: gdpr-delete-request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                phone_number:
                  type: string
                  description: The phone number of the customer you want to delete. This is the unique identifier for a customer.
                  default: '+13105551234'
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n    \"status\": \"queued\",\n    \"message\": \"Your customer data delete request is currently being processed\"\n}"
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: queued
                  message:
                    type: string
                    example: Your customer data delete request is currently being processed
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
                type: object
                properties: {}
      deprecated: false
      x-readme:
        code-samples:
        - language: text
          code: "curl 'https://www.sendsonar.com/api/v1/customers/personal_data' \\\n   -X DELETE \\\n   -H 'X-Token:XXXXXXXXXXXXXXXXXXXXX' \\\n   -H \"Content-Type: application/json\" \\\n   -d '{\"phone_number\": \"+13105551234\" }'"
        samples-languages:
        - text
      tags:
      - Customers
  /v1/customers/properties:
    delete:
      summary: DELETE Customer Properties
      description: ''
      operationId: delete-customer-properties
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - property_name
              properties:
                phone_number:
                  type: string
                  description: The phone number of the customer you want to modify. This is the unique identifier for a customer. Required only if you're not including the email parameter.
                  default: '+13105551234'
                email:
                  type: string
                  description: Email address of the customer. Required only if you're not including the phone_number parameter.
                property_name:
                  type: string
                  description: The exact name of the property you'd like to delete for the customer
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: '{ "phone_number": "+13105551234","email": "matt@sendsonar.com", "property_name": "delete_me", "deleted": true }'
              schema:
                type: object
                properties:
                  phone_number:
                    type: string
                    example: '+13105551234'
                  email:
                    type: string
                    example: matt@sendsonar.com
                  property_name:
                    type: string
                    example: delete_me
                  deleted:
                    type: boolean
                    example: true
                    default: true
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
                type: object
                properties: {}
      deprecated: false
      x-readme:
        code-samples:
        - language: curl
          code: "curl 'https://www.sendsonar.com/api/v1/customers/properties' \\\n   -X DELETE \\\n   -H 'X-Token:XXXXXXXXXXXXXXXXXXXXX' \\\n   -H \"Content-Type: application/json\" \\\n   -d '{\"phone_number\": \"+13105551234\", \"email\": \"matt@sendsonar.com\", \"property_name\": \"delete_me\"}'"
        samples-languages:
        - curl
      tags:
      - Customers
  /v1/customers/unassign:
    post:
      summary: Unassign Agent
      description: ''
      operationId: unassign-agent
      parameters:
      - name: token
        in: header
        description: Your private API token for your account
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                phone_number:
                  type: string
                  description: The unique phone number of the customer you want to unassign a rep from
                  default: '+12223334444'
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n    \"success\": true\n}"
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                    default: true
        '404':
          description: '404'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n    \"error\": \"Sorry, we couldn't find a customer with that phone number.\"\n}"
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Sorry, we couldn't find a customer with that phone number.
      deprecated: false
      tags:
      - Customers
components:
  securitySchemes:
    sec0:
      type: apiKey
      name: X-Token
      in: header
      x-default: ''
    sec1:
      type: apiKey
      name: token
      in: query
      x-default: ''
x-readme-fauxas: true
x-provenance:
  method: searched
  source: https://docs.sendsonar.com/reference
  harvested: '2026-10-25'
  tool: harvest-readme-openapi.py
  note: Assembled verbatim from the OpenAPI definition ReadMe embeds in each operation page of the provider's developer portal; paths and components merged by API title, nothing authored.
  assembled_from:
  - https://docs.sendsonar.com/reference/addupdate-customer.md
  - https://docs.sendsonar.com/reference/append-tag-to-message.md
  - https://docs.sendsonar.com/reference/available-phone-number.md
  - https://docs.sendsonar.com/reference/close-customer.md
  - https://docs.sendsonar.com/reference/create-new-role-permission.md
  - https://docs.sendsonar.com/reference/create-new-sonar-account.md
  - https://docs.sendsonar.com/reference/create-webhook.md
  - https://docs.sendsonar.com/reference/delete-customer-properties.md
  - https://docs.sendsonar.com/reference/delete-webhooks.md
  - https://docs.sendsonar.com/reference/double-opt-in-prompt.md
  - https://docs.sendsonar.com/reference/events.md
  - https://docs.sendsonar.com/reference/follow-up-endpoint.md
  - https://docs.sendsonar.com/reference/gdpr-delete-request.md
  - https://docs.sendsonar.com/reference/gdpr-get-request.md
  - https://docs.sendsonar.com/reference/get-account-roles.md
  - https://docs.sendsonar.com/reference/get-all-users-from-account.md
  - https://docs.sendsonar.com/reference/get-conversation-by-id.md
  - https://docs.sendsonar.com/reference/get-customer.md
  - https://docs.sendsonar.com/reference/get-specific-user-by-id.md
  - https://docs.sendsonar.com/reference/get-webhook.md
  - https://docs.sendsonar.com/reference/invite-new-user.md
  - https://docs.sendsonar.com/reference/personalized-campaign.md
  - https://docs.sendsonar.com/reference/remove-follow-up.md
  - https://docs.sendsonar.com/reference/send-campaign.md
  - https://docs.sendsonar.com/reference/send-message.md
  - https://docs.sendsonar.com/reference/unassign-agent.md
  - https://docs.sendsonar.com/reference/update-webhook.md
  merge:
    pages: 27
    deduped: 52
    conflicts_kept_first: 0