Hootsuite Messages API

The Messages API from Hootsuite — 5 operation(s) for messages.

Operations 7

POST /v1/messages Schedule messages #
GET /v1/messages Retrieve outbound messages #
GET /v1/messages/{messageId} Retrieve message #
DELETE /v1/messages/{messageId} Delete message #
POST /v1/messages/{messageId}/approve Approve message #
POST /v1/messages/{messageId}/reject Reject message #
GET /v1/messages/{messageId}/history Get message review history #

Documentation

Specifications

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/hootsuite-messages-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

hootsuite-messages-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: "[![Run in Postman](https://run.pstmn.io/button.svg)](https://app.getpostman.com/run-collection/eeda0fcdf55ea26bd0ec#?env%5BHootsuite%5D=W3sidHlwZSI6InRleHQiLCJlbmFibGVkIjp0cnVlLCJrZXkiOiJ1cmwiLCJ2YWx1ZSI6Imh0dHBzOi8vcGxhdGZvcm0uaG9vdHN1aXRlLmNvbSJ9LHsidHlwZSI6InRleHQiLCJlbmFibGVkIjp0cnVlLCJrZXkiOiJhdXRob3JpemF0aW9uX3VybCIsInZhbHVlIjoiaHR0cHM6Ly9wbGF0Zm9ybS5ob290c3VpdGUuY29tL29hdXRoMi9hdXRoIn0seyJ0eXBlIjoidGV4dCIsImVuYWJsZWQiOnRydWUsImtleSI6InRva2VuX3VybCIsInZhbHVlIjoiaHR0cHM6Ly9wbGF0Zm9ybS5ob290c3VpdGUuY29tL29hdXRoMi90b2tlbiJ9LHsidHlwZSI6InRleHQiLCJlbmFibGVkIjp0cnVlLCJrZXkiOiJjbGllbnRfaWQiLCJ2YWx1ZSI6IiJ9LHsidHlwZSI6InRleHQiLCJlbmFibGVkIjp0cnVlLCJrZXkiOiJjbGllbnRfc2VjcmV0IiwidmFsdWUiOiIifV0=)\n# Introduction\nThe Hootsuite API is built on REST principles and uses JSON as a data interchange format.\n### Base URL\nAll URLs referenced in this document use the following base: https://platform.hootsuite.com. The Hootsuite API is served over HTTPS to ensure data privacy.\n### Request Format\nThe Hootsuite API supports the following HTTP verbs:\n| Verb       | Description  |\n|--------|------|\n| GET    | GET requests retrieve resources. GET requests with query parameters should be [URL encoded](https://en.wikipedia.org/wiki/Percent-encoding).  |\n| POST   | POST requests create or update resources. POST requests can partially update a resource by passing a subset of the fields that should be updated. To remove a single field set it to null. POST requests should always set content-type and character encoding to: application/json;charset=utf-8. |\n| DELETE | DELETE requests delete resources. Delete requests return a 200 OK with an empty data envelope if the request was successful.|\n### Response Format\nAll responses are returned in JSON. The response is wrapped in a top level data envelope which is an object or array depending on whether a single item or a collection is returned. If a single item is returned the data field will be an object. If a collection is returned the field will be an array.\nIf the response was unsuccessful an errors array will be returned. Responses that partially fail will return both a data and errors object.\nA single item response:\n```\n{\n  \"data\": {},\n  \"errors\": [{},{},{}]\n}\n```\nA collection response:\n```\n{\n  \"data\": [{},{},{}],\n  \"errors\": [{},{},{}]\n  \"metadata\": {}\n}\n```\n### HTTP Response Codes\nThe Hootsuite API uses HTTP status codes to indicate the status of your request.\n|Code |Description |\n|---|---|\n|200 OK|Resource was successfully created, updated, deleted or retrieved.|\n|400 Bad Request|Invalid request, possibly due to missing parameters|\n|401 Unauthorized|Missing or invalid authentication|\n|403 Forbidden|Access denied|\n|404 Not Found|Requested resource does not exist|\n|429 Too Many Requests|Rate Limit Exceeded. Please contact dev.support@hootsuite.com for assistance|\n|500 Server Error|Unexpected error occurred on the server|\n### API Error Handling\nError responses are returned with the following fields. Note, the schema for OAuth2 error responses are different and comply with the RFC. Please refer to the Authorization endpoint documentation for details.\n|Field|Description|\n|---|---|\n|code|Unique number indicating type of error|\n|message|Description of error|\n|id|Unique id for tracing purposes|\n|resource|(optional) type and id are used to point to the field(s) that caused the error|\n```\n{\n  \"errors\": [\n    {\n      \"code\" : 1234,\n      \"message\": \"Could not create message for social profile\",\n      \"id\" : \"f7d32670-4e6a-48c0-a2a7-87803536a712\",\n      \"resource\": {\n        \"type\":\"socialProfile\",\n        \"id\":\"7534653235\"\n      }\n    }\n  ]\n}\n```\n### Error Codes\nHere is a list of error codes and descriptions returned by our APIs:\n|Code|Description|\n|---|---|\n|1000|Missing or duplicate access token|\n|1001|Invalid access token|\n|1002|Invalid API key|\n|1003|Account plan limit exceeded|\n|1004|API plan limit exceeded|\n|1005|Token could not be retrieved|\n|1006|Token removal failed|\n|1007|The client could not be authenticated due to missing or invalid client credentials|\n|1008|Resource Owner authentication failed|\n|1009|Invalid grant_type|\n|1010|Invalid OAuth request|\n|1011|Duplicate OAuth parameters|\n|1012|Invalid authorization code|\n|1013|Must be confidential client|\n|1014|Unauthorized JWT user|\n|1015|Client registration could not be deleted|\n|1016|Client info could not be retrieved|\n|1017|Client info could not be updated|\n|1018|Client could not be registered|\n|1019|A registration type must be selected|\n|1020|Client key could not be deleted|\n|1021|The id_token values could not be retrieved|\n|1022|id_token could not be registered|\n|1023|id_token could not be removed therefore user logout could not be executed|\n|1024|Token could not be revoked|\n|1025|Token could not be registered|\n|1026|Non-valid parameter list for this operation|\n|1027|Missing authorization code|\n|1028|Authorization code could not be validated|\n|1029|id_token could not be validated|\n|1030|The client is not authorized to execute a status check|\n|1031|Invalid oauth parameters|\n|1032|Token could not be validated|\n|1033|The requested scope is not valid|\n|1034|The session is not valid|\n|1035|Missing oauth_token parameter|\n|1036|oauth_token invalid or expired|\n|1037|The required scope to access this endpoint was not granted by the user|\n|1038|token_type_hint is not supported|\n|1039|Client not authorized to revoke token|\n|1040|oauth_consumer_key invalid or expired|\n|1041|The token may not have been revoked due to an unknown error|\n|1042|Missing oauth_signature|\n|1043|Too many requests|\n|1044|Invalid oauth_signature_method|\n|1100|Invalid JSON schema|\n|1201|Not authorized to make changes to organization|\n|2000|Invalid member password|\n|2001|Invalid member email|\n|2002|Invalid member name (please enter name between 2 and 100 chars in length)|\n|2003|Invalid member default timezone|\n|2004|Invalid initials|\n|2005|Missing member name|\n|2006|Missing member email|\n|2007|Missing member password|\n|2008|No more available seats in organization|\n|2303|Invalid organization ID|\n|2304|Invalid member ID|\n|2305|Missing member ID|\n|2306|Missing social profile ID|\n|3002|Team name has to be between 2-200 characters|\n|3003|Unable to find an organization with that ID|\n|3004|Missing team ID|\n|3005|Invalid team ID|\n|3006|Team name has to be unique in the organization|\n|3008|Member is not seated in the organization|\n|3010|Email is already in use|\n|3020|Invalid cursor format|\n|3021|Invalid social network type|\n|3301|Payment member can’t be removed from the organization|\n|4000|Schema validation failed|\n|4001|Resource not found|\n|4002|Insufficient permissions to view organization members|\n|4003|Insufficient permissions to view member permissions|\n|4004|Insufficient permissions to view member organizations|\n|4005|Insufficient permissions to view team members|\n|4006|Insufficient permissions to view team|\n|4007|Insufficient permissions to create team|\n|4008|Insufficient permissions to view team social profile|\n|4009|Insufficient organization permissions|\n|4010|Insufficient permissions to view organization teams|\n|4303|Member does not exist in organization|\n|5000|An unknown error occurred|\n|5001|HTTP method not permitted|\n|5002|Unsupported operation|\n|9000|An internal error occurred|\n|40001|Social profile isn’t owned by organization (required for posting messages with tags)|\n|40003|You have attempted to delete a message that cannot be deleted in its current state|\n|40004|Only attachments from http://static.ow.ly or http://ow.ly/i/ are currently allowed|\n|40005|Insufficient permission to create new message tags|\n|40019|Message state filter not supported|\n|40020|Specified date range is too large|\n|40021|Uploaded media is not yet ready to be used (further processing required)|\n|40022|Invalid boolean for includeUnscheduledReviewMsgs flag|\n|40023|Twitter only allows 1 network per message|\n|40024|Posting to Facebook Groups is no longer supported|\n|40025|Scheduled message limit reached|\n"
  version: '1.0'
  title: Hootsuite REST Messages API
  contact:
    email: dev.support@hootsuite.com
  license:
    name: Hootsuite Developer Terms and API License Agreement
    url: https://hootsuite.com/legal/dev-api-terms
servers:
- url: https://platform.hootsuite.com
security:
- OAuth2: []
tags:
- name: Messages
paths:
  /v1/messages:
    post:
      tags:
      - Messages
      operationId: scheduleMessage
      summary: Schedule messages
      description: Schedules a message to send on one or more social profiles (except Pinterest). Returns an array of uniquely identifiable messages (one per social profile requested).<br/><br/>Scheduling a message to Pinterest can not be bundled with any other social profiles.
      parameters:
      - $ref: '#/components/parameters/bearerToken'
      requestBody:
        content:
          application/json;charset=utf-8:
            schema:
              $ref: '#/components/schemas/Message'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/SocialProfileMessagesResponseEnvelope'
        '400':
          description: Bad Request
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/ErrorsResponseEnvelope'
    get:
      tags:
      - Messages
      operationId: retrieveMessages
      summary: Retrieve outbound messages
      description: 'Outbound messages are messages that are scheduled or were previously sent. This endpoint returns outbound messages sorted by increasing scheduled send time. Messages pending approval, including those created by and/or actionable by the given user, will also be returned via this API.


        Messages returned can be filtered by social profile or the current state of the message. If more than 50 results are returned a cursor will be automatically created to paginate the results.


        Query Parameters must be [URL encoded](https://en.wikipedia.org/wiki/Percent-encoding). For example:


        ```

        ?startTime=2020-01-01T00%3A00%3A00Z

        &endTime=2020-01-15T17%3A55%3A01Z

        &socialProfileIds=1234

        &state=SCHEDULED

        &limit=5

        ```


        To specify multiple social profiles, use the following [syntax](http://stackoverflow.com/questions/6243051/how-to-pass-an-array-within-a-query-string):


        ```

        ?socialProfileIds=1234&socialProfileIds=5678

        ```

        '
      parameters:
      - $ref: '#/components/parameters/bearerToken'
      - name: startTime
        in: query
        description: The start date range of messages to be returned. In [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format.
        required: true
        example: 2020-01-01 00:00:00+00:00
        schema:
          type: string
      - name: endTime
        in: query
        description: The end date range of messages to be returned. In [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format. Must not be later than 4 weeks from startTime.
        required: true
        example: 2020-01-15 17:55:01+00:00
        schema:
          type: string
      - name: state
        in: query
        description: A filter to return messages with in the matching state. Allowed values are PENDING_APPROVAL, REJECTED, SENT, SCHEDULED and SEND_FAILED_PERMANENTLY.
        required: false
        example: SCHEDULED
        schema:
          type: string
      - name: socialProfileIds
        in: query
        description: A filter to return messages for certain social profiles.
        required: false
        example: '115185509'
        schema:
          type: integer
      - name: limit
        in: query
        description: Maximum number of messages to be returned in the response. Defaults to 50 if not specified. Maximum allowable limit is 100.
        required: false
        schema:
          type: integer
      - name: cursor
        in: query
        description: Cursor to a specific page in the result set. Defaults to the first page.
        required: false
        schema:
          type: string
      - name: includeUnscheduledReviewMsgs
        in: query
        description: Flag to retrieve unscheduled (Send Now) review messages on top of scheduled ones retrieved from time range query.
        required: false
        schema:
          type: boolean
      responses:
        '200':
          description: Success
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/SocialProfileMessagesResponseEnvelope'
        '400':
          description: Bad Request
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/ErrorsResponseEnvelope'
  /v1/messages/{messageId}:
    get:
      tags:
      - Messages
      operationId: retrieveMessage
      summary: Retrieve message
      description: 'Retrieves a message. A message is always associated with a single social profile. Messages might be unavailable for a brief time during upload to social networks.

        '
      parameters:
      - $ref: '#/components/parameters/bearerToken'
      - name: messageId
        in: path
        description: The message ID.
        required: true
        example: 4138476039
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/SocialProfileMessageResponseEnvelope'
        '400':
          description: Bad Request
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/ErrorsResponseEnvelope'
    delete:
      tags:
      - Messages
      operationId: deleteMessage
      summary: Delete message
      description: Deletes a message. A message is always associated with a single social profile.
      parameters:
      - $ref: '#/components/parameters/bearerToken'
      - name: messageId
        in: path
        description: The message ID.
        required: true
        example: 4138476039
        schema:
          type: string
      responses:
        '200':
          description: Success
        '400':
          description: Bad Request
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/ErrorsResponseEnvelope'
  /v1/messages/{messageId}/approve:
    post:
      tags:
      - Messages
      operationId: approveMessage
      summary: Approve message
      description: Approve a message.
      parameters:
      - $ref: '#/components/parameters/bearerToken'
      - name: messageId
        in: path
        description: The message ID.
        required: true
        example: 4138476039
        schema:
          type: string
      requestBody:
        content:
          application/json;charset=utf-8:
            schema:
              $ref: '#/components/schemas/ApproveMessageRequest'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/EmptyDataEnvelope'
        '400':
          description: Bad Request
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/ErrorsResponseEnvelope'
  /v1/messages/{messageId}/reject:
    post:
      tags:
      - Messages
      operationId: rejectMessage
      summary: Reject message
      description: Reject a message.
      parameters:
      - $ref: '#/components/parameters/bearerToken'
      - name: messageId
        in: path
        description: The message ID.
        required: true
        example: 4138476039
        schema:
          type: string
      requestBody:
        content:
          application/json;charset=utf-8:
            schema:
              $ref: '#/components/schemas/RejectMessageRequest'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/EmptyDataEnvelope'
        '400':
          description: Bad Request
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/ErrorsResponseEnvelope'
  /v1/messages/{messageId}/history:
    get:
      tags:
      - Messages
      operationId: getMessageHistory
      summary: Get message review history
      description: Gets a message's prescreening review history.
      parameters:
      - $ref: '#/components/parameters/bearerToken'
      - name: messageId
        in: path
        description: The message ID.
        required: true
        example: 4138476039
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/MessageReviewResponseEnvelope'
        '400':
          description: Bad Request
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/ErrorsResponseEnvelope'
        '404':
          description: Not Found
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/ErrorsResponseEnvelope'
components:
  schemas:
    MessageReviewResponseEnvelope:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/Actions'
    FacebookPageTargeting:
      description: Targeting options for Facebook Page. Note that recently Facebook has deprecated feed targeting fields `ageMax`, `genders`, and `locales`.
      type: object
      properties:
        ageMin:
          type: integer
          description: Minimum age to target the message at. If used, must be value of 13, 17, 18, 19, 21.
          example: 45
        education:
          type: array
          description: Education level to target the message at.
          items:
            type: string
            example: collegeGrad
            enum:
            - highSchool
            - college
            - collegeGrad
        interestedIn:
          type: array
          description: Interested in preferences to target the message at.
          items:
            type: string
            example: female
            enum:
            - male
            - female
        relationshipStatus:
          type: array
          description: Relationship status to target the message at.
          items:
            type: string
            example: single
            enum:
            - single
            - relationship
            - married
            - engaged
        countries:
          type: array
          description: Country to target the message at.
          items:
            type: object
            properties:
              k:
                type: string
                description: The full name of the country being targeted.
                example: Canada
              v:
                type: string
                description: The 2-digit ISO 3166 format code, as provided by Facebook.
                example: CA
        regions:
          type: array
          description: Region to target the message at. Note that regions can only be specified when there is exactly one country targeted. Limit 200.
          items:
            type: object
            properties:
              k:
                type: string
                description: The full name of the region being targeted.
                example: British Columbia
              v:
                type: string
                description: The region key, as provided by Facebook.
                example: '2'
        cities:
          type: array
          description: City to target the message at. Note that cities can only be specified when there is exactly one country targeted. Limit 250.
          items:
            type: object
            properties:
              k:
                type: string
                description: The full name of the city being targeted.
                example: Burnaby, BC
              v:
                type: string
                description: The city key, as provided by Facebook.
                example: '292466'
        zips:
          type: array
          description: Zip/Postal Code to target the message at. Limit 50,000.
          items:
            type: object
            properties:
              k:
                type: string
                description: The name of the zip/postal code being targeted.
                example: K1S
              v:
                type: string
                description: The zip/postal code key, as provided by Facebook.
                example: CA:K1S
    Error:
      type: object
      properties:
        code:
          type: number
          description: An error code indicating the type of error that occurred.
          example: 1234
        message:
          type: string
          description: A description of error.
          example: An error message
        id:
          type: string
          description: A unique error id for tracing purposes
          example: f7d32670-4e6a-48c0-a2a7-87803536a712
        resource:
          type: object
          description: A reference to the resource in error
          title: ResourceReference
          properties:
            type:
              type: string
              description: The resource type.
              example: socialProfile
            id:
              type: string
              description: The resource ID.
              example: '7534653235'
    MediaUrl:
      type: object
      properties:
        thumbnailUrl:
          type: string
          description: The thumbnail media URL.
          example: http://static.ow.ly/photos/thumb/cS5.jpg
        url:
          type: string
          description: The media URL.
          example: http://static.ow.ly/photos/normal/cS5.jpg
      description: An ow.ly media URL.
    SocialProfileMessagesResponseEnvelope:
      type: object
      required:
      - data
      properties:
        data:
          type: array
          description: The data response envelope.
          items:
            $ref: '#/components/schemas/SocialProfileMessage'
        metadata:
          title: metadata
          type: object
          description: The metadata response envelope.
          properties:
            cursor:
              title: cursor
              type: object
              description: The cursor to paginate the results. A cursor will be created if the number of results exceeds the limit set in the query parameters.
              properties:
                next:
                  type: string
                  description: A cursor to the next page of results. This is set to null if no more pages exist.
                  example: 1577887200000:4138476039:0
                previous:
                  type: string
                  description: A cursor to the previous page of results. This is set to null if no previous pages exist.
                  example: 1577887200000:4138476039:1
    Actions:
      type: object
      description: An array of the review actions performed on the message.
      properties:
        actions:
          type: array
          items:
            $ref: '#/components/schemas/ReviewAction'
    SocialProfileMessage:
      type: object
      required:
      - id
      - state
      properties:
        id:
          type: string
          description: The message ID.
          example: '4138476039'
        state:
          type: string
          description: The message state.
          example: SCHEDULED
          enum:
          - SCHEDULED
          - SUBMITTED
          - PENDING_APPROVAL
          - SENT
          - SEND_FAILED_PERMANENTLY
          - REJECTED
        text:
          type: string
          description: The message text to publish.
          example: 5 trends that will change how we use social media this year http://owl.li/YuNr2
        socialProfile:
          title: socialProfileReference
          type: object
          description: The social profile that the message will be published to.
          properties:
            id:
              type: string
              description: The social profile ID.
              example: '115185509'
            externalURL:
              type: string
              description: The external public URL of the social profile.
              example: https://www.linkedin.com/in/l-lhs-8654321
        scheduledSendTime:
          type: string
          description: The time the message is scheduled to be sent in UTC time, [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format. Missing or different timezones will not be accepted, to ensure there is no ambiguity about scheduled time. Dates must end with 'Z' to be accepted.
          example: 2018-10-25 10:35:00+00:00
        webhookUrls:
          type: array
          description: The webhook URL(s) to call to when the message’s state changes.
          items:
            type: string
            example: https://myserver.com/inbound
        tags:
          type: array
          description: The Hootsuite message tags to apply to the message. To set tags the social profile must belong to an organization. Tags are case sensitive. Limited permission members can only use the existing tags for organization and cannot create new ones. See more about message tags at the Hootsuite Help Center.
          items:
            type: string
            example: test_tag
        targeting:
          title: targetingOptions
          type: object
          description: Social network targeting options to be applied when publishing the message.
          properties:
            facebookPage:
              $ref: '#/components/schemas/FacebookPageTargeting'
            linkedInCompany:
              $ref: '#/components/schemas/LinkedInCompanyTargeting'
        privacy:
          title: privacyOptions
          type: object
          description: Social network privacy options to be applied when publishing the message.
          properties:
            facebook:
              $ref: '#/components/schemas/FacebookPrivacy'
            linkedIn:
              $ref: '#/components/schemas/LinkedInPrivacy'
        location:
          $ref: '#/components/schemas/Location'
        emailNotification:
          type: boolean
          description: A flag to determine whether email notifications are sent when the message is published.
          example: true
        mediaUrls:
          type: array
          description: The ow.ly media attached to the message
          items:
            $ref: '#/components/schemas/MediaUrl'
        media:
          type: array
          description: The media attached to the message
          items:
            $ref: '#/components/schemas/Media'
        extendedInfo:
          type: array
          description: Social profile metadata attached to the message. Only available for Pinterest messages at this time.
          items:
            type: object
            properties:
              socialProfileType:
                type: string
                description: The social profile type that this extendedInfo object is for.
                example: PINTEREST
                enum:
                - PINTEREST
              socialProfileId:
                type: string
                description: The social profile ID that this extendedInfo object is for.
                example: '123456789'
              data:
                type: object
                description: Social profile specific meta data.
                properties:
                  boardId:
                    type: string
                    description: Pinterest board ID for Pin
                    example: '123456789012345678'
                  destinationUrl:
                    type: string
                    description: Website for Pin
                    example: https://www.hootsuite.com
        postId:
          type: string
          description: The external message ID used by social network for this message. Only set once the message has been published.
          example: '705207140236001282'
        postUrl:
          type: string
          description: The URL of the message live on the social network. Only set once the message has been published. Only available for Facebook and LinkedIn messages at this time.
          example: https://www.facebook.com/177463958820/posts/10155617296368821
        createdByMember:
          title: memberReference
          type: object
          description: The identifier of the member who originally created the message.
          properties:
            id:
              type: string
              description: ID of member.
              example: '1389211223'
        lastUpdatedByMember:
          title: memberReference
          type: object
          description: The identifier of the member who last updated the message.
          properties:
            id:
              type: string
              description: ID of member.
              example: '1389211222'
        sequenceNumber:
          type: number
          description: The number representing which step in the approval process the message is on, or null if the message is not subject to approval.
          example: 3
        reviewers:
          type: array
          description: A list of message reviewers
          items:
            $ref: '#/components/schemas/Reviewer'
    Location:
      description: The message’s geolocation in decimal degrees for latitude and longitude. Twitter allows users to set the location for a post manually. The location object takes in Decimal Degrees for latitude and longitude. Decimal degrees are an alternative to using degrees, minutes, and seconds (DMS). The values for latitude and longitude are bounded by ±90° and ±180° respectively. Positive latitudes are north of the equator, negative latitudes are south of the equator. Positive longitudes are east of Prime Meridian, negative longitudes are west of the Prime Meridian.<br/>Not supported by Pinterest.
      type: object
      properties:
        latitude:
          type: number
          format: double
          description: The latitude in decimal degrees. Must be between -90 to 90.
          example: 57.64911
        longitude:
          type: number
          format: double
          description: The longitude in decimal degrees. Must be between -180 to 180.
          example: 10.40744
    TargetingOptions:
      type: object
      description: Social network targeting options to be applied when publishing the message.
      properties:
        facebookPage:
          $ref: '#/components/schemas/FacebookPageTargeting'
        linkedInCompany:
          $ref: '#/components/schemas/LinkedInCompanyTargeting'
        linkedInV2Company:
          $ref: '#/components/schemas/LinkedInV2CompanyTargeting'
    ErrorsResponseEnvelope:
      type: object
      properties:
        errors:
          type: array
          description: The errors response envelope.
          items:
            $ref: '#/components/schemas/Error'
    LinkedInPrivacy:
      type: object
      properties:
        visibility:
          type: array
          description: LinkedIn visibility rules. At most 1 can be used.
          items:
            type: string
            example: anyone
            enum:
            - anyone
            - connectionsOnly
    ApproveMessageRequest:
      type: object
      required:
      - sequenceNumber
      properties:
        sequenceNumber:
          type: integer
          description: The sequence number of the message being approved.
          example: 11
        reviewerType:
          type: string
          description: 'The actor that will be approving the message. Leaving this field empty will use "EXTERNAL" by default.


            Using "MEMBER" requires that you use a member token to approve a message that is pending approval by that member.

            '
          enum:
          - EXTERNAL
    

# --- truncated at 32 KB (77 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/hootsuite/refs/heads/main/openapi/hootsuite-messages-api-openapi.yml