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

# Assign Tags to Contact

> Assign one or more tags to a contact. Idempotent — tags already present are left as-is.

Assign one or more tags to a contact. Idempotent — tags already present are left as-is. Tag IDs come from [List Contact Tags](/api-reference/ContactTags/list-tags).


## OpenAPI

````yaml POST /contacts/{id}/tags
openapi: 3.1.0
info:
  title: Feedspace API
  description: Feedspace API v3 - Feedback and testimonial management platform
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://api.feedspace.io/v3
security: []
paths:
  /contacts/{id}/tags:
    post:
      tags:
        - Contacts
      description: >-
        Assign one or more tags to a contact. Idempotent — tags already present
        are left as-is.
      parameters:
        - name: id
          in: path
          required: true
          description: Numeric contact ID.
          schema:
            type: integer
            example: 8801
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                tag_ids:
                  type: array
                  items:
                    type: integer
                  minItems: 1
                  description: Tag IDs to assign (must exist in this workspace).
              required:
                - tag_ids
      responses:
        '200':
          description: Tags assigned.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Contact'
      security:
        - basicAuth: []
components:
  schemas:
    Contact:
      type: object
      properties:
        id:
          type: integer
        email:
          type: string
        name:
          type:
            - string
            - 'null'
        phone:
          type:
            - string
            - 'null'
        primary_source:
          type: string
          description: >-
            How the contact first entered the workspace: csv, public_api,
            review_submission, manual, social_import, or stripe. Locked to the
            first source.
        country:
          type:
            - string
            - 'null'
        state:
          type:
            - string
            - 'null'
        city:
          type:
            - string
            - 'null'
        zipcode:
          type:
            - string
            - 'null'
        company:
          type:
            - string
            - 'null'
        date_added:
          type:
            - string
            - 'null'
          description: YYYY-MM-DD.
        date_added_label:
          type:
            - string
            - 'null'
          description: Human-readable date, e.g. "May 1, 2026".
        is_unsubscribed:
          type: boolean
        unsubscribe_reason:
          type:
            - string
            - 'null'
        unsubscribed_at:
          type:
            - string
            - 'null'
        enriched_at:
          type:
            - string
            - 'null'
        tag_ids:
          type: array
          items:
            type: integer
        has_reviewed:
          type: boolean
          description: True if this contact has submitted or been imported as a review.
        created_at:
          type: string
        updated_at:
          type: string
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: >-
        HTTP Basic Authentication using API Key and Secret Key. The credentials
        should be Base64 encoded in the format 'api_key:secret_key'. You can
        obtain your API Key and Secret Key from Feedspace → Automation → API
        (https://app.feedspace.io/automation/api).

````