Birdeye Contact V2 API

Easily manage contacts across multiple locations using enhanced Contact APIs, featuring built-in support for communication preference flags.

Operations 5

POST /v1/contact/external/preferences/saveCustomer Upsert Contact #
POST /v1/contact/external/preferences/getCustomer Retrieve Contact #
POST /v1/contact/external/preferences/checkin Customer Checkin #
POST /v1/contact/external/preferences/change-permission Update Communication Preferences #
POST /v1/contact/external/preferences/update-feed Retrieve Opted-Out Contacts #

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/birdeye-contact-v2-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

birdeye-contact-v2-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Birdeye Contact V2 API
  version: '1.0'
  description: 'Operations tagged Contact V2 across 2 of this provider''s published API definitions: birdeye-birdeye-api-openapi.yml, birdeye-openapi-original.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.birdeye.com
  description: Production
- url: https://api.birdeye.com/resources
tags:
- name: Contact V2
  description: Easily manage contacts across multiple locations using enhanced Contact APIs, featuring built-in support for communication preference flags.
paths:
  /v1/contact/external/preferences/saveCustomer:
    post:
      summary: Upsert Contact
      operationId: upsert-contact
      tags:
      - Contact V2
      parameters: []
      responses:
        '200':
          description: HTTP 200 response
          content:
            application/json:
              schema:
                type: object
                example:
                  code: 5043
                  message: Contact not found for the given request
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $schema: http://json-schema.org/draft-07/schema#
              type: object
              properties:
                id:
                  type: string
                firstName:
                  type: string
                lastName:
                  type: string
                email:
                  type: string
                phone:
                  type: string
                countryCode:
                  type: string
                smsOptin:
                  type: boolean
                blocked:
                  type: boolean
                businessIds:
                  type: array
                tags:
                  type: array
                customFields:
                  type: array
                externalId:
                  type: string
                emailPreferences:
                  type: object
                  properties:
                    marketingOptin:
                      type: boolean
                    feedbackOptin:
                      type: boolean
                    serviceOptin:
                      type: boolean
                smsPreferences:
                  type: object
                  properties:
                    marketingOptin:
                      type: boolean
                    feedbackOptin:
                      type: boolean
                    serviceOptin:
                      type: boolean
      security:
      - apiKey: []
    servers:
    - url: https://api.birdeye.com
      description: Production
  /v1/contact/external/preferences/getCustomer:
    post:
      summary: Retrieve Contact
      operationId: retrieve-contact
      tags:
      - Contact V2
      parameters: []
      responses:
        '200':
          description: HTTP 200 response
          content:
            application/json:
              schema:
                type: object
                example:
                  code: 5043
                  message: Contact not found for the given request
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $schema: http://json-schema.org/draft-07/schema#
              type: object
              properties:
                id:
                  type: string
                cid:
                  type: string
                email:
                  type: string
                phone:
                  type: string
      security:
      - apiKey: []
    servers:
    - url: https://api.birdeye.com
      description: Production
  /v1/contact/external/preferences/checkin:
    post:
      summary: Customer Checkin
      operationId: customer-checkin
      tags:
      - Contact V2
      parameters: []
      responses:
        '200':
          description: HTTP 200 response
          content:
            application/json:
              schema:
                type: object
                example:
                  code: 1175
                  message: No business found with the given id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $schema: http://json-schema.org/draft-07/schema#
              type: object
              properties:
                name:
                  type: string
                emailId:
                  type: string
                phone:
                  type: string
                smsEnabled:
                  type: number
                additionalParams:
                  type: object
                employees:
                  type: array
                externalId:
                  type: string
                emailPreferences:
                  type: object
                  properties:
                    marketingOptin:
                      type: boolean
                    feedbackOptin:
                      type: boolean
                    serviceOptin:
                      type: boolean
                smsPreferences:
                  type: object
                  properties:
                    marketingOptin:
                      type: boolean
                    feedbackOptin:
                      type: boolean
                    serviceOptin:
                      type: boolean
      security:
      - apiKey: []
    servers:
    - url: https://api.birdeye.com
      description: Production
  /v1/contact/external/preferences/change-permission:
    post:
      summary: Update Communication Preferences
      operationId: update-communication-preferences
      tags:
      - Contact V2
      parameters: []
      responses:
        '200':
          description: HTTP 200 response
          content:
            application/json:
              schema:
                type: object
                example:
                  code: 1089
                  message: Customer id is invalid.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $schema: http://json-schema.org/draft-07/schema#
              type: object
              properties:
                emailPreferences:
                  type: object
                  properties:
                    marketingOptin:
                      type: boolean
                    feedbackOptin:
                      type: boolean
                    serviceOptin:
                      type: boolean
                smsPreferences:
                  type: object
                  properties:
                    marketingOptin:
                      type: boolean
                    feedbackOptin:
                      type: boolean
                    serviceOptin:
                      type: boolean
                smsOptin:
                  type: boolean
                email:
                  type: array
                phone:
                  type: array
                accountNumber:
                  type: number
              required:
              - accountNumber
      security:
      - apiKey: []
    servers:
    - url: https://api.birdeye.com
      description: Production
  /v1/contact/external/preferences/update-feed:
    post:
      summary: Retrieve Opted-Out Contacts
      operationId: retrieve-opted-out-contacts
      tags:
      - Contact V2
      parameters: []
      responses:
        '200':
          description: HTTP 200 response
          content:
            application/json:
              schema:
                type: object
                example:
                  code: 20083
                  message: End date can't be before start date
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $schema: http://json-schema.org/draft-07/schema#
              type: object
              properties:
                start:
                  type: number
                end:
                  type: number
                subscriptionStatus:
                  type: array
              required:
              - start
              - end
              - subscriptionStatus
      security:
      - apiKey: []
    servers:
    - url: https://api.birdeye.com
      description: Production
components:
  schemas:
    1167Model:
      type: object
      properties:
        code:
          type: number
        message:
          type: string
      example:
        code: 1167
        message: API key is missing
    1011Model:
      type: object
      properties:
        code:
          type: number
        message:
          type: string
      example:
        code: 1011
        message: Business id is invalid
    1033Model:
      type: object
      properties:
        code:
          type: number
        message:
          type: string
      example:
        code: 1033
        message: You are not authorized to perform this action
    1087Model:
      type: object
      properties:
        code:
          type: number
        message:
          type: string
      example:
        code: 1087
        message: Customer email id is invalid.
    1089Model:
      type: object
      properties:
        code:
          type: number
        message:
          type: string
      example:
        code: 1089
        message: Customer id is invalid.
    1142Model:
      type: object
      properties:
        code:
          type: number
        message:
          type: string
      example:
        code: 1142
        message: Customer name cannot be blank
    Apiary_retrieveOptedOutContacts_Response200:
      type: object
      properties:
        emailOptOut:
          type: array
          description: All the contacts grouped under this field, which were opted out from email in the given duration
          items:
            type: object
            properties:
              id:
                type: number
                description: id of the enterprise customer.
              firstName:
                type: string
                description: First name of the contact.
              lastName:
                type: string
                description: Last name of the contact.
              emailId:
                type: string
                description: EmailId of the contact, if exists.
              phone:
                type: string
                description: Phone number of the contact, if exists. Format is (xxx) xxx-xxxx.
              optOutFrom:
                type: array
                items: {}
                description: Categories from which the contact has opted out (e.g., marketing, feedback, service).
        textOptOut:
          type: array
          description: All the contacts grouped under this field, which were opted out from text in the given duration
          items:
            type: object
            properties:
              id:
                type: number
                description: id of the enterprise customer.
              firstName:
                type: string
                description: First name of the contact.
              lastName:
                type: string
                description: Last name of the contact.
              emailId:
                type: string
                description: EmailId of the contact, if exists.
              phone:
                type: string
                description: Phone number of the contact, if exists. Format is (xxx) xxx-xxxx.
              optOutFrom:
                type: array
                items: {}
                description: Categories from which the contact has opted out (e.g., marketing, feedback, service).
        blocked:
          type: array
          description: All the contacts grouped under this field, which were blockedl in the given duration.
          items:
            type: object
            properties:
              id:
                type: number
                description: id of the enterprise customer.
              firstName:
                type: string
                description: First name of the contact.
              lastName:
                type: string
                description: Last name of the contact.
              emailId:
                type: string
                description: EmailId of the contact, if exists.
              phone:
                type: string
                description: Phone number of the contact, if exists. Format is (xxx) xxx-xxxx.
              optOutFrom:
                type: array
                items: {}
                description: Categories from which the contact has opted out (e.g., marketing, feedback, service).
    1170Model:
      type: object
      properties:
        code:
          type: number
        message:
          type: string
      example:
        code: 1170
        message: SMS Alert flag is invalid. Valid values are 0 or 1.
    5043Model:
      type: object
      properties:
        code:
          type: number
        message:
          type: string
      example:
        code: 5043
        message: Contact not found for the given request
    1175Model:
      type: object
      properties:
        code:
          type: number
        message:
          type: string
      example:
        code: 1175
        message: No business found with the given id
    1161Model:
      type: object
      properties:
        code:
          type: number
        message:
          type: string
      example:
        code: 1161
        message: Invalid API key
    1532Model:
      type: object
      properties:
        code:
          type: number
        message:
          type: string
      example:
        code: 1532
        message: Business id is missing or invalid.
    1086Model:
      type: object
      properties:
        code:
          type: number
        message:
          type: string
      example:
        code: 1086
        message: Customer email id cannot be blank.
    5008Model:
      type: object
      properties:
        code:
          type: number
        message:
          type: string
      example:
        code: 5008
        message: RequestBody not found
    Apiary_retrieveContact_Response200:
      type: object
      properties:
        id:
          type: string
          description: Id of enterprise customer.
        firstName:
          type: string
          description: First name of the customer.
        lastName:
          type: string
          description: Last name of the customer.
        email:
          type: string
          description: Email of customer, optional (if phone is provided).
        phone:
          type: string
          description: Phone of customer optional (if email is provided).
        countryCode:
          type: string
          description: Country code of the phone number. Default value=US, Other Possible values=AU,CA,MX,PR,VI
        smsOptin:
          type: boolean
          description: SMS Opting flag.
        mappings:
          type: array
          description: List of locations where customer is mapped. If requested by cid, only that location's mapping is returned.
          items:
            type: object
            properties:
              cid:
                type: number
                description: Customer location id.
              location:
                type: string
                description: Name of the location.
              bid:
                type: number
                description: Location id.
              businessNumber:
                type: number
                description: Location Number.
        tags:
          type: string
          description: List of tags.
        customFields:
          type: array
          description: List of Custom fields.
          items:
            type: object
            properties:
              fieldName:
                type: string
                description: Field name.
              type:
                type: string
                description: Field type.
              fieldValue:
                type: string
                description: Value of field.
        externalId:
          type: string
          description: Unique external identifier of the contact which could be from the CRM or any external system storing your contacts.
        emailPreferences:
          type: object
          properties:
            marketingOptin:
              type: boolean
              description: Marketing communication.
            feedbackOptin:
              type: boolean
              description: Feedback communication.
            serviceOptin:
              type: boolean
              description: Service communication.
          description: Email communication preference flags.
        smsPreferences:
          type: object
          properties:
            marketingOptin:
              type: boolean
              description: Marketing communication.
            feedbackOptin:
              type: boolean
              description: Feedback communication.
            serviceOptin:
              type: boolean
              description: Service communication.
          description: SMS communication preference flags.
    20083Model:
      type: object
      properties:
        code:
          type: number
        message:
          type: string
      example:
        code: 20083
        message: End date can't be before start date
    Apiary_customerCheckinPost_Request:
      type: object
      properties:
        name:
          type: string
          description: Name of the customer.
        emailId:
          type: string
          description: Email ID of the customer (optional If business has enabled for sms, then either email or phone will be required).
        phone:
          type: string
          description: Phone number of the customer (optional If business has enabled for sms, then either email or phone will be required).
        smsEnabled:
          type: number
          description: Whether customer has opted to receive SMS request or not. Valid values are 0(false), 1(true). Default is 1.
        additionalParams:
          type: object
          properties: {}
          description: Custom tags can be added as key value pair.
        employees:
          type: array
          items:
            type: object
            properties:
              emailId:
                type: string
                description: Email Id of assisted Employee.
        externalId:
          type: string
          description: Unique external identifier of the contact which could be from the CRM or any external system storing your contacts.
        emailPreferences:
          type: object
          properties:
            marketingOptin:
              type: boolean
              description: Marketing communication.
            feedbackOptin:
              type: boolean
              description: Feedback communication.
            serviceOptin:
              type: boolean
              description: Service communication.
          description: Email communication preference flags.
        smsPreferences:
          type: object
          properties:
            marketingOptin:
              type: boolean
              description: Marketing communication.
            feedbackOptin:
              type: boolean
              description: Feedback communication.
            serviceOptin:
              type: boolean
              description: Service communication.
          description: SMS communication preference flags.
      example:
        name: Steve Smith
        emailId: steves@abcd.com
        phone: 408-xxx-xxxx
        smsEnabled: 1
        additionalParams:
          Tag Group Name 1: Tag Name 1
          Tag Group Name 2: Tag Name 2
          location: New York
        employees:
        - emailId: sshikha@abcd.com
        externalId: ABC123
        emailPreferences:
          marketingOptin: true
          feedbackOptin: true
          serviceOptin: true
        smsPreferences:
          marketingOptin: true
          feedbackOptin: true
          serviceOptin: true
    89Model:
      type: object
      properties:
        code:
          type: number
        message:
          type: string
      example:
        code: 89
        message: Rate limit exceeded
    1055Model:
      type: object
      properties:
        code:
          type: number
        message:
          type: string
      example:
        code: 1055
        message: Not a valid US phone number.
    Apiary_upsertContact_Request:
      type: object
      properties:
        id:
          type: string
          description: Id of enterprise customer.
        firstName:
          type: string
          description: First name of the customer.
        lastName:
          type: string
          description: Last name of the customer.
        email:
          type: string
          description: Email of customer, optional (if phone is provided).
        phone:
          type: string
          description: Phone of customer optional (if email is provided).
        countryCode:
          type: string
          description: Country code of the phone number. Default value=US, Other Possible values=AU,CA,MX,PR,VI
        smsOptin:
          type: boolean
          description: SMS Opt flag.
        blocked:
          type: boolean
          description: Contact block flag.
        businessIds:
          type: array
          description: Business Ids under enterprise account. The Business Ids field is mandatory while creating a new contact. While updating, if no business Ids are provided, the same location mappings are retained.
          items: {}
        tags:
          type: array
          description: List of tags
          items: {}
        customFields:
          type: array
          description: List of Custom fields. We currently support 4 types of customfields - text, number, currency, date (in formats - “MM/dd/yyyy” and "MM-dd-yyyy" only), and yes or no (1:"yes", 0:"no").
          items:
            type: object
            properties:
              fieldName:
                type: string
                description: Field name.
              type:
                type: string
                description: Field type.
              fieldValue:
                type: string
                description: Value of field.
        externalId:
          type: string
          description: Unique external identifier of the contact which could be from the CRM or any external system storing your contacts.
        emailPreferences:
          type: object
          properties:
            marketingOptin:
              type: boolean
              description: Marketing communication.
            feedbackOptin:
              type: boolean
              description: Feedback communication.
            serviceOptin:
              type: boolean
              description: Service communication.
          description: Email communication preference flags.
        smsPreferences:
          type: object
          properties:
            marketingOptin:
              type: boolean
              description: Marketing communication.
            feedbackOptin:
              type: boolean
              description: Feedback communication.
            serviceOptin:
              type: boolean
              description: Service communication.
          description: SMS communication preference flags.
      example:
        id: 115339282
        firstName: Michael
        lastName: Scott
        email: michael@test.com
        phone: (212) xxx-xxxx
        countryCode: US
        smsOptin: true
        blocked: false
        businessIds:
        - 161458406365307
        - 161072537475129
        tags:
        - Tag One
        - Tag Two
        customFields:
        - fieldName: Company
          type: text
          fieldValue: Dunder Mifflin
        - fieldName: Product
          type: text
          fieldValue: Paper
        externalId: ABC123
        emailPreferences:
          marketingOptin: true
          feedbackOptin: true
          serviceOptin: true
        smsPreferences:
          marketingOptin: true
          feedbackOptin: true
          serviceOptin: true
    1088Model:
      type: object
      properties:
        code:
          type: number
        message:
          type: string
      example:
        code: 1088
        message: Customer email id cannot be more than 40 characters.
  requestBodies:
    Get_opt-out_contact_dataBody:
      content:
        application/json:
          schema:
            type: object
            properties:
              start:
                type: number
                description: The start date format should be in milliseconds. If the start date is not set and the end date is provided, we will fetch data for 24 hours before the end date. If both are not provided, the latest 24 hours data will be fetched.
              end:
                type: number
                description: The end date format should be in milliseconds. If the end date is not set and the start date is provided, we will fetch data for 24 hours after the start date. If both are not provided, the latest 24 hours data will be fetched.
              subscriptionStatus:
                type: array
                description: Type of subscription update feed we want the data for. Like opted-out to get email and text optouts, and blocked for contacts getting blocked. If not provided, only opted-out updates will be returned, by default.
                items: {}
            required:
            - start
            - end
            - subscriptionStatus
            example:
              end: 1693657040000
              start: 1693570640000
              subscriptionStatus:
              - blocked
              - opted-out
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: Partner specific API key provided by Birdeye for data exchange.
x-refined-from:
- birdeye-birdeye-api-openapi.yml
- birdeye-openapi-original.yml