# Assign Manual Tag

Assigns an existing manual tag to a contact; this may start campaigns, outbound events or automations. Requires approval of those effects; does not create tags.

## Input schema:

```json
{
  "type": "object",
  "properties": {
    "contactId": {
      "type": "integer",
      "description": "Numeric contact ID returned by search-contacts",
      "minimum": 1
    },
    "manualTagId": {
      "type": "integer",
      "description": "Existing writable manual tag ID; unknown tags are rejected and never created",
      "minimum": 1
    },
    "approval": {
      "type": "string",
      "description": "Exactly I_ACCEPT_AUTOMATION_EFFECTS: tagging may start campaigns and automations",
      "enum": [
        "I_ACCEPT_AUTOMATION_EFFECTS"
      ]
    },
    "referenceId": {
      "type": "integer",
      "description": "Reference for a multi-value manual tag; use 0 for contact-wide tags",
      "default": 0,
      "minimum": 0
    },
    "accountId": {
      "type": [
        "null",
        "integer"
      ],
      "description": "User ID of the account; omit for the account the access token works in",
      "default": null,
      "minimum": 1
    }
  },
  "required": [
    "contactId",
    "manualTagId",
    "approval"
  ],
  "additionalProperties": false
}
```

## Output schema:

```json
{
  "type": "object",
  "required": [
    "accountId",
    "contactId",
    "manualTagId",
    "referenceId",
    "action",
    "automationEffect",
    "editUrl"
  ],
  "properties": {
    "accountId": {
      "type": "integer"
    },
    "contactId": {
      "type": "integer"
    },
    "manualTagId": {
      "type": "integer"
    },
    "referenceId": {
      "type": "integer"
    },
    "action": {
      "type": "string"
    },
    "automationEffect": {
      "type": "string"
    },
    "editUrl": {
      "type": "string"
    }
  }
}
```

