Constant Contact Social API

The Social API from Constant Contact — 4 operation(s) for social.

Operations 4

GET /social/profiles GET social media profiles #
GET /social/connections GET social network connections #
GET /social/hashtags/groups GET hashtag groups #
POST /social/posts POST (create) a social media post #

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/constant-contact-social-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

constant-contact-social-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: The Constant Contact, Inc. V3 public API, for building integrations with Constant Contact, the leading small-business email marketing platform.
  version: 3.0.178
  title: AppConnect V3 Social API
  contact:
    name: webservices@constantcontact.com
  license:
    name: Private
    url: https://www.constantcontact.com/legal/terms-of-use
servers:
- url: https://api.cc.email/v3
tags:
- name: Social
paths:
  /social/profiles:
    get:
      tags:
      - Social
      summary: GET social media profiles
      description: 'Retrieves all social media profiles connected to the account. A profile represents a single account on a social network (such as a Facebook Business Page, a LinkedIn Company Page, or an Instagram Business account) that the user has connected to Constant Contact.


        Use the `include=accessible` query parameter to additionally check whether each profile is currently accessible for posting. Profiles that are not currently accessible will fail if used to publish a post.

        '
      operationId: getSocialProfilesUsingGET
      parameters:
      - name: include
        in: query
        description: Optional sub-resources to include. Use `accessible` to check if profiles are accessible on the network.
        required: false
        x-example: accessible
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
          enum:
          - accessible
      responses:
        '200':
          description: Request successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Profiles'
        '400':
          description: Bad request. Either the JSON was malformed or there was a data validation error.
        '401':
          description: The Access Token used is invalid.
        '403':
          description: Forbidden request. You lack the necessary scopes, you lack the necessary user privileges, or the application is deactivated.
        '404':
          description: The requested resource was not found.
        '500':
          description: There was a problem with our internal service.
      security:
      - oauth2_implicit:
        - campaign_data
      - oauth2_access_code:
        - campaign_data
      x-authorization-privileges:
      - campaign:read
      x-sdk-methodName: getSocialProfiles
  /social/connections:
    get:
      tags:
      - Social
      summary: GET social network connections
      description: 'Retrieves all social network accounts connected to the Constant Contact account, with support for multiple accounts per social network.


        A connection represents the authorization link between a Constant Contact account and a single account on a social network (Facebook, Instagram, LinkedIn, TikTok, etc.). Each connection includes account information about the connected user on that network (display name, username, image, etc.) and the current status of the connection (whether it''s active, rate-limited, or has any errors).


        Note that a single connection may have multiple profiles (pages) associated with it — use `GET /social/profiles` to retrieve the individual profiles.

        '
      operationId: getSocialConnectionsUsingGET
      responses:
        '200':
          description: Request successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectionResponseDto'
        '400':
          description: Bad request. Either the JSON was malformed or there was a data validation error.
        '401':
          description: The Access Token used is invalid.
        '403':
          description: Forbidden request. You lack the necessary scopes, you lack the necessary user privileges, or the application is deactivated.
        '404':
          description: The requested resource was not found.
        '500':
          description: There was a problem with our internal service.
      security:
      - oauth2_implicit:
        - campaign_data
      - oauth2_access_code:
        - campaign_data
      x-authorization-privileges:
      - campaign:read
      x-sdk-methodName: getSocialConnections
  /social/hashtags/groups:
    get:
      tags:
      - Social
      summary: GET hashtag groups
      description: 'Retrieves a paginated list of saved hashtag groups for the account. Hashtag groups allow users to save and organize reusable collections of hashtags that can be applied to social posts.


        Use the `limit` and `page` query parameters to paginate through results. Navigate to the next page using the `_links.next` link in the response.

        '
      operationId: getSocialHashtagGroupsUsingGET
      parameters:
      - name: limit
        in: query
        description: Maximum number of hashtag groups to retrieve per page. Default and maximum is `5`.
        required: false
        x-example: '5'
        schema:
          type: integer
          default: 5
          maximum: 5
          minimum: 1
      - name: page
        in: query
        description: Page number to retrieve (0-based).
        required: false
        x-example: '0'
        schema:
          type: integer
          default: 0
          minimum: 0
      responses:
        '200':
          description: Request successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PagedHashtagGroupsDto'
        '400':
          description: Bad request. Either the JSON was malformed or there was a data validation error.
        '401':
          description: The Access Token used is invalid.
        '403':
          description: Forbidden request. You lack the necessary scopes, you lack the necessary user privileges, or the application is deactivated.
        '404':
          description: The requested resource was not found.
        '500':
          description: There was a problem with our internal service.
      security:
      - oauth2_implicit:
        - campaign_data
      - oauth2_access_code:
        - campaign_data
      x-authorization-privileges:
      - campaign:read
      x-sdk-methodName: getHashtagGroups
  /social/posts:
    post:
      tags:
      - Social
      summary: POST (create) a social media post
      description: 'Creates a new social media post that can be published immediately or scheduled for later publication. A post can target one or more social profiles, and can include text, images, and network-specific settings.


        Set `status` to `DRAFT` to save without publishing, or `SCHEDULED` to schedule for publication. Scheduled posts require a `scheduled_time` in ISO-8601 format.


        Post content and settings can vary per profile — each `profile_posts` entry can have its own text, images, and network-specific settings (e.g., TikTok-specific settings like `disable_comment`).

        '
      operationId: createSocialPostUsingPOST
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostDto'
        '201':
          description: Post created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostDto'
        '400':
          description: Bad request. Either the JSON was malformed or there was a data validation error.
        '401':
          description: The Access Token used is invalid.
        '403':
          description: Forbidden request. You lack the necessary scopes, you lack the necessary user privileges, or the application is deactivated.
        '404':
          description: The requested resource was not found.
        '500':
          description: There was a problem with our internal service.
      security:
      - oauth2_implicit:
        - campaign_data
      - oauth2_access_code:
        - campaign_data
      x-authorization-privileges:
      - campaign:write
      x-sdk-methodName: createSocialPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostCreateDto'
        description: The social post content and configuration.
        required: true
components:
  schemas:
    PagedResponseLinksDto:
      type: object
      properties:
        next:
          description: Link to retrieve the next page of results. This will be absent for the last page.
          readOnly: true
          $ref: '#/components/schemas/PagedResponseLinkRelDto'
      description: Pagination links for navigating through pages of results.
    PostDto:
      type: object
      required:
      - profile_posts
      - status
      properties:
        campaign_id:
          type: string
          description: Unique identifier for the post campaign. Generated by the server on creation. Use this value to reference the post in subsequent requests.
          readOnly: true
        name:
          type: string
          example: My Social Post
          description: Campaign name for this post. The value provided on creation is sanitized before saving, so the returned value may not exactly match what was sent.
        profile_posts:
          type: array
          description: The list of per-profile posts that make up this campaign.
          items:
            $ref: '#/components/schemas/ProfilePostDto'
        scheduled_time:
          type: string
          example: '2026-03-15T14:30:00.000Z'
          description: The date and time to publish the post, in ISO-8601 format. Only set when <code>status</code> is <code>SCHEDULED</code>.
        status:
          type: string
          example: SCHEDULED
          description: "The current status of the post. Possible values include:\n<ul>\n  <li><code>DRAFT</code> — saved without being scheduled for publication</li>\n  <li><code>SCHEDULED</code> — scheduled for future publication at <code>scheduled_time</code></li>\n  <li><code>EXECUTING</code> — currently being published</li>\n  <li><code>ACTIVE</code> — the post has been published and is active on the social network</li>\n  <li><code>PAUSED</code> — publication has been paused</li>\n  <li><code>SUSPENDED</code> — publication has been suspended</li>\n  <li><code>REMOVED</code> — the post has been removed</li>\n  <li><code>DONE</code> — publication has completed</li>\n  <li><code>ERROR</code> — publication encountered an error</li>\n</ul>\n"
      description: Represents a social media post campaign that can include multiple posts to multiple social profiles, with either identical or network-specific content.
    ConnectionDto:
      type: object
      properties:
        account_info:
          description: Account information for this connection.
          readOnly: true
          $ref: '#/components/schemas/AccountInfoDto'
        connection_status:
          description: Status details for this connection.
          readOnly: true
          $ref: '#/components/schemas/ConnectionStatusDto'
      description: A combination of account information and connection status for an established social network connection.
    ConnectionStatusDto:
      type: object
      properties:
        error:
          type: string
          description: A message indicating that there was an unexpected error accessing the social network account.
          readOnly: true
        has_token:
          type: boolean
          example: true
          description: <code>true</code> if the integration has an authorization token for this social network account.
          readOnly: true
        is_active_user:
          type: boolean
          example: true
          description: A user is considered active if the user has any connected profiles for the social network account.
          readOnly: true
        rate_limited:
          type: boolean
          example: false
          description: Whether this social network account or the Constant Contact application is currently rate-limited by the social network provider.
          readOnly: true
        status:
          type: integer
          format: int32
          description: The status returned from the given network's API when retrieving the account. This is typically only set when <code>error</code> is set.
          readOnly: true
        token_has_scopes:
          type: boolean
          example: true
          description: Whether the token associated with this user's social account integration has the scopes necessary to use Constant Contact social functionality.
          readOnly: true
        token_is_valid:
          type: boolean
          example: true
          description: <code>true</code> if the token for this social network is currently valid and can be successfully used to fetch data from the network.
          readOnly: true
      description: Data indicating the status of a social network connection's integration.
    MapOfstringAndstring:
      type: object
      additionalProperties:
        type: string
    Profiles:
      type: array
      items:
        $ref: '#/components/schemas/ProfileDto'
    HashtagGroupDto:
      type: object
      required:
      - hashtag_group_name
      - hashtag_names
      properties:
        hashtag_group_id:
          type: string
          description: Unique identifier for this hashtag group. Automatically generated on creation and returned in all responses.
          readOnly: true
        hashtag_group_name:
          type: string
          description: The human-readable name for this group. <p>This name will be sanitized before saving, which may include trimming whitespace, truncation, and/or removing invalid characters. If the sanitized name results in a blank string, it will not be able to be saved, and any create or update operation will fail.</p><p>The name is currently limited to a maximum of 150 characters, but the effective length may be shorter, depending on whether special characters (such as emoji) are used.</p>
        hashtag_names:
          type: array
          description: The list of hashtag names for this group. <p>Hashtag <em>names</em> do not include any leading '#' character. They can only consist of alphanumeric characters and '_' (underscore). The hashtag name cannot begin or end with an underscore. Hashtag names may begin with a letter or a number, and may consist of only numbers. Hashtag names are currently limited to a maximum of 30 characters.</p><p>The list order is preserved. If duplicates exist, they will be removed when saving, and the first occurrence will retain its position.</p>
          items:
            type: string
      description: Represents a named collection of hashtags that can be reused when creating social posts.
    AccountInfoDto:
      type: object
      properties:
        account_url:
          type: string
          description: 'The account URL of the connected user''s profile. Note: Facebook & Instagram do not support this.'
          readOnly: true
        display_name:
          type: string
          example: John Doe
          description: Display name of the connected user.
          readOnly: true
        image_url:
          type: string
          example: https://example.com/avatar.jpg
          description: URL of the connected user's avatar or image.
          readOnly: true
        network:
          type: string
          example: facebook
          description: The social network this account belongs to.
          readOnly: true
        network_account_id:
          type: string
          description: 'The user identifier on the given network. Note: this is the network <em>account</em> id, not the <em>profile</em> id.'
          readOnly: true
        username:
          type: string
          example: johndoe
          description: Username of the connected user on the social network.
          readOnly: true
      description: Account information for a connected social network user.
    ProfilePostProfileDto:
      type: object
      required:
      - profile_id
      properties:
        account_username:
          type: string
          description: The human-readable username of the account that owns this profile.
          readOnly: true
        campaign_activity_id:
          type: string
          description: The campaign activity ID for this post on the specified profile. Generated by the server on creation. When updating a post, existing profile entries should include their original <code>campaign_activity_id</code>.
          readOnly: true
        campaign_activity_status:
          type: string
          description: The status of the post activity for this profile.
          readOnly: true
        campaign_activity_status_date:
          type: string
          format: date-time
          description: The activity's timestamp. For <code>SCHEDULED</code> activities, this is typically the same as the scheduled publish time; otherwise, it is the last-modified timestamp.
          readOnly: true
        campaign_activity_status_message:
          type: string
          description: A human-readable message describing the current status of the post activity. Can be a generic Constant Contact message or a specific message reported by the social network.
          readOnly: true
        image_url:
          type: string
          description: The URL of the profile's image. This image may become stale and is only refreshed when retrieving profiles with <code>include=accessible</code>.
          readOnly: true
        network:
          type: string
          example: facebook
          description: The social network this profile belongs to.
          readOnly: true
        network_post_id:
          type: string
          description: The social network's reference for this post. Only set when the status is <code>DONE</code>.
          readOnly: true
        post_url:
          type: string
          description: The permalink URL to the published post on the social network. Only set when the status is <code>DONE</code>.
          readOnly: true
        profile_id:
          type: string
          description: The unique identifier for the profile to post to. Use the <code>profile_id</code> from <code>GET /social/profiles</code>.
        profile_name:
          type: string
          description: The display name of the profile.
          readOnly: true
      description: Describes a post to a single social profile, including the target profile and its current status on that network.
    PageMetadataDto:
      type: object
      required:
      - page
      - size
      - total_elements
      - total_pages
      properties:
        page:
          type: integer
          format: int64
          description: The current 0-based page number.
          readOnly: true
        size:
          type: integer
          format: int64
          description: The page size (the number of results returned in this response).
          readOnly: true
        total_elements:
          type: integer
          format: int64
          description: The total number of results available across all pages.
          readOnly: true
        total_pages:
          type: integer
          format: int64
          description: The total number of pages available based on the current page size.
          readOnly: true
      description: Pagination metadata describing the current page of results.
    PagedHashtagGroupsDto:
      type: object
      required:
      - _links
      - hashtag_groups
      - page
      properties:
        _links:
          description: Pagination links for navigating through pages of results.
          readOnly: true
          $ref: '#/components/schemas/PagedResponseLinksDto'
        hashtag_groups:
          type: array
          description: The current page of hashtag group results.
          readOnly: true
          items:
            $ref: '#/components/schemas/HashtagGroupDto'
        page:
          description: Pagination metadata for the current response.
          readOnly: true
          $ref: '#/components/schemas/PageMetadataDto'
      description: A paginated response containing a page of hashtag groups.
    ProfileDto:
      type: object
      required:
      - connected
      - network
      - profile_id
      properties:
        accessible:
          type: boolean
          example: false
          description: Whether the profile is currently accessible for posting. Publishing a post will fail if its profile is not currently accessible. Only populated when the GET request includes the query parameter <code>include=accessible</code>.
          readOnly: true
        account_info:
          readOnly: true
          $ref: '#/components/schemas/AccountInfoDto'
        connected:
          type: boolean
          example: true
          description: Whether this profile is currently connected. You can only create and publish posts with connected profiles.
          readOnly: true
        handle:
          type: string
          example: mybusinesspage
          description: The profile's handle on the social network (for example, an Instagram or TikTok username). May be <code>null</code> if the network does not expose a separate handle (for example, Facebook).
          readOnly: true
        image_url:
          type: string
          example: https://example.com/profile-image.jpg
          description: URL of the profile's image or avatar.
          readOnly: true
        name:
          type: string
          example: My Business Page
          description: Display name of the profile.
          readOnly: true
        network:
          type: string
          example: facebook
          description: The social network this profile belongs to.
          readOnly: true
        network_profile_id:
          type: string
          description: The social network-specific identifier for this profile.
          readOnly: true
        network_user_id:
          type: string
          description: The social network-specific identifier for the user who owns this profile.
          readOnly: true
        profile_id:
          type: string
          description: Unique identifier for this profile. Use this value in the <code>profile_id</code> field of a <code>ProfilePost</code> when creating a post.
          readOnly: true
        settings:
          type: object
          description: "Network-specific settings for the profile. Only populated when the request includes <code>include=accessible</code> and settings are available for the network. Currently, only TikTok provides settings: <pre>\"content\": {\n  \"comment_disabled\": Boolean,\n  \"duet_disabled\": Boolean,\n  \"stitch_disabled\": Boolean,\n  \"max_video_post_duration_sec\": Integer\n}</pre>"
          readOnly: true
          additionalProperties:
            type: object
            properties: {}
        url:
          type: string
          example: https://www.facebook.com/mybusinesspage
          description: URL to the profile on the social network.
          readOnly: true
      description: Describes a social network profile (Business Page, Company Page/Organization, etc.). <br><strong>Note:</strong> Due to performance and/or rate-limit issues, some properties <em>may</em> be cached. Where possible, caching will be limited to 15 minutes.
    ImageDto:
      type: object
      required:
      - url
      properties:
        image_id:
          type: string
          description: Unique identifier for this image. Generated by the server on creation.
          readOnly: true
        url:
          type: string
          example: https://www.host.com/path+with%20space?q=query%20with+space
          description: The URL of the image. Each component of the URL must be appropriately encoded to avoid illegal characters.
      description: An image to include in a social post.
    PostCreateDto:
      type: object
      required:
      - profile_posts
      - status
      properties:
        name:
          type: string
          example: My Social Post
          description: Campaign name for this post. Optional on creation. If not provided, a default name will be generated. The value provided will be sanitized before saving, so the value returned may not exactly match what was sent.
        profile_posts:
          type: array
          description: The list of per-profile posts that make up this campaign. Each entry specifies the content to post and the profiles to post it to.
          items:
            $ref: '#/components/schemas/ProfilePostDto'
        scheduled_time:
          type: string
          example: '2026-03-15T14:30:00.000Z'
          description: The date and time to publish the post, in ISO-8601 format. Only applies when <code>status</code> is <code>SCHEDULED</code>. If not specified for a scheduled post, the publish job is scheduled to execute immediately.
        status:
          type: string
          example: SCHEDULED
          description: The status of the post on creation. Valid values are <code>DRAFT</code> (save without publishing) or <code>SCHEDULED</code> (schedule for publication).
      description: Request body for creating a social media post campaign that can include multiple posts to multiple social profiles.
    PagedResponseLinkRelDto:
      type: object
      required:
      - href
      properties:
        href:
          type: string
          description: The URI of a page of results.
          readOnly: true
      description: Represents a link to a page of results.
    ProfilePostDto:
      type: object
      required:
      - profiles
      properties:
        images:
          type: array
          description: Images to include in the post. Each image must be accessible via a public URL.
          items:
            $ref: '#/components/schemas/ImageDto'
        post_content_id:
          type: string
          description: Identifier for this post content. Generated by the server on creation. When updating a post, existing profile posts must include their original <code>post_content_id</code> unchanged.
          readOnly: true
        profiles:
          type: array
          description: The list of profiles to post to. Can be an empty list only when the post is in <code>DRAFT</code> status.
          items:
            $ref: '#/components/schemas/ProfilePostProfileDto'
        settings:
          type: object
          description: "Network-specific post settings. If no settings are provided, this field will be omitted in the JSON response. All values are persisted as strings.\nCurrently, only TikTok has available settings:\n<pre>{\n  \"settings\": {\n    \"tiktok\": {\n      \"disable_comment\": \"true\",\n      \"disable_duet\": \"false\",\n      \"disable_stitch\": \"true\",\n      \"auto_add_music\": \"false\"\n    }\n  }\n}</pre>\n"
          additionalProperties:
            $ref: '#/components/schemas/MapOfstringAndstring'
        text:
          type: string
          description: The text/caption content for the post. Whether text is required depends on the target social network. In <code>DRAFT</code> status, this is always optional.
      description: The content to post to one or more social profiles as part of a social post campaign.
    ConnectionResponseDto:
      type: object
      properties:
        connections:
          type: array
          description: List of established social network connections for the account.
          readOnly: true
          items:
            $ref: '#/components/schemas/ConnectionDto'
      description: A wrapper containing the list of established social network connections for a given Constant Contact account.
  securitySchemes:
    oauth2_implicit:
      type: oauth2
      flows:
        implicit:
          scopes:
            contact_data: Read or modify contact data.
            campaign_data: Read or modify email campaign data.
            account_read: Read account data.
            account_update: Modify account data.
            billing_data: Read or modify billing data.
          authorizationUrl: https://authz.constantcontact.com/oauth2/default/v1/authorize
    oauth2_access_code:
      type: oauth2
      flows:
        authorizationCode:
          scopes:
            contact_data: Read or modify contact data.
            campaign_data: Read or modify email campaign data.
            account_read: Read account data.
            account_update: Modify account data.
            billing_data: Read or modify billing data.
          authorizationUrl: https://authz.constantcontact.com/oauth2/default/v1/authorize
          tokenUrl: https://authz.constantcontact.com/oauth2/default/v1/token
    ctctPartnerAuthorizer:
      type: oauth2
      flows:
        implicit:
          scopes:
            v3api/general.partner: Access to general partner API methods
          authorizationUrl: https://v3api-partner.auth.us-east-1.amazoncognito.com/oauth2/token
      description: Partner Authentication
    api_key:
      type: apiKey
      name: x-api-key
      in: header