ManyChat Subscriber API

Look up, search, create, update, tag and set custom field values on subscribers. 15 operations. A subscriber carries per-channel identity fields for Messenger, Instagram, WhatsApp, email and SMS on one record. Search operations are hard-capped at 100 results with no pagination or cursor, so a full result set is unreachable through the API when the cap is hit.

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/manychat-subscriber-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

manychat-subscriber-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: ManyChat Subscriber API
  description: 'The ManyChat Subscriber API, split by tag from the Swagger document ManyChat publishes at https://api.manychat.com/swagger
    (the underlying JSON is served from https://api.manychat.com/swagger/compileJson?type=Page_API). Authentication is an
    API key generated per page in Settings > API, sent as `Authorization: Bearer <page-id>:<api-key>`. Per-operation rate
    limits are published by ManyChat in each operation description. Operation IDs here are the readable API Evangelist refinement;
    the provider''s generated hash ID is preserved on each operation as `x-provider-operation-id`.'
  version: beta
  contact:
    name: ManyChat
    url: https://api.manychat.com/swagger
  x-source: https://api.manychat.com/swagger/compileJson?type=Page_API
  x-harvested: '2026-08-13'
servers:
- url: https://api.manychat.com
  description: Production. ManyChat publishes servers[] as an empty relative URL; the host is the one serving the Swagger
    document.
security:
- Bearer: []
tags:
- name: Subscriber
  description: Look up, create, update, tag and set custom fields on subscribers
paths:
  /fb/subscriber/getInfo:
    get:
      tags:
      - Subscriber
      summary: Get info
      description: 'Rate limit: 10 queries per second'
      operationId: getSubscriberInfo
      parameters:
      - name: subscriber_id
        in: query
        description: Get subscriber info.
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                properties:
                  status:
                    type: string
                    example: success
                  data:
                    $ref: '#/components/schemas/Subscriber'
                type: object
      security:
      - Bearer: []
      x-provider-operation-id: ae51a27b65b7ecf39438af38db0f27ba
  /fb/subscriber/findByName:
    get:
      tags:
      - Subscriber
      summary: Find by name
      description: 'Rate limit: 10 queries per second.

        This API method search subscribers by full name.

        List is limited by 100 subscribers.'
      operationId: findSubscriberByName
      parameters:
      - name: name
        in: query
        description: ''
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                properties:
                  status:
                    type: string
                    example: success
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Subscriber'
                    maxItems: 100
                type: object
      security:
      - Bearer: []
      x-provider-operation-id: e5c671d1661acff9be0e8bcfdd59f1e8
  /fb/subscriber/getInfoByUserRef:
    get:
      tags:
      - Subscriber
      summary: Get info by user ref
      operationId: getSubscriberByUserRef
      parameters:
      - name: user_ref
        in: query
        description: Ref of subscriber
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                properties:
                  status:
                    type: string
                    example: success
                  data:
                    $ref: '#/components/schemas/Subscriber'
                type: object
        '400':
          description: 'Possible error codes:

            2011 - User_ref isn''t registered

            2012 - User_ref has not been linked with subscriber_id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseErrorWithCode'
      security:
      - Bearer: []
      x-provider-operation-id: 782cc8abe7878dc73026b6bef44f14b2
  /fb/subscriber/findByCustomField:
    get:
      tags:
      - Subscriber
      summary: Find by custom field
      description: 'Rate limit: 10 queries per second.

        This API method only works with Text and Number types of Custom User Fields.

        Results are sorted by last Custom User Field value update for a specific user.

        List is limited by 100 elements.'
      operationId: findByCustomField
      parameters:
      - name: field_id
        in: query
        description: ''
        required: true
        schema:
          type: integer
      - name: field_value
        in: query
        description: ''
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                properties:
                  status:
                    type: string
                    example: success
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Subscriber'
                    maxItems: 100
                type: object
        '400':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
      - Bearer: []
      x-provider-operation-id: 9fc380dcb49bb134b9405d4269896f56
  /fb/subscriber/findBySystemField:
    get:
      tags:
      - Subscriber
      summary: Find by system field
      description: 'Rate limit: 50 queries per second.

        Set one parameter: Email OR Phone.'
      operationId: findBySystemField
      parameters:
      - name: email
        in: query
        description: 'E-Mail (example: test@manychat.com)'
        schema:
          type: string
      - name: phone
        in: query
        description: 'Phone number (example: +15400000000)'
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                properties:
                  status:
                    type: string
                    example: success
                  data:
                    $ref: '#/components/schemas/Subscriber'
                type: object
      security:
      - Bearer: []
      x-provider-operation-id: ef59064a933ef7464083a39c520a274b
  /fb/subscriber/addTag:
    post:
      tags:
      - Subscriber
      summary: Add tag to subscriber
      description: 'Rate limit: 10 queries per second'
      operationId: addTag
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - subscriber_id
              - tag_id
              properties:
                subscriber_id:
                  type: integer
                tag_id:
                  type: integer
              type: object
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseSuccess'
        '400':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
      - Bearer: []
      x-provider-operation-id: ee797ad59ec8545bed43add11390b165
  /fb/subscriber/addTagByName:
    post:
      tags:
      - Subscriber
      summary: Add tag to subscriber
      description: 'Rate limit: 10 queries per second'
      operationId: addTagByName
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - subscriber_id
              - tag_name
              properties:
                subscriber_id:
                  type: integer
                tag_name:
                  type: string
              type: object
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseSuccess'
        '400':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
      - Bearer: []
      x-provider-operation-id: 34ad004a12043ccbfee2faf1d290d30f
  /fb/subscriber/removeTag:
    post:
      tags:
      - Subscriber
      summary: Remove tag from subscriber
      description: 'Rate limit: 10 queries per second'
      operationId: removeSubscriberTag
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - subscriber_id
              - tag_id
              properties:
                subscriber_id:
                  type: integer
                tag_id:
                  type: integer
              type: object
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseSuccess'
        '400':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
      - Bearer: []
      x-provider-operation-id: 09f35f7c1e6013311f36e3965dec650c
  /fb/subscriber/removeTagByName:
    post:
      tags:
      - Subscriber
      summary: Remove tag from subscriber
      description: 'Rate limit: 10 queries per second'
      operationId: removeSubscriberTagByName
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - subscriber_id
              - tag_name
              properties:
                subscriber_id:
                  type: integer
                tag_name:
                  type: string
              type: object
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseSuccess'
        '400':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
      - Bearer: []
      x-provider-operation-id: 59cef9685d8978968b28376db0123be4
  /fb/subscriber/setCustomField:
    post:
      tags:
      - Subscriber
      summary: Set custom field
      description: 'Rate limit: 10 queries per second'
      operationId: setCustomField
      requestBody:
        description: 'Depending on the type of Custom User Field you will need to use one of the following type of data for
          "field_value".

          ***For example:***

          Text: "text" (string)

          Number: 123 or 1.23 (integer or float)

          Boolean: true or false (boolean)

          Date: "2018-07-18" (string)

          Date and time: "2018-07-02T00:00:00+00:00" (string)


          Data and time format for this API method is YYYY-MM-DDTHH:MM:SSP.  Where P is user’s timezone. For example May 1st
          2018 06:30:24 UTC+3:00 should be formatted as 2018-05-01T06:30:24+03:00'
        required: true
        content:
          application/json:
            schema:
              required:
              - subscriber_id
              - field_id
              - field_value
              properties:
                subscriber_id:
                  type: integer
                field_id:
                  type: integer
                field_value:
                  description: string, integer or boolean (see method description)
                  example: '''string'', 123, true, ''2018-07-18'', ''2018-07-02T00:00:00+00:00'''
              type: object
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseSuccess'
        '400':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
      - Bearer: []
      x-provider-operation-id: 81138a426b0903687848fdf8bdde6aa9
  /fb/subscriber/setCustomFields:
    post:
      tags:
      - Subscriber
      summary: Set custom fields
      description: 'Rate limit: 10 queries per second'
      operationId: setCustomFields
      requestBody:
        description: 'Set multiple custom fields for a single subscriber.

          The number of custom fields is limited to 20 for one request.

          Use **field_id** OR **field_name** to specify the field.

          ***For example:***


          ```"fields": [{"field_id": 77777777, "field_value": 555}, {"field_name": "count", "field_value": 12}]```'
        required: true
        content:
          application/json:
            schema:
              required:
              - subscriber_id
              - fields
              properties:
                subscriber_id:
                  type: integer
                fields:
                  type: array
                  items:
                    required:
                    - field_id
                    - field_name
                    - field_value
                    properties:
                      field_id:
                        type: integer
                      field_name:
                        type: string
                      field_value:
                        description: string, integer or boolean (see method description)
                        example: '''string'', 123, true, ''2018-07-18'', ''2018-07-02T00:00:00+00:00'''
                    type: object
                    additionalProperties: false
              type: object
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseSuccess'
        '400':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
      - Bearer: []
      x-provider-operation-id: 4d01076149250e9e47f3b8aa7dc53baa
  /fb/subscriber/setCustomFieldByName:
    post:
      tags:
      - Subscriber
      summary: Set custom field by name
      description: 'Rate limit: 10 queries per second'
      operationId: setCustomFieldByName
      requestBody:
        description: 'Depending on the type of Custom User Field you will need to use one of the following type of data for
          "field_value".

          ***For example:***

          Text: "text" (string)

          Number: 123 or 1.23 (integer or float)

          Boolean: true or false (boolean)

          Date: "2018-07-18" (string)

          Date and time: "2018-07-02T00:00:00+00:00" (string)


          Data and time format for this API method is YYYY-MM-DDTHH:MM:SSP.  Where P is user’s timezone. For example May 1st
          2018 06:30:24 UTC+3:00 should be formatted as 2018-05-01T06:30:24+03:00'
        required: true
        content:
          application/json:
            schema:
              required:
              - subscriber_id
              - field_name
              - field_value
              properties:
                subscriber_id:
                  type: integer
                field_name:
                  description: not case sensitive
                  type: string
                field_value:
                  description: string, integer or boolean (see method description)
                  example: '''string'', 123, true, ''2018-07-18'', ''2018-07-02T00:00:00+00:00'''
              type: object
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseSuccess'
        '400':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
      - Bearer: []
      x-provider-operation-id: adc69e1e87197b5f31c80403a3913468
  /fb/subscriber/verifyBySignedRequest:
    post:
      tags:
      - Subscriber
      summary: Verify by signed request
      description: 'Rate limit: 10 queries per second'
      operationId: verifyBySignedRequest
      requestBody:
        description: https://developers.facebook.com/docs/messenger-platform/webview/
        required: true
        content:
          application/json:
            schema:
              required:
              - subscriber_id
              - signed_request
              properties:
                subscriber_id:
                  type: integer
                signed_request:
                  type: string
                  example: _1SXnOuwXiUrcDRxI1D6Dvr55aiNusDNMxyHb8PQe7Y.eyJhbGdvcml0aG0iOiJIT2FDLVNIQTI1NiIsImNvbW11bml0eV9pZCI6bnVsbCwiaXNzdWVkX2F0IjoxNTU5MjE8NTQxLCJtZXRhZGF0YSI6bnVsbCwicGFnZV9pZCI6MjI4NjkwMDEyNDk2MTgxOSwicHNpZCI6IjIxNzI0OTkwNDI4Njc2MjIiLCJ0aHJlYWRfcGFydGljaXBhbnRfaWRzIjpudWxsLCJ0aHJlYWRfdHlwZSI6IlVTRVJfVE9fUEFHRSIsInRpZCI1IjIxNzI0OTkwNDI4Njc2MjIifQ
              type: object
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                properties:
                  status:
                    type: string
                    example: success
                type: object
      security:
      - Bearer: []
      x-provider-operation-id: b14c21e0143af0449cfc94e58731c5a8
  /fb/subscriber/createSubscriber:
    post:
      tags:
      - Subscriber
      summary: Create a Unified subscriber
      description: 'Rate limit: 10 queries per second'
      operationId: createSubscriber
      requestBody:
        description: ''
        required: true
        content:
          application/json:
            schema:
              properties:
                first_name:
                  description: First Name
                  type: string
                last_name:
                  description: Last Name
                  type: string
                phone:
                  description: Phone Number is required if Email and Whatsapp Phone properties are empty
                  type: string
                whatsapp_phone:
                  description: Whatsapp Phone Number is required if Email and Phone Number properties are empty
                  type: string
                email:
                  description: Email is required if Phone Number and Whatsapp Phone properties are empty
                  type: string
                gender:
                  description: Gender
                  type: string
                has_opt_in_sms:
                  description: Has opt-in SMS is required if property Phone Number is not empty
                  type: boolean
                has_opt_in_email:
                  description: Has opt-in Email is required if property Email is not empty
                  type: boolean
                consent_phrase:
                  description: Consent phrase is required if property `has_opt_in_sms` equal true
                  type: string
              type: object
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                properties:
                  status:
                    type: string
                    example: success
                  data:
                    $ref: '#/components/schemas/Subscriber'
                type: object
        '400':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
      - Bearer: []
      x-provider-operation-id: f42eb3580f33178fdf9d87f0c778f86e
  /fb/subscriber/updateSubscriber:
    post:
      tags:
      - Subscriber
      summary: Update subscriber
      description: 'Rate limit: 10 queries per second'
      operationId: updateSubscriber
      requestBody:
        description: ''
        required: true
        content:
          application/json:
            schema:
              required:
              - subscriber_id
              properties:
                subscriber_id:
                  type: integer
                first_name:
                  description: First Name
                  type: string
                last_name:
                  description: Last Name
                  type: string
                phone:
                  description: Phone Number
                  type: string
                email:
                  description: Email
                  type: string
                gender:
                  description: Gender
                  type: string
                has_opt_in_sms:
                  description: Has opt-in SMS is required if property Phone Number is not empty
                  type: boolean
                has_opt_in_email:
                  description: Has opt-in Email is required if property Email is not empty
                  type: boolean
                consent_phrase:
                  description: Consent phrase is required if property Has Opt In SMS equal true
                  type: string
              type: object
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                properties:
                  status:
                    type: string
                    example: success
                  data:
                    $ref: '#/components/schemas/Subscriber'
                type: object
        '400':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
      - Bearer: []
      x-provider-operation-id: 3ab84a004f4a5942e7a5368c2b807d19
components:
  schemas:
    ResponseError:
      description: ''
      required:
      - status
      - message
      - details
      properties:
        status:
          type: string
          example: error
        message:
          type: string
        details:
          required:
          - messages
          properties:
            messages:
              type: array
              items:
                $ref: '#/components/schemas/ResponseErrorMessage'
          type: object
          additionalProperties: false
      type: object
      additionalProperties: false
    ResponseErrorMessage:
      description: ''
      required:
      - message
      properties:
        message:
          type: string
      type: object
      additionalProperties: false
    ResponseErrorWithCode:
      description: ''
      required:
      - status
      - message
      - code
      properties:
        status:
          type: string
          example: error
        message:
          type: string
        code:
          type: integer
      type: object
      additionalProperties: false
    ResponseSuccess:
      description: ''
      required:
      - status
      properties:
        status:
          type: string
          example: success
      type: object
      additionalProperties: false
    Subscriber:
      description: ''
      required:
      - id
      - page_id
      - user_refs
      - first_name
      - last_name
      - name
      - gender
      - profile_pic
      - locale
      - language
      - timezone
      - live_chat_url
      - last_input_text
      - optin_phone
      - phone
      - optin_email
      - email
      - subscribed
      - last_interaction
      - last_seen
      - is_followup_enabled
      - ig_username
      - ig_id
      - whatsapp_phone
      - whatsapp_bsuid
      - whatsapp_username
      - optin_whatsapp
      - custom_fields
      - tags
      properties:
        id:
          type: string
        page_id:
          description: This is Facebook Page ID
          type: string
        user_refs:
          description: array with ref of subscriber; can be empty
          type: array
          items:
            $ref: '#/components/schemas/SubscriberRefField'
          example: '[{ ''user_ref'':''-1543835812530302162'', ''opted_in'':''2018-12-03T11:17:54+00:00'' }]'
        first_name:
          type: string
        last_name:
          type: string
        name:
          type: string
        gender:
          type: string
        profile_pic:
          type: string
        locale:
          type: string
        language:
          type: string
        timezone:
          type: string
        live_chat_url:
          type: string
        last_input_text:
          type: string
        optin_phone:
          type: boolean
        phone:
          type: string
        optin_email:
          type: boolean
        email:
          type: string
        subscribed:
          description: datetime in W3C format
          type: string
          example: '''2018-07-02T00:00:00+02:00'''
        last_interaction:
          description: datetime in W3C format
          type: string
          example: '''2018-07-02T00:00:00+02:00'''
          nullable: true
        last_seen:
          description: datetime in W3C format
          type: string
          example: '''2018-07-02T00:00:00+03:00'''
        is_followup_enabled:
          type: boolean
          example: true
        ig_username:
          type: string
          example: user_name
        ig_id:
          type: integer
          example: 6384638
        whatsapp_phone:
          type: string
        whatsapp_bsuid:
          type: string
          example: US.8234928392384832
          nullable: true
        whatsapp_username:
          type: string
          example: '@username'
          nullable: true
        optin_whatsapp:
          type: boolean
          example: true
        custom_fields:
          type: array
          items:
            $ref: '#/components/schemas/SubscriberCustomField'
        tags:
          type: array
          items:
            $ref: '#/components/schemas/Tag'
      type: object
      additionalProperties: false
    SubscriberCustomField:
      description: ''
      required:
      - id
      - name
      - type
      - description
      - value
      properties:
        id:
          type: integer
        name:
          type: string
        type:
          type: string
          enum:
          - text
          - number
          - date
          - datetime
          - boolean
        description:
          type: string
        value:
          description: string, integer or boolean
          example: '''string'', 123, true, ''2018-07-18'', ''2018-07-02T07:45:00+03:00'''
      type: object
      additionalProperties: false
    SubscriberRefField:
      description: ''
      required:
      - user_ref
      - opted_in
      properties:
        user_ref:
          type: string
          example: '-1543835812530302162'
        opted_in:
          description: datetime in W3C format
          type: string
          example: '2018-12-03T11:17:54+00:00'
      type: object
      additionalProperties: false
    Tag:
      description: ''
      required:
      - id
      - name
      properties:
        id:
          type: integer
        name:
          type: string
      type: object
      additionalProperties: false
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer
      description: 'API key generated per page in the ManyChat dashboard under Settings > API. Sent as `Authorization: Bearer
        <page-id>:<api-key>`.'