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

# loops

> Loops Email API

**Server path:** `/loops` | **Type:** Application | **PCID required:** Yes

## Tools

| Tool                                                                                        | Description                             |
| ------------------------------------------------------------------------------------------- | --------------------------------------- |
| [`loops_complete_upload`](#loops_complete_upload)                                           | Complete an upload                      |
| [`loops_create_campaign`](#loops_create_campaign)                                           | Create a campaign                       |
| [`loops_create_campaign_group`](#loops_create_campaign_group)                               | Create a campaign group                 |
| [`loops_create_component`](#loops_create_component)                                         | Create a component                      |
| [`loops_create_contact`](#loops_create_contact)                                             | Create a contact                        |
| [`loops_create_contact_property`](#loops_create_contact_property)                           | Create a contact property               |
| [`loops_create_theme`](#loops_create_theme)                                                 | Create a theme                          |
| [`loops_create_transactional_email`](#loops_create_transactional_email)                     | Create a transactional email            |
| [`loops_create_transactional_group`](#loops_create_transactional_group)                     | Create a transactional group            |
| [`loops_create_upload`](#loops_create_upload)                                               | Create an upload                        |
| [`loops_delete_contact`](#loops_delete_contact)                                             | Delete a contact                        |
| [`loops_ensure_transactional_email_draft`](#loops_ensure_transactional_email_draft)         | Ensure a draft email message            |
| [`loops_find_contact`](#loops_find_contact)                                                 | Find a contact                          |
| [`loops_get_audience_segment`](#loops_get_audience_segment)                                 | Get an audience segment                 |
| [`loops_get_campaign`](#loops_get_campaign)                                                 | Get a campaign                          |
| [`loops_get_campaign_group`](#loops_get_campaign_group)                                     | Get a campaign group                    |
| [`loops_get_component`](#loops_get_component)                                               | Get a component                         |
| [`loops_get_contact_suppression`](#loops_get_contact_suppression)                           | Get suppression status for a contact    |
| [`loops_get_email_message`](#loops_get_email_message)                                       | Get an email message                    |
| [`loops_get_email_message_guardian`](#loops_get_email_message_guardian)                     | Run Guardian checks on an email message |
| [`loops_get_theme`](#loops_get_theme)                                                       | Get a theme                             |
| [`loops_get_transactional_email`](#loops_get_transactional_email)                           | Get a transactional email               |
| [`loops_get_transactional_group`](#loops_get_transactional_group)                           | Get a transactional group               |
| [`loops_get_workflow`](#loops_get_workflow)                                                 | Get a simplified workflow               |
| [`loops_get_workflow_node`](#loops_get_workflow_node)                                       | Get workflow node details               |
| [`loops_list_audience_segments`](#loops_list_audience_segments)                             | List audience segments                  |
| [`loops_list_campaign_groups`](#loops_list_campaign_groups)                                 | List campaign groups                    |
| [`loops_list_campaigns`](#loops_list_campaigns)                                             | List campaigns                          |
| [`loops_list_components`](#loops_list_components)                                           | List components                         |
| [`loops_list_contact_properties`](#loops_list_contact_properties)                           | Get a list of contact properties        |
| [`loops_list_dedicated_sending_ips`](#loops_list_dedicated_sending_ips)                     | Get dedicated sending IP addresses      |
| [`loops_list_mailing_lists`](#loops_list_mailing_lists)                                     | Get a list of mailing lists             |
| [`loops_list_themes`](#loops_list_themes)                                                   | List themes                             |
| [`loops_list_transactional_email_definitions`](#loops_list_transactional_email_definitions) | List transactional emails               |
| [`loops_list_transactional_emails`](#loops_list_transactional_emails)                       | List transactional emails               |
| [`loops_list_transactional_groups`](#loops_list_transactional_groups)                       | List transactional groups               |
| [`loops_list_workflows`](#loops_list_workflows)                                             | List workflows                          |
| [`loops_publish_transactional_email_draft`](#loops_publish_transactional_email_draft)       | Publish a transactional email draft     |
| [`loops_remove_contact_suppression`](#loops_remove_contact_suppression)                     | Remove a contact from suppression list  |
| [`loops_send_email_message_preview`](#loops_send_email_message_preview)                     | Send a preview of an email message      |
| [`loops_send_event`](#loops_send_event)                                                     | Send an event                           |
| [`loops_send_transactional_email`](#loops_send_transactional_email)                         | Send a transactional email              |
| [`loops_test_api_key`](#loops_test_api_key)                                                 | Test your API key                       |
| [`loops_update_campaign`](#loops_update_campaign)                                           | Update a campaign                       |
| [`loops_update_campaign_group`](#loops_update_campaign_group)                               | Update a campaign group                 |
| [`loops_update_component`](#loops_update_component)                                         | Update a component                      |
| [`loops_update_contact`](#loops_update_contact)                                             | Update a contact                        |
| [`loops_update_email_message`](#loops_update_email_message)                                 | Update an email message                 |
| [`loops_update_theme`](#loops_update_theme)                                                 | Update a theme                          |
| [`loops_update_transactional_email`](#loops_update_transactional_email)                     | Update a transactional email            |
| [`loops_update_transactional_group`](#loops_update_transactional_group)                     | Update a transactional group            |

***

## loops\_complete\_upload

Complete an upload

**Parameters:**

| Parameter | Type   | Required | Default | Description                                              |
| --------- | ------ | -------- | ------- | -------------------------------------------------------- |
| `id`      | string | Yes      | —       | The `emailAssetId` returned when the upload was created. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "id": {
        "type": "string",
        "description": "The `emailAssetId` returned when the upload was created."
      }
    },
    "required": [
      "PCID",
      "id"
    ]
  }
  ```
</Expandable>

***

## loops\_create\_campaign

Create a campaign

**Parameters:**

| Parameter           | Type   | Required | Default | Description                                                                                                                                               |                                                                          |
| ------------------- | ------ | -------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
| `audienceFilter`    | object | No       | —       | A tree of audience conditions combined with `match`. Null when the campaign targets a mailing list or segment without an explicit filter.                 |                                                                          |
| `audienceSegmentId` | string | null     | No      | —                                                                                                                                                         | The ID of an audience segment. Setting this clears any `audienceFilter`. |
| `campaignGroupId`   | string | No       | —       | The ID of the group to add this campaign to. Defaults to the team's default group when omitted.                                                           |                                                                          |
| `mailingListId`     | string | null     | No      | —                                                                                                                                                         | The ID of the mailing list to send to.                                   |
| `name`              | string | Yes      | —       | The campaign name.                                                                                                                                        |                                                                          |
| `scheduling`        | object | No       | —       | When the campaign should send. `timestamp` is required and must be in the future when `method` is `schedule`, and must be omitted when `method` is `now`. |                                                                          |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "audienceFilter": {
        "type": "object",
        "description": "A tree of audience conditions combined with `match`. Null when the campaign targets a mailing list or segment without an explicit filter.",
        "properties": {
          "match": {
            "type": "string",
            "description": "The match value",
            "enum": [
              "all",
              "any"
            ]
          },
          "conditions": {
            "type": "array",
            "description": "The conditions value"
          }
        },
        "required": [
          "match",
          "conditions"
        ]
      },
      "audienceSegmentId": {
        "type": [
          "string",
          "null"
        ],
        "description": "The ID of an audience segment. Setting this clears any `audienceFilter`."
      },
      "campaignGroupId": {
        "type": "string",
        "description": "The ID of the group to add this campaign to. Defaults to the team's default group when omitted."
      },
      "mailingListId": {
        "type": [
          "string",
          "null"
        ],
        "description": "The ID of the mailing list to send to."
      },
      "name": {
        "type": "string",
        "description": "The campaign name."
      },
      "scheduling": {
        "type": "object",
        "description": "When the campaign should send. `timestamp` is required and must be in the future when `method` is `schedule`, and must be omitted when `method` is `now`.",
        "properties": {
          "method": {
            "type": "string",
            "description": "The method value",
            "enum": [
              "now",
              "schedule"
            ]
          },
          "timestamp": {
            "type": "string",
            "description": "The timestamp value"
          }
        },
        "required": [
          "method"
        ]
      }
    },
    "required": [
      "PCID",
      "name"
    ]
  }
  ```
</Expandable>

***

## loops\_create\_campaign\_group

Create a campaign group

**Parameters:**

| Parameter     | Type   | Required | Default | Description                                             |
| ------------- | ------ | -------- | ------- | ------------------------------------------------------- |
| `description` | string | No       | —       | An optional description for the group.                  |
| `name`        | string | Yes      | —       | The group name. Cannot be the reserved name "Unsorted". |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "description": {
        "type": "string",
        "description": "An optional description for the group."
      },
      "name": {
        "type": "string",
        "description": "The group name. Cannot be the reserved name \"Unsorted\"."
      }
    },
    "required": [
      "PCID",
      "name"
    ]
  }
  ```
</Expandable>

***

## loops\_create\_component

Create a component

**Parameters:**

| Parameter | Type   | Required | Default | Description                          |
| --------- | ------ | -------- | ------- | ------------------------------------ |
| `lmx`     | string | Yes      | —       | The component body as an LMX string. |
| `name`    | string | Yes      | —       | The component name.                  |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "lmx": {
        "type": "string",
        "description": "The component body as an LMX string."
      },
      "name": {
        "type": "string",
        "description": "The component name."
      }
    },
    "required": [
      "PCID",
      "lmx",
      "name"
    ]
  }
  ```
</Expandable>

***

## loops\_create\_contact

Create a contact

**Parameters:**

| Parameter      | Type    | Required | Default | Description                                                      |
| -------------- | ------- | -------- | ------- | ---------------------------------------------------------------- |
| `email`        | string  | Yes      | —       | The email value                                                  |
| `firstName`    | string  | No       | —       | First Name                                                       |
| `lastName`     | string  | No       | —       | Last Name                                                        |
| `mailingLists` | object  | No       | —       | An object of mailing list IDs and boolean subscription statuses. |
| `subscribed`   | boolean | No       | —       | The subscribed value                                             |
| `userGroup`    | string  | No       | —       | User Group                                                       |
| `userId`       | string  | No       | —       | User Id                                                          |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "email": {
        "type": "string",
        "description": "The email value"
      },
      "firstName": {
        "type": "string",
        "description": "First Name"
      },
      "lastName": {
        "type": "string",
        "description": "Last Name"
      },
      "mailingLists": {
        "type": "object",
        "description": "An object of mailing list IDs and boolean subscription statuses."
      },
      "subscribed": {
        "type": "boolean",
        "description": "The subscribed value"
      },
      "userGroup": {
        "type": "string",
        "description": "User Group"
      },
      "userId": {
        "type": "string",
        "description": "User Id"
      }
    },
    "required": [
      "PCID",
      "email"
    ]
  }
  ```
</Expandable>

***

## loops\_create\_contact\_property

Create a contact property

**Parameters:**

| Parameter | Type   | Required | Default | Description    |
| --------- | ------ | -------- | ------- | -------------- |
| `name`    | string | Yes      | —       | The name value |
| `type`    | string | Yes      | —       | The type value |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "name": {
        "type": "string",
        "description": "The name value"
      },
      "type": {
        "type": "string",
        "description": "The type value"
      }
    },
    "required": [
      "PCID",
      "name",
      "type"
    ]
  }
  ```
</Expandable>

***

## loops\_create\_theme

Create a theme

**Parameters:**

| Parameter | Type   | Required | Default | Description                                                                                                                                                            |
| --------- | ------ | -------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name`    | string | Yes      | —       | The theme name.                                                                                                                                                        |
| `styles`  | object | No       | —       | Flat map of style attributes, matching the attribute names accepted by the LMX `&lt;Style /&gt;` tag. All attributes are returned with the values stored on the theme. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "name": {
        "type": "string",
        "description": "The theme name."
      },
      "styles": {
        "type": "object",
        "description": "Flat map of style attributes, matching the attribute names accepted by the LMX `<Style />` tag. All attributes are returned with the values stored on the theme.",
        "properties": {
          "backgroundColor": {
            "type": "string",
            "description": "Background Color"
          },
          "backgroundXPadding": {
            "type": "number",
            "description": "Background X Padding"
          },
          "backgroundYPadding": {
            "type": "number",
            "description": "Background Y Padding"
          },
          "bodyColor": {
            "type": "string",
            "description": "Body Color"
          },
          "bodyXPadding": {
            "type": "number",
            "description": "Body X Padding"
          },
          "bodyYPadding": {
            "type": "number",
            "description": "Body Y Padding"
          },
          "bodyFontFamily": {
            "type": "string",
            "description": "Body Font Family"
          },
          "bodyFontCategory": {
            "type": "string",
            "description": "Body Font Category"
          },
          "borderColor": {
            "type": "string",
            "description": "Border Color"
          },
          "borderWidth": {
            "type": "number",
            "description": "Border Width"
          },
          "borderRadius": {
            "type": "number",
            "description": "Border Radius"
          },
          "buttonBodyColor": {
            "type": "string",
            "description": "Button Body Color"
          },
          "buttonBodyXPadding": {
            "type": "number",
            "description": "Button Body X Padding"
          },
          "buttonBodyYPadding": {
            "type": "number",
            "description": "Button Body Y Padding"
          },
          "buttonBorderColor": {
            "type": "string",
            "description": "Button Border Color"
          },
          "buttonBorderWidth": {
            "type": "number",
            "description": "Button Border Width"
          },
          "buttonBorderRadius": {
            "type": "number",
            "description": "Button Border Radius"
          },
          "buttonTextColor": {
            "type": "string",
            "description": "Button Text Color"
          },
          "buttonTextFormat": {
            "type": "number",
            "description": "Button Text Format"
          },
          "buttonTextFontSize": {
            "type": "number",
            "description": "Button Text Font Size"
          },
          "dividerColor": {
            "type": "string",
            "description": "Divider Color"
          },
          "dividerBorderWidth": {
            "type": "number",
            "description": "Divider Border Width"
          },
          "textBaseColor": {
            "type": "string",
            "description": "Text Base Color"
          },
          "textBaseFontSize": {
            "type": "number",
            "description": "Text Base Font Size"
          },
          "textBaseLineHeight": {
            "type": "number",
            "description": "Text Base Line Height"
          },
          "textBaseLetterSpacing": {
            "type": "number",
            "description": "Text Base Letter Spacing"
          },
          "textLinkColor": {
            "type": "string",
            "description": "Text Link Color"
          },
          "heading1Color": {
            "type": "string",
            "description": "Heading1 Color"
          },
          "heading1FontSize": {
            "type": "number",
            "description": "Heading1 Font Size"
          },
          "heading1LineHeight": {
            "type": "number",
            "description": "Heading1 Line Height"
          },
          "heading1LetterSpacing": {
            "type": "number",
            "description": "Heading1 Letter Spacing"
          },
          "heading2Color": {
            "type": "string",
            "description": "Heading2 Color"
          },
          "heading2FontSize": {
            "type": "number",
            "description": "Heading2 Font Size"
          },
          "heading2LineHeight": {
            "type": "number",
            "description": "Heading2 Line Height"
          },
          "heading2LetterSpacing": {
            "type": "number",
            "description": "Heading2 Letter Spacing"
          },
          "heading3Color": {
            "type": "string",
            "description": "Heading3 Color"
          },
          "heading3FontSize": {
            "type": "number",
            "description": "Heading3 Font Size"
          },
          "heading3LineHeight": {
            "type": "number",
            "description": "Heading3 Line Height"
          },
          "heading3LetterSpacing": {
            "type": "number",
            "description": "Heading3 Letter Spacing"
          }
        }
      }
    },
    "required": [
      "PCID",
      "name"
    ]
  }
  ```
</Expandable>

***

## loops\_create\_transactional\_email

Create a transactional email

**Parameters:**

| Parameter              | Type   | Required | Default | Description                                                                                                |
| ---------------------- | ------ | -------- | ------- | ---------------------------------------------------------------------------------------------------------- |
| `name`                 | string | Yes      | —       | The name of the transactional email.                                                                       |
| `transactionalGroupId` | string | No       | —       | The ID of the group to add this transactional email to. Defaults to the team's default group when omitted. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "name": {
        "type": "string",
        "description": "The name of the transactional email."
      },
      "transactionalGroupId": {
        "type": "string",
        "description": "The ID of the group to add this transactional email to. Defaults to the team's default group when omitted."
      }
    },
    "required": [
      "PCID",
      "name"
    ]
  }
  ```
</Expandable>

***

## loops\_create\_transactional\_group

Create a transactional group

**Parameters:**

| Parameter     | Type   | Required | Default | Description                                             |
| ------------- | ------ | -------- | ------- | ------------------------------------------------------- |
| `description` | string | No       | —       | An optional description for the group.                  |
| `name`        | string | Yes      | —       | The group name. Cannot be the reserved name "Unsorted". |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "description": {
        "type": "string",
        "description": "An optional description for the group."
      },
      "name": {
        "type": "string",
        "description": "The group name. Cannot be the reserved name \"Unsorted\"."
      }
    },
    "required": [
      "PCID",
      "name"
    ]
  }
  ```
</Expandable>

***

## loops\_create\_upload

Create an upload

**Parameters:**

| Parameter       | Type    | Required | Default | Description                                                                                                       |
| --------------- | ------- | -------- | ------- | ----------------------------------------------------------------------------------------------------------------- |
| `contentLength` | integer | Yes      | —       | The size of the file in bytes. Must be a positive integer no greater than 4,000,000 bytes.                        |
| `contentType`   | string  | Yes      | —       | The MIME type of the file to upload. Supported types are `image/jpeg`, `image/png`, `image/gif` and `image/webp`. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "contentLength": {
        "type": "integer",
        "description": "The size of the file in bytes. Must be a positive integer no greater than 4,000,000 bytes."
      },
      "contentType": {
        "type": "string",
        "description": "The MIME type of the file to upload. Supported types are `image/jpeg`, `image/png`, `image/gif` and `image/webp`."
      }
    },
    "required": [
      "PCID",
      "contentLength",
      "contentType"
    ]
  }
  ```
</Expandable>

***

## loops\_delete\_contact

Delete a contact

**Parameters:**

| Parameter | Type   | Required | Default | Description     |
| --------- | ------ | -------- | ------- | --------------- |
| `email`   | string | No       | —       | The email value |
| `userId`  | string | No       | —       | User Id         |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "email": {
        "type": "string",
        "description": "The email value"
      },
      "userId": {
        "type": "string",
        "description": "User Id"
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## loops\_ensure\_transactional\_email\_draft

Ensure a draft email message

**Parameters:**

| Parameter         | Type   | Required | Default | Description                        |
| ----------------- | ------ | -------- | ------- | ---------------------------------- |
| `transactionalId` | string | Yes      | —       | The ID of the transactional email. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "transactionalId": {
        "type": "string",
        "description": "The ID of the transactional email."
      }
    },
    "required": [
      "PCID",
      "transactionalId"
    ]
  }
  ```
</Expandable>

***

## loops\_find\_contact

Find a contact

**Parameters:**

| Parameter | Type   | Required | Default | Description                 |
| --------- | ------ | -------- | ------- | --------------------------- |
| `email`   | string | No       | —       | Email address (URI-encoded) |
| `userId`  | string | No       | —       | User Id                     |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "email": {
        "type": "string",
        "description": "Email address (URI-encoded)"
      },
      "userId": {
        "type": "string",
        "description": "User Id"
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## loops\_get\_audience\_segment

Get an audience segment

**Parameters:**

| Parameter           | Type   | Required | Default | Description                     |
| ------------------- | ------ | -------- | ------- | ------------------------------- |
| `audienceSegmentId` | string | Yes      | —       | The ID of the audience segment. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "audienceSegmentId": {
        "type": "string",
        "description": "The ID of the audience segment."
      }
    },
    "required": [
      "PCID",
      "audienceSegmentId"
    ]
  }
  ```
</Expandable>

***

## loops\_get\_campaign

Get a campaign

**Parameters:**

| Parameter    | Type   | Required | Default | Description             |
| ------------ | ------ | -------- | ------- | ----------------------- |
| `campaignId` | string | Yes      | —       | The ID of the campaign. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "campaignId": {
        "type": "string",
        "description": "The ID of the campaign."
      }
    },
    "required": [
      "PCID",
      "campaignId"
    ]
  }
  ```
</Expandable>

***

## loops\_get\_campaign\_group

Get a campaign group

**Parameters:**

| Parameter         | Type   | Required | Default | Description                   |
| ----------------- | ------ | -------- | ------- | ----------------------------- |
| `campaignGroupId` | string | Yes      | —       | The ID of the campaign group. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "campaignGroupId": {
        "type": "string",
        "description": "The ID of the campaign group."
      }
    },
    "required": [
      "PCID",
      "campaignGroupId"
    ]
  }
  ```
</Expandable>

***

## loops\_get\_component

Get a component

**Parameters:**

| Parameter     | Type   | Required | Default | Description              |
| ------------- | ------ | -------- | ------- | ------------------------ |
| `componentId` | string | Yes      | —       | The ID of the component. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "componentId": {
        "type": "string",
        "description": "The ID of the component."
      }
    },
    "required": [
      "PCID",
      "componentId"
    ]
  }
  ```
</Expandable>

***

## loops\_get\_contact\_suppression

Get suppression status for a contact

**Parameters:**

| Parameter | Type   | Required | Default | Description                 |
| --------- | ------ | -------- | ------- | --------------------------- |
| `email`   | string | No       | —       | Email address (URI-encoded) |
| `userId`  | string | No       | —       | User Id                     |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "email": {
        "type": "string",
        "description": "Email address (URI-encoded)"
      },
      "userId": {
        "type": "string",
        "description": "User Id"
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## loops\_get\_email\_message

Get an email message

**Parameters:**

| Parameter        | Type   | Required | Default | Description                  |
| ---------------- | ------ | -------- | ------- | ---------------------------- |
| `emailMessageId` | string | Yes      | —       | The ID of the email message. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "emailMessageId": {
        "type": "string",
        "description": "The ID of the email message."
      }
    },
    "required": [
      "PCID",
      "emailMessageId"
    ]
  }
  ```
</Expandable>

***

## loops\_get\_email\_message\_guardian

Run Guardian checks on an email message

**Parameters:**

| Parameter        | Type   | Required | Default | Description                  |
| ---------------- | ------ | -------- | ------- | ---------------------------- |
| `emailMessageId` | string | Yes      | —       | The ID of the email message. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "emailMessageId": {
        "type": "string",
        "description": "The ID of the email message."
      }
    },
    "required": [
      "PCID",
      "emailMessageId"
    ]
  }
  ```
</Expandable>

***

## loops\_get\_theme

Get a theme

**Parameters:**

| Parameter | Type   | Required | Default | Description          |
| --------- | ------ | -------- | ------- | -------------------- |
| `themeId` | string | Yes      | —       | The ID of the theme. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "themeId": {
        "type": "string",
        "description": "The ID of the theme."
      }
    },
    "required": [
      "PCID",
      "themeId"
    ]
  }
  ```
</Expandable>

***

## loops\_get\_transactional\_email

Get a transactional email

**Parameters:**

| Parameter         | Type   | Required | Default | Description                        |
| ----------------- | ------ | -------- | ------- | ---------------------------------- |
| `transactionalId` | string | Yes      | —       | The ID of the transactional email. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "transactionalId": {
        "type": "string",
        "description": "The ID of the transactional email."
      }
    },
    "required": [
      "PCID",
      "transactionalId"
    ]
  }
  ```
</Expandable>

***

## loops\_get\_transactional\_group

Get a transactional group

**Parameters:**

| Parameter              | Type   | Required | Default | Description                        |
| ---------------------- | ------ | -------- | ------- | ---------------------------------- |
| `transactionalGroupId` | string | Yes      | —       | The ID of the transactional group. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "transactionalGroupId": {
        "type": "string",
        "description": "The ID of the transactional group."
      }
    },
    "required": [
      "PCID",
      "transactionalGroupId"
    ]
  }
  ```
</Expandable>

***

## loops\_get\_workflow

Get a simplified workflow

**Parameters:**

| Parameter    | Type   | Required | Default | Description             |
| ------------ | ------ | -------- | ------- | ----------------------- |
| `workflowId` | string | Yes      | —       | The ID of the workflow. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "workflowId": {
        "type": "string",
        "description": "The ID of the workflow."
      }
    },
    "required": [
      "PCID",
      "workflowId"
    ]
  }
  ```
</Expandable>

***

## loops\_get\_workflow\_node

Get workflow node details

**Parameters:**

| Parameter    | Type   | Required | Default | Description                  |
| ------------ | ------ | -------- | ------- | ---------------------------- |
| `workflowId` | string | Yes      | —       | The ID of the workflow.      |
| `nodeId`     | string | Yes      | —       | The ID of the workflow node. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "workflowId": {
        "type": "string",
        "description": "The ID of the workflow."
      },
      "nodeId": {
        "type": "string",
        "description": "The ID of the workflow node."
      }
    },
    "required": [
      "PCID",
      "workflowId",
      "nodeId"
    ]
  }
  ```
</Expandable>

***

## loops\_list\_audience\_segments

List audience segments

**Parameters:**

| Parameter | Type   | Required | Default | Description                                                                                                                  |
| --------- | ------ | -------- | ------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `perPage` | string | No       | —       | How many results to return in each request. Must be between 10 and 50. Default is 20.                                        |
| `cursor`  | string | No       | —       | A cursor to return a specific page of results. Cursors can be found from the `pagination.nextCursor` value in each response. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "perPage": {
        "type": "string",
        "description": "How many results to return in each request. Must be between 10 and 50. Default is 20."
      },
      "cursor": {
        "type": "string",
        "description": "A cursor to return a specific page of results. Cursors can be found from the `pagination.nextCursor` value in each response."
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## loops\_list\_campaign\_groups

List campaign groups

**Parameters:**

| Parameter | Type   | Required | Default | Description                                                                                                                  |
| --------- | ------ | -------- | ------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `perPage` | string | No       | —       | How many results to return in each request. Must be between 10 and 50. Default is 20.                                        |
| `cursor`  | string | No       | —       | A cursor to return a specific page of results. Cursors can be found from the `pagination.nextCursor` value in each response. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "perPage": {
        "type": "string",
        "description": "How many results to return in each request. Must be between 10 and 50. Default is 20."
      },
      "cursor": {
        "type": "string",
        "description": "A cursor to return a specific page of results. Cursors can be found from the `pagination.nextCursor` value in each response."
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## loops\_list\_campaigns

List campaigns

**Parameters:**

| Parameter | Type   | Required | Default | Description                                                                                                                  |
| --------- | ------ | -------- | ------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `perPage` | string | No       | —       | How many results to return in each request. Must be between 10 and 50. Default is 20.                                        |
| `cursor`  | string | No       | —       | A cursor to return a specific page of results. Cursors can be found from the `pagination.nextCursor` value in each response. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "perPage": {
        "type": "string",
        "description": "How many results to return in each request. Must be between 10 and 50. Default is 20."
      },
      "cursor": {
        "type": "string",
        "description": "A cursor to return a specific page of results. Cursors can be found from the `pagination.nextCursor` value in each response."
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## loops\_list\_components

List components

**Parameters:**

| Parameter | Type   | Required | Default | Description                                                                                                                  |
| --------- | ------ | -------- | ------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `perPage` | string | No       | —       | How many results to return in each request. Must be between 10 and 50. Default is 20.                                        |
| `cursor`  | string | No       | —       | A cursor to return a specific page of results. Cursors can be found from the `pagination.nextCursor` value in each response. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "perPage": {
        "type": "string",
        "description": "How many results to return in each request. Must be between 10 and 50. Default is 20."
      },
      "cursor": {
        "type": "string",
        "description": "A cursor to return a specific page of results. Cursors can be found from the `pagination.nextCursor` value in each response."
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## loops\_list\_contact\_properties

Get a list of contact properties

**Parameters:**

| Parameter | Type   | Required | Default | Description                 |
| --------- | ------ | -------- | ------- | --------------------------- |
| `list`    | string | No       | —       | "all" (default) or "custom" |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "list": {
        "type": "string",
        "description": "\\\"all\\\" (default) or \\\"custom\\\""
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## loops\_list\_dedicated\_sending\_ips

Get dedicated sending IP addresses

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## loops\_list\_mailing\_lists

Get a list of mailing lists

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## loops\_list\_themes

List themes

**Parameters:**

| Parameter | Type   | Required | Default | Description                                                                                                                  |
| --------- | ------ | -------- | ------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `perPage` | string | No       | —       | How many results to return in each request. Must be between 10 and 50. Default is 20.                                        |
| `cursor`  | string | No       | —       | A cursor to return a specific page of results. Cursors can be found from the `pagination.nextCursor` value in each response. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "perPage": {
        "type": "string",
        "description": "How many results to return in each request. Must be between 10 and 50. Default is 20."
      },
      "cursor": {
        "type": "string",
        "description": "A cursor to return a specific page of results. Cursors can be found from the `pagination.nextCursor` value in each response."
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## loops\_list\_transactional\_email\_definitions

List transactional emails

**Parameters:**

| Parameter | Type   | Required | Default | Description                                                                                                                  |
| --------- | ------ | -------- | ------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `perPage` | string | No       | —       | How many results to return in each request. Must be between 10 and 50. Default is 20.                                        |
| `cursor`  | string | No       | —       | A cursor to return a specific page of results. Cursors can be found from the `pagination.nextCursor` value in each response. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "perPage": {
        "type": "string",
        "description": "How many results to return in each request. Must be between 10 and 50. Default is 20."
      },
      "cursor": {
        "type": "string",
        "description": "A cursor to return a specific page of results. Cursors can be found from the `pagination.nextCursor` value in each response."
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## loops\_list\_transactional\_emails

List transactional emails

**Parameters:**

| Parameter | Type   | Required | Default | Description                                                                                                                   |
| --------- | ------ | -------- | ------- | ----------------------------------------------------------------------------------------------------------------------------- |
| `perPage` | string | No       | —       | How many results to return in each request. Must be between 10 and 50. Default is 20.                                         |
| `cursor`  | string | No       | —       | A cursor, to return a specific page of results. Cursors can be found from the `pagination.nextCursor` value in each response. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "perPage": {
        "type": "string",
        "description": "How many results to return in each request. Must be between 10 and 50. Default is 20."
      },
      "cursor": {
        "type": "string",
        "description": "A cursor, to return a specific page of results. Cursors can be found from the `pagination.nextCursor` value in each response."
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## loops\_list\_transactional\_groups

List transactional groups

**Parameters:**

| Parameter | Type   | Required | Default | Description                                                                                                                  |
| --------- | ------ | -------- | ------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `perPage` | string | No       | —       | How many results to return in each request. Must be between 10 and 50. Default is 20.                                        |
| `cursor`  | string | No       | —       | A cursor to return a specific page of results. Cursors can be found from the `pagination.nextCursor` value in each response. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "perPage": {
        "type": "string",
        "description": "How many results to return in each request. Must be between 10 and 50. Default is 20."
      },
      "cursor": {
        "type": "string",
        "description": "A cursor to return a specific page of results. Cursors can be found from the `pagination.nextCursor` value in each response."
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## loops\_list\_workflows

List workflows

**Parameters:**

| Parameter | Type   | Required | Default | Description                                                                                                                  |
| --------- | ------ | -------- | ------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `perPage` | string | No       | —       | How many results to return in each request. Must be between 10 and 50. Default is 20.                                        |
| `cursor`  | string | No       | —       | A cursor to return a specific page of results. Cursors can be found from the `pagination.nextCursor` value in each response. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "perPage": {
        "type": "string",
        "description": "How many results to return in each request. Must be between 10 and 50. Default is 20."
      },
      "cursor": {
        "type": "string",
        "description": "A cursor to return a specific page of results. Cursors can be found from the `pagination.nextCursor` value in each response."
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## loops\_publish\_transactional\_email\_draft

Publish a transactional email draft

**Parameters:**

| Parameter         | Type   | Required | Default | Description                        |
| ----------------- | ------ | -------- | ------- | ---------------------------------- |
| `transactionalId` | string | Yes      | —       | The ID of the transactional email. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "transactionalId": {
        "type": "string",
        "description": "The ID of the transactional email."
      }
    },
    "required": [
      "PCID",
      "transactionalId"
    ]
  }
  ```
</Expandable>

***

## loops\_remove\_contact\_suppression

Remove a contact from suppression list

**Parameters:**

| Parameter | Type   | Required | Default | Description                 |
| --------- | ------ | -------- | ------- | --------------------------- |
| `email`   | string | No       | —       | Email address (URI-encoded) |
| `userId`  | string | No       | —       | User Id                     |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "email": {
        "type": "string",
        "description": "Email address (URI-encoded)"
      },
      "userId": {
        "type": "string",
        "description": "User Id"
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## loops\_send\_email\_message\_preview

Send a preview of an email message

**Parameters:**

| Parameter           | Type      | Required | Default | Description                                                                       |
| ------------------- | --------- | -------- | ------- | --------------------------------------------------------------------------------- |
| `emailMessageId`    | string    | Yes      | —       | The ID of the email message.                                                      |
| `contactProperties` | object    | No       | —       | Contact property values to render. Accepted for campaign and workflow previews.   |
| `dataVariables`     | object    | No       | —       | Transactional data variables to render. Accepted for transactional previews only. |
| `emails`            | string\[] | Yes      | —       | One or more addresses to send the preview to.                                     |
| `eventProperties`   | object    | No       | —       | Event property values to render. Accepted for workflow previews only.             |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "emailMessageId": {
        "type": "string",
        "description": "The ID of the email message."
      },
      "contactProperties": {
        "type": "object",
        "description": "Contact property values to render. Accepted for campaign and workflow previews."
      },
      "dataVariables": {
        "type": "object",
        "description": "Transactional data variables to render. Accepted for transactional previews only."
      },
      "emails": {
        "type": "array",
        "items": {
          "type": "string"
        },
        "description": "One or more addresses to send the preview to."
      },
      "eventProperties": {
        "type": "object",
        "description": "Event property values to render. Accepted for workflow previews only."
      }
    },
    "required": [
      "PCID",
      "emailMessageId",
      "emails"
    ]
  }
  ```
</Expandable>

***

## loops\_send\_event

Send an event

**Parameters:**

| Parameter         | Type   | Required | Default | Description                                                                                                                                                                |
| ----------------- | ------ | -------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Idempotency-Key` | string | No       | —       | Include a unique ID for this request (maximum 100 characters) to avoid duplicate events. [More info](https://loops.so/docs/api-reference/send-event#param-idempotency-key) |
| `email`           | string | No       | —       | The email value                                                                                                                                                            |
| `eventName`       | string | Yes      | —       | Event Name                                                                                                                                                                 |
| `eventProperties` | object | No       | —       | An object containing event property data for the event, available in emails sent by the event.                                                                             |
| `mailingLists`    | object | No       | —       | An object of mailing list IDs and boolean subscription statuses.                                                                                                           |
| `userId`          | string | No       | —       | User Id                                                                                                                                                                    |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "Idempotency-Key": {
        "type": "string",
        "description": "Include a unique ID for this request (maximum 100 characters) to avoid duplicate events. [More info](https://loops.so/docs/api-reference/send-event#param-idempotency-key)"
      },
      "email": {
        "type": "string",
        "description": "The email value"
      },
      "eventName": {
        "type": "string",
        "description": "Event Name"
      },
      "eventProperties": {
        "type": "object",
        "description": "An object containing event property data for the event, available in emails sent by the event."
      },
      "mailingLists": {
        "type": "object",
        "description": "An object of mailing list IDs and boolean subscription statuses."
      },
      "userId": {
        "type": "string",
        "description": "User Id"
      }
    },
    "required": [
      "PCID",
      "eventName"
    ]
  }
  ```
</Expandable>

***

## loops\_send\_transactional\_email

Send a transactional email

**Parameters:**

| Parameter         | Type      | Required | Default | Description                                                                                                                                                                              |
| ----------------- | --------- | -------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Idempotency-Key` | string    | No       | —       | Include a unique ID for this request (maximum 100 characters) to avoid duplicate emails. [More info](https://loops.so/docs/api-reference/send-transactional-email#param-idempotency-key) |
| `addToAudience`   | boolean   | No       | —       | If `true`, a contact will be created in your audience using the `email` value (if a matching contact doesn't already exist).                                                             |
| `attachments`     | object\[] | No       | —       | A list containing file objects to be sent along with an email message.                                                                                                                   |
| `dataVariables`   | object    | No       | —       | An object containing contact data as defined by the data variables added to the transactional email template.                                                                            |
| `email`           | string    | Yes      | —       | The email value                                                                                                                                                                          |
| `transactionalId` | string    | Yes      | —       | The ID of the transactional email to send.                                                                                                                                               |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "Idempotency-Key": {
        "type": "string",
        "description": "Include a unique ID for this request (maximum 100 characters) to avoid duplicate emails. [More info](https://loops.so/docs/api-reference/send-transactional-email#param-idempotency-key)"
      },
      "addToAudience": {
        "type": "boolean",
        "description": "If `true`, a contact will be created in your audience using the `email` value (if a matching contact doesn't already exist)."
      },
      "attachments": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "filename": {
              "type": "string",
              "description": "The name of the file, shown in email clients."
            },
            "contentType": {
              "type": "string",
              "description": "The MIME type of the file."
            },
            "data": {
              "type": "string",
              "description": "The base64-encoded content of the file."
            }
          },
          "required": [
            "filename",
            "contentType",
            "data"
          ]
        },
        "description": "A list containing file objects to be sent along with an email message."
      },
      "dataVariables": {
        "type": "object",
        "description": "An object containing contact data as defined by the data variables added to the transactional email template."
      },
      "email": {
        "type": "string",
        "description": "The email value"
      },
      "transactionalId": {
        "type": "string",
        "description": "The ID of the transactional email to send."
      }
    },
    "required": [
      "PCID",
      "email",
      "transactionalId"
    ]
  }
  ```
</Expandable>

***

## loops\_test\_api\_key

Test your API key

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## loops\_update\_campaign

Update a campaign

**Parameters:**

| Parameter           | Type   | Required | Default | Description                                                                                                                                               |                                                                          |
| ------------------- | ------ | -------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
| `campaignId`        | string | Yes      | —       | The ID of the campaign.                                                                                                                                   |                                                                          |
| `audienceFilter`    | object | No       | —       | A tree of audience conditions combined with `match`. Null when the campaign targets a mailing list or segment without an explicit filter.                 |                                                                          |
| `audienceSegmentId` | string | null     | No      | —                                                                                                                                                         | The ID of an audience segment. Setting this clears any `audienceFilter`. |
| `campaignGroupId`   | string | No       | —       | The ID of the group to move this campaign to.                                                                                                             |                                                                          |
| `mailingListId`     | string | null     | No      | —                                                                                                                                                         | The ID of the mailing list to send to.                                   |
| `name`              | string | No       | —       | The name value                                                                                                                                            |                                                                          |
| `scheduling`        | object | No       | —       | When the campaign should send. `timestamp` is required and must be in the future when `method` is `schedule`, and must be omitted when `method` is `now`. |                                                                          |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "campaignId": {
        "type": "string",
        "description": "The ID of the campaign."
      },
      "audienceFilter": {
        "type": "object",
        "description": "A tree of audience conditions combined with `match`. Null when the campaign targets a mailing list or segment without an explicit filter.",
        "properties": {
          "match": {
            "type": "string",
            "description": "The match value",
            "enum": [
              "all",
              "any"
            ]
          },
          "conditions": {
            "type": "array",
            "description": "The conditions value"
          }
        },
        "required": [
          "match",
          "conditions"
        ]
      },
      "audienceSegmentId": {
        "type": [
          "string",
          "null"
        ],
        "description": "The ID of an audience segment. Setting this clears any `audienceFilter`."
      },
      "campaignGroupId": {
        "type": "string",
        "description": "The ID of the group to move this campaign to."
      },
      "mailingListId": {
        "type": [
          "string",
          "null"
        ],
        "description": "The ID of the mailing list to send to."
      },
      "name": {
        "type": "string",
        "description": "The name value"
      },
      "scheduling": {
        "type": "object",
        "description": "When the campaign should send. `timestamp` is required and must be in the future when `method` is `schedule`, and must be omitted when `method` is `now`.",
        "properties": {
          "method": {
            "type": "string",
            "description": "The method value",
            "enum": [
              "now",
              "schedule"
            ]
          },
          "timestamp": {
            "type": "string",
            "description": "The timestamp value"
          }
        },
        "required": [
          "method"
        ]
      }
    },
    "required": [
      "PCID",
      "campaignId"
    ]
  }
  ```
</Expandable>

***

## loops\_update\_campaign\_group

Update a campaign group

**Parameters:**

| Parameter         | Type   | Required | Default | Description                                             |
| ----------------- | ------ | -------- | ------- | ------------------------------------------------------- |
| `campaignGroupId` | string | Yes      | —       | The ID of the campaign group.                           |
| `description`     | string | No       | —       | A description for the group.                            |
| `name`            | string | No       | —       | The group name. Cannot be the reserved name "Unsorted". |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "campaignGroupId": {
        "type": "string",
        "description": "The ID of the campaign group."
      },
      "description": {
        "type": "string",
        "description": "A description for the group."
      },
      "name": {
        "type": "string",
        "description": "The group name. Cannot be the reserved name \"Unsorted\"."
      }
    },
    "required": [
      "PCID",
      "campaignGroupId"
    ]
  }
  ```
</Expandable>

***

## loops\_update\_component

Update a component

**Parameters:**

| Parameter     | Type   | Required | Default | Description                          |
| ------------- | ------ | -------- | ------- | ------------------------------------ |
| `componentId` | string | Yes      | —       | The ID of the component.             |
| `lmx`         | string | No       | —       | The component body as an LMX string. |
| `name`        | string | No       | —       | The name value                       |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "componentId": {
        "type": "string",
        "description": "The ID of the component."
      },
      "lmx": {
        "type": "string",
        "description": "The component body as an LMX string."
      },
      "name": {
        "type": "string",
        "description": "The name value"
      }
    },
    "required": [
      "PCID",
      "componentId"
    ]
  }
  ```
</Expandable>

***

## loops\_update\_contact

Update a contact

**Parameters:**

| Parameter      | Type    | Required | Default | Description                                                      |
| -------------- | ------- | -------- | ------- | ---------------------------------------------------------------- |
| `email`        | string  | No       | —       | The email value                                                  |
| `firstName`    | string  | No       | —       | First Name                                                       |
| `lastName`     | string  | No       | —       | Last Name                                                        |
| `mailingLists` | object  | No       | —       | An object of mailing list IDs and boolean subscription statuses. |
| `subscribed`   | boolean | No       | —       | The subscribed value                                             |
| `userGroup`    | string  | No       | —       | User Group                                                       |
| `userId`       | string  | No       | —       | User Id                                                          |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "email": {
        "type": "string",
        "description": "The email value"
      },
      "firstName": {
        "type": "string",
        "description": "First Name"
      },
      "lastName": {
        "type": "string",
        "description": "Last Name"
      },
      "mailingLists": {
        "type": "object",
        "description": "An object of mailing list IDs and boolean subscription statuses."
      },
      "subscribed": {
        "type": "boolean",
        "description": "The subscribed value"
      },
      "userGroup": {
        "type": "string",
        "description": "User Group"
      },
      "userId": {
        "type": "string",
        "description": "User Id"
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## loops\_update\_email\_message

Update an email message

**Parameters:**

| Parameter                    | Type   | Required | Default | Description                                                                                                                                                                                 |
| ---------------------------- | ------ | -------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `emailMessageId`             | string | Yes      | —       | The ID of the email message.                                                                                                                                                                |
| `bccEmail`                   | string | No       | —       | BCC email address. Requires the team to have CC/BCC enabled.                                                                                                                                |
| `ccEmail`                    | string | No       | —       | CC email address. Requires the team to have CC/BCC enabled.                                                                                                                                 |
| `contactPropertiesFallbacks` | object | No       | —       | Fallback values for contact properties, keyed by property name. Per-key merge: a string value sets the fallback, a null value deletes it, and keys omitted from the map are left unchanged. |
| `dataVariablesFallbacks`     | object | No       | —       | Fallback values for data variables, keyed by variable name. Per-key merge: a string value sets the fallback, a null value deletes it, and keys omitted from the map are left unchanged.     |
| `emailFormat`                | string | No       | —       | The rendering format of the email.                                                                                                                                                          |
| `eventPropertiesFallbacks`   | object | No       | —       | Fallback values for event properties, keyed by property name. Per-key merge: a string value sets the fallback, a null value deletes it, and keys omitted from the map are left unchanged.   |
| `expectedRevisionId`         | string | No       | —       | The `contentRevisionId` you last fetched. Used for optimistic concurrency — the request is rejected with 409 if the server's revision has advanced.                                         |
| `fromEmail`                  | string | No       | —       | The sender username (without `@` or domain). The team's sending domain is appended automatically.                                                                                           |
| `fromName`                   | string | No       | —       | From Name                                                                                                                                                                                   |
| `languageCode`               | string | No       | —       | Language code for the email. Requires translation to be enabled for the team.                                                                                                               |
| `lmx`                        | string | No       | —       | The email body serialized as LMX. Styles must be embedded in the LMX `&lt;Style /&gt;` tag.                                                                                                 |
| `previewText`                | string | No       | —       | Preview Text                                                                                                                                                                                |
| `replyToEmail`               | string | No       | —       | Reply-to email. Must be empty or a valid email address.                                                                                                                                     |
| `subject`                    | string | No       | —       | The subject value                                                                                                                                                                           |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "emailMessageId": {
        "type": "string",
        "description": "The ID of the email message."
      },
      "bccEmail": {
        "type": "string",
        "description": "BCC email address. Requires the team to have CC/BCC enabled."
      },
      "ccEmail": {
        "type": "string",
        "description": "CC email address. Requires the team to have CC/BCC enabled."
      },
      "contactPropertiesFallbacks": {
        "type": "object",
        "description": "Fallback values for contact properties, keyed by property name. Per-key merge: a string value sets the fallback, a null value deletes it, and keys omitted from the map are left unchanged."
      },
      "dataVariablesFallbacks": {
        "type": "object",
        "description": "Fallback values for data variables, keyed by variable name. Per-key merge: a string value sets the fallback, a null value deletes it, and keys omitted from the map are left unchanged."
      },
      "emailFormat": {
        "type": "string",
        "description": "The rendering format of the email.",
        "enum": [
          "styled",
          "plain"
        ]
      },
      "eventPropertiesFallbacks": {
        "type": "object",
        "description": "Fallback values for event properties, keyed by property name. Per-key merge: a string value sets the fallback, a null value deletes it, and keys omitted from the map are left unchanged."
      },
      "expectedRevisionId": {
        "type": "string",
        "description": "The `contentRevisionId` you last fetched. Used for optimistic concurrency — the request is rejected with 409 if the server's revision has advanced."
      },
      "fromEmail": {
        "type": "string",
        "description": "The sender username (without `@` or domain). The team's sending domain is appended automatically."
      },
      "fromName": {
        "type": "string",
        "description": "From Name"
      },
      "languageCode": {
        "type": "string",
        "description": "Language code for the email. Requires translation to be enabled for the team."
      },
      "lmx": {
        "type": "string",
        "description": "The email body serialized as LMX. Styles must be embedded in the LMX `<Style />` tag."
      },
      "previewText": {
        "type": "string",
        "description": "Preview Text"
      },
      "replyToEmail": {
        "type": "string",
        "description": "Reply-to email. Must be empty or a valid email address."
      },
      "subject": {
        "type": "string",
        "description": "The subject value"
      }
    },
    "required": [
      "PCID",
      "emailMessageId"
    ]
  }
  ```
</Expandable>

***

## loops\_update\_theme

Update a theme

**Parameters:**

| Parameter | Type   | Required | Default | Description                                                                                                                                                            |
| --------- | ------ | -------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `themeId` | string | Yes      | —       | The ID of the theme.                                                                                                                                                   |
| `name`    | string | No       | —       | The name value                                                                                                                                                         |
| `styles`  | object | No       | —       | Flat map of style attributes, matching the attribute names accepted by the LMX `&lt;Style /&gt;` tag. All attributes are returned with the values stored on the theme. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "themeId": {
        "type": "string",
        "description": "The ID of the theme."
      },
      "name": {
        "type": "string",
        "description": "The name value"
      },
      "styles": {
        "type": "object",
        "description": "Flat map of style attributes, matching the attribute names accepted by the LMX `<Style />` tag. All attributes are returned with the values stored on the theme.",
        "properties": {
          "backgroundColor": {
            "type": "string",
            "description": "Background Color"
          },
          "backgroundXPadding": {
            "type": "number",
            "description": "Background X Padding"
          },
          "backgroundYPadding": {
            "type": "number",
            "description": "Background Y Padding"
          },
          "bodyColor": {
            "type": "string",
            "description": "Body Color"
          },
          "bodyXPadding": {
            "type": "number",
            "description": "Body X Padding"
          },
          "bodyYPadding": {
            "type": "number",
            "description": "Body Y Padding"
          },
          "bodyFontFamily": {
            "type": "string",
            "description": "Body Font Family"
          },
          "bodyFontCategory": {
            "type": "string",
            "description": "Body Font Category"
          },
          "borderColor": {
            "type": "string",
            "description": "Border Color"
          },
          "borderWidth": {
            "type": "number",
            "description": "Border Width"
          },
          "borderRadius": {
            "type": "number",
            "description": "Border Radius"
          },
          "buttonBodyColor": {
            "type": "string",
            "description": "Button Body Color"
          },
          "buttonBodyXPadding": {
            "type": "number",
            "description": "Button Body X Padding"
          },
          "buttonBodyYPadding": {
            "type": "number",
            "description": "Button Body Y Padding"
          },
          "buttonBorderColor": {
            "type": "string",
            "description": "Button Border Color"
          },
          "buttonBorderWidth": {
            "type": "number",
            "description": "Button Border Width"
          },
          "buttonBorderRadius": {
            "type": "number",
            "description": "Button Border Radius"
          },
          "buttonTextColor": {
            "type": "string",
            "description": "Button Text Color"
          },
          "buttonTextFormat": {
            "type": "number",
            "description": "Button Text Format"
          },
          "buttonTextFontSize": {
            "type": "number",
            "description": "Button Text Font Size"
          },
          "dividerColor": {
            "type": "string",
            "description": "Divider Color"
          },
          "dividerBorderWidth": {
            "type": "number",
            "description": "Divider Border Width"
          },
          "textBaseColor": {
            "type": "string",
            "description": "Text Base Color"
          },
          "textBaseFontSize": {
            "type": "number",
            "description": "Text Base Font Size"
          },
          "textBaseLineHeight": {
            "type": "number",
            "description": "Text Base Line Height"
          },
          "textBaseLetterSpacing": {
            "type": "number",
            "description": "Text Base Letter Spacing"
          },
          "textLinkColor": {
            "type": "string",
            "description": "Text Link Color"
          },
          "heading1Color": {
            "type": "string",
            "description": "Heading1 Color"
          },
          "heading1FontSize": {
            "type": "number",
            "description": "Heading1 Font Size"
          },
          "heading1LineHeight": {
            "type": "number",
            "description": "Heading1 Line Height"
          },
          "heading1LetterSpacing": {
            "type": "number",
            "description": "Heading1 Letter Spacing"
          },
          "heading2Color": {
            "type": "string",
            "description": "Heading2 Color"
          },
          "heading2FontSize": {
            "type": "number",
            "description": "Heading2 Font Size"
          },
          "heading2LineHeight": {
            "type": "number",
            "description": "Heading2 Line Height"
          },
          "heading2LetterSpacing": {
            "type": "number",
            "description": "Heading2 Letter Spacing"
          },
          "heading3Color": {
            "type": "string",
            "description": "Heading3 Color"
          },
          "heading3FontSize": {
            "type": "number",
            "description": "Heading3 Font Size"
          },
          "heading3LineHeight": {
            "type": "number",
            "description": "Heading3 Line Height"
          },
          "heading3LetterSpacing": {
            "type": "number",
            "description": "Heading3 Letter Spacing"
          }
        }
      }
    },
    "required": [
      "PCID",
      "themeId"
    ]
  }
  ```
</Expandable>

***

## loops\_update\_transactional\_email

Update a transactional email

**Parameters:**

| Parameter              | Type   | Required | Default | Description                                              |
| ---------------------- | ------ | -------- | ------- | -------------------------------------------------------- |
| `transactionalId`      | string | Yes      | —       | The ID of the transactional email.                       |
| `name`                 | string | No       | —       | The name value                                           |
| `transactionalGroupId` | string | No       | —       | The ID of the group to move this transactional email to. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "transactionalId": {
        "type": "string",
        "description": "The ID of the transactional email."
      },
      "name": {
        "type": "string",
        "description": "The name value"
      },
      "transactionalGroupId": {
        "type": "string",
        "description": "The ID of the group to move this transactional email to."
      }
    },
    "required": [
      "PCID",
      "transactionalId"
    ]
  }
  ```
</Expandable>

***

## loops\_update\_transactional\_group

Update a transactional group

**Parameters:**

| Parameter              | Type   | Required | Default | Description                                             |
| ---------------------- | ------ | -------- | ------- | ------------------------------------------------------- |
| `transactionalGroupId` | string | Yes      | —       | The ID of the transactional group.                      |
| `description`          | string | No       | —       | A description for the group.                            |
| `name`                 | string | No       | —       | The group name. Cannot be the reserved name "Unsorted". |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "transactionalGroupId": {
        "type": "string",
        "description": "The ID of the transactional group."
      },
      "description": {
        "type": "string",
        "description": "A description for the group."
      },
      "name": {
        "type": "string",
        "description": "The group name. Cannot be the reserved name \"Unsorted\"."
      }
    },
    "required": [
      "PCID",
      "transactionalGroupId"
    ]
  }
  ```
</Expandable>
