> ## Documentation Index
> Fetch the complete documentation index at: https://platform.tatango.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Updating a Subscriber

> This endpoint updates a subscriber.

## Request URL

```http theme={null}
PUT https://app.tatango.com/api/v2/lists/{ID}/subscribers/{SUBSCRIBER_ID}
```

<Tip>
  ### FAQs

  **If I add tags to an existing subscriber, does that add the tags to existing, or replace existing?**

  * The tags are added to any tags already applied, not replaced.

  **Can I update custom subscriber data for a subscriber?**

  * Yes, the paramaters are listed below.
</Tip>


## OpenAPI

````yaml PUT /api/v2/lists/{ID}/subscribers/{SUBSCRIBER_ID}
openapi: 3.1.0
info:
  title: Tatango Legacy v2 API
  description: Tatango legacy v2 API endpoints for existing integrations.
  version: 2.0.0
servers:
  - url: https://app.tatango.com
security:
  - basicAuth: []
paths:
  /api/v2/lists/{ID}/subscribers/{SUBSCRIBER_ID}:
    put:
      tags:
        - Subscribers
      summary: Updating a Subscriber
      description: This endpoint updates a subscriber.
      parameters:
        - name: ID
          in: path
          description: ID of the list
          required: true
          schema:
            type: integer
        - name: SUBSCRIBER_ID
          in: path
          description: ID of the subscriber (phone number)
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateSubscriberRequest'
            example:
              subscriber:
                phone_number: '2141234567'
                first_name: John
                last_name: Doe
                email: john.doe@example.com
                birthdate: '19900101'
                zip_code: '75201'
                gender: Male
                tags: vip customer, card holder, daily alerts
                custom_field_key: custom_value
      responses:
        '200':
          description: Subscriber updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateSubscriberResponse'
              example:
                status: Subscriber updated
                subscriber:
                  phone_number: '2141234567'
                  cleaned_at: null
                  subscribed_at: '2025-06-18T15:36:07Z'
                  opted_out_at: null
                  opt_in_method: api
                  keyword_name: null
                  carrier: 383
                  carrier_name: Verizon Wireless
                  global_carrier_id: '12345'
                  global_carrier_name: Verizon
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: >-
            curl
            "https://app.tatango.com/api/v2/lists/<ID>/subscribers/<SUBSCRIBER_ID>"
            -d
            '{"subscriber":{"phone_number":"2141234567","first_name":"John","last_name":"Doe"}}'
            -X PUT \
              -H "Accept: application/json" \
              -H "Content-Type: application/json" \
              -u emailaddress@mydomain.com:my_api_key \
              -H "Host: example.org" \
              -H "Cookie: "
        - lang: Ruby
          label: Ruby
          source: >-
            require 'net/http'

            require 'uri'


            uri =
            URI.parse('https://app.tatango.com/api/v2/lists/<ID>/subscribers/<SUBSCRIBER_ID>')

            http = Net::HTTP.new(uri.host, uri.port)

            request = Net::HTTP::Put.new(uri.request_url)

            request.basic_auth("emailaddress@mydomain.com", "my_api_key")

            request.body =
            {"subscriber":{"phone_number":"2141234567","first_name":"John","last_name":"Doe"}}.to_json

            response = http.request(request)
        - lang: JavaScript
          label: JavaScript
          source: >-
            var request = new XMLHttpRequest();

            request.open('PUT',
            'https://app.tatango.com/api/v2/lists/<ID>/subscribers/<SUBSCRIBER_ID>',
            false);

            request.setRequestHeader('Content-Type', 'application/json');

            request.setRequestHeader('Authorization', 'Basic ' +
            btoa('emailaddress@mydomain.com:my_api_key'));

            var data = JSON.stringify({ subscriber: { phone_number:
            '2141234567', first_name: 'John', last_name: 'Doe' } });

            request.send(data);
components:
  schemas:
    UpdateSubscriberRequest:
      type: object
      properties:
        subscriber:
          type: object
          properties:
            phone_number:
              type: string
              description: The wireless phone number of the subscriber
              example: '2141234567'
            first_name:
              type: string
              description: First name - char(50)
              example: John
            last_name:
              type: string
              description: Last name - char(50)
              example: Doe
            email:
              type: string
              description: Email - char(50)
              example: john.doe@example.com
            birthdate:
              type: string
              description: Birthdate - int(6)
              example: '19900101'
            zip_code:
              type: string
              description: ZIP code - char(6)
              example: '75201'
            gender:
              type: string
              description: Gender - char('Male' or 'Female')
              enum:
                - Male
                - Female
              example: Male
            tags:
              type: string
              description: >-
                List of tags, comma separated, for example: 'vip customer, card
                holder, daily alerts'
              example: vip customer, card holder, daily alerts
            custom_field_key:
              type: string
              description: Custom data value
              example: custom_value
          required:
            - phone_number
      required:
        - subscriber
    UpdateSubscriberResponse:
      type: object
      properties:
        status:
          type: string
          example: Subscriber updated
        subscriber:
          $ref: '#/components/schemas/Subscriber'
      required:
        - status
        - subscriber
    Subscriber:
      type: object
      properties:
        phone_number:
          type: string
          description: The wireless phone number of the subscriber
          example: '2141234567'
        first_name:
          type: string
          description: First name of the subscriber
          example: John
        last_name:
          type: string
          description: Last name of the subscriber
          example: Doe
        email:
          type: string
          description: Email address of the subscriber
          example: john.doe@example.com
        birthdate:
          type: string
          description: Birthdate of the subscriber
          example: '19900101'
        zip_code:
          type: string
          description: ZIP code of the subscriber
          example: '75201'
        gender:
          type: string
          description: Gender of the subscriber
          example: Male
        cleaned_at:
          type: string
          format: date-time
          description: Date/time of automatic unsubscription (if applicable)
          nullable: true
        subscribed_at:
          type: string
          format: date-time
          description: Date subscriber first subscribed to this list
          example: '2025-06-18T15:36:07Z'
        opted_out_at:
          type: string
          format: date-time
          description: Date subscriber last unsubscribed from this list
          nullable: true
        opt_in_method:
          type: string
          description: Original opt-in method used
          example: api
        keyword_name:
          type: string
          description: Keyword used for opt-in (if applicable)
          nullable: true
        carrier:
          type: integer
          description: Wireless carrier ID
          example: 383
        carrier_name:
          type: string
          description: Wireless carrier name
          example: Verizon Wireless
        global_carrier_id:
          type: string
          description: Global wireless carrier ID
          example: '12345'
        global_carrier_name:
          type: string
          description: Global wireless carrier name
          example: Verizon
        tags:
          type: array
          items:
            type: string
          description: List of tags associated with the subscriber
          example:
            - vip
            - customer
        total_messages_received:
          type: integer
          description: >-
            The total amount of mass messages this specific subscriber has
            received over their lifetime from this specific list
          example: 15
      required:
        - phone_number
        - subscribed_at
        - opt_in_method
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: >-
        Tatango authenticates API requests by validating an API key passed via
        HTTP Basic Authentication. Use your login email as the username and your
        API key as the password.

````