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

# Hootsuite Integration for AI Agents & Workflows

> Social media management platform for scheduling posts and managing profiles

{/* Self-hosted logo — build-time vendored from modulex.json / Iconify (see scripts/lib/logo.js). */}

<img src="https://mintcdn.com/modulexaillc/zKB2qsP6Q61VNLfB/logos/hootsuite.svg?fit=max&auto=format&n=zKB2qsP6Q61VNLfB&q=85&s=08fbc67e89b6c1ebff82f6bece48f412" alt="Hootsuite logo" width="72" height="72" data-path="logos/hootsuite.svg" />

## Overview

Add **Hootsuite** to any ModuleX agent or workflow. Social media management platform for scheduling posts and managing profiles via the Hootsuite REST API (`platform.hootsuite.com/v1`).

<Info>
  **Categories**: Social Media · Marketing · **Auth**: OAuth2 · **Actions**: 4
</Info>

## Authentication

### OAuth2 Authentication

Connect using Hootsuite OAuth (recommended)

#### Required Credentials

| Field         | Description                       | Required | Format |
| ------------- | --------------------------------- | -------- | ------ |
| Client ID     | Hootsuite OAuth App Client ID     | Yes      | `-`    |
| Client Secret | Hootsuite OAuth App Client Secret | Yes      | `-`    |

#### OAuth Configuration

* **Authorization URL**: `https://platform.hootsuite.com/oauth2/auth`
* **Token URL**: `https://platform.hootsuite.com/oauth2/token`
* **Scopes**: `offline`

## Available Actions

<AccordionGroup>
  <Accordion title="create_media_upload_job — Creates a new media upload job on Hootsuite by uploading a file from a public URL">
    ### Parameters

    <ResponseField name="size_bytes" type="integer" required>
      The size of the file in bytes
    </ResponseField>

    <ResponseField name="mime_type" type="string" required>
      The MIME type of the file (e.g. image/png, image/jpeg, video/mp4)
    </ResponseField>

    <ResponseField name="file_url" type="string" required>
      A publicly-accessible URL to the file to upload
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "file_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "File Id"
        }
      },
      "required": [
        "success"
      ],
      "title": "CreateMediaUploadJobOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_media_upload_status — Gets the status of a media upload job on Hootsuite">
    ### Parameters

    <ResponseField name="file_id" type="string" required>
      The ID of the media file to check status for
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "state": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "State"
        },
        "download_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Download Url"
        },
        "thumbnail_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Thumbnail Url"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetMediaUploadStatusOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="list_social_profiles — Retrieves a list of social profiles for the authenticated Hootsuite account">
    ### Response

    ```json theme={null}
    {
      "$defs": {
        "SocialProfile": {
          "additionalProperties": false,
          "description": "A Hootsuite social profile.",
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "type": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Type"
            },
            "social_network_username": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Social Network Username"
            },
            "social_network_id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Social Network Id"
            }
          },
          "title": "SocialProfile",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "profiles": {
          "items": {
            "$ref": "#/$defs/SocialProfile"
          },
          "title": "Profiles",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "ListSocialProfilesOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="schedule_message — Schedules a message to be published on one or more social profiles">
    ### Parameters

    <ResponseField name="text" type="string" required>
      The message text to publish
    </ResponseField>

    <ResponseField name="social_profile_ids" type="array" required>
      Array of social profile ID strings to post to (use list\_social\_profiles to discover IDs)
    </ResponseField>

    <ResponseField name="scheduled_send_time" type="string">
      ISO-8601 UTC time to send the message (must end with 'Z'). If omitted, sends immediately.
    </ResponseField>

    <ResponseField name="media_urls" type="array">
      Array of ow\.ly media URLs to attach to the message
    </ResponseField>

    <ResponseField name="media" type="array">
      Array of media IDs from create\_media\_upload\_job to attach
    </ResponseField>

    <ResponseField name="tags" type="array">
      Array of Hootsuite message tags to apply (case sensitive)
    </ResponseField>

    <ResponseField name="webhook_urls" type="array">
      Array of webhook URLs to call when message state changes
    </ResponseField>

    <ResponseField name="targeting" type="object">
      Targeting object for Facebook Page and LinkedIn Company posts. See Hootsuite API docs for structure.
    </ResponseField>

    <ResponseField name="privacy" type="object">
      Privacy settings object with optional facebook.visibility and linkedIn.visibility arrays
    </ResponseField>

    <ResponseField name="latitude" type="number">
      Latitude in decimal degrees (-90 to 90)
    </ResponseField>

    <ResponseField name="longitude" type="number">
      Longitude in decimal degrees (-180 to 180)
    </ResponseField>

    <ResponseField name="email_notification" type="boolean">
      Whether to send email notification when the message is published
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ScheduledMessage": {
          "additionalProperties": false,
          "description": "A scheduled message returned by the Hootsuite API.",
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "state": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "State"
            },
            "text": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Text"
            },
            "scheduled_send_time": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Scheduled Send Time"
            }
          },
          "title": "ScheduledMessage",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "messages": {
          "items": {
            "$ref": "#/$defs/ScheduledMessage"
          },
          "title": "Messages",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "ScheduleMessageOutput",
      "type": "object"
    }
    ```
  </Accordion>
</AccordionGroup>

## Limits & Quotas

* Hootsuite API rate limits vary by plan tier; consult your account's developer dashboard for current limits.
* Free/Professional plans have lower API access thresholds than Enterprise plans.
* Error model: non-2xx responses and timeouts are caught and returned as `success=False` + `error` rather than raising.

## Related integrations

<CardGroup cols={3}>
  <Card title="LinkedIn" href="/integrations/tools/linkedin" />

  <Card title="Product Hunt" href="/integrations/tools/product-hunt" />

  <Card title="Ahrefs" href="/integrations/tools/ahrefs" />
</CardGroup>

## Links

* [Hootsuite](https://hootsuite.com)
