### Install Node.js SDK Source: https://info.bundle.social/api-reference/sdk Install the bundlesocial package using npm or pnpm. ```bash npm install bundlesocial # or pnpm add bundlesocial ``` -------------------------------- ### Create Event Post for Google Business Source: https://info.bundle.social/api-reference/platforms/google-business This example demonstrates creating an event post, including event-specific details like title, start and end dates, and a booking call to action. The `topicType` must be set to `EVENT`. ```javascript await bundle.post.create({ socialAccountTypes: ["GOOGLE_BUSINESS"], data: { GOOGLE_BUSINESS: { topicType: "EVENT", text: "Join us for our grand opening celebration!", eventTitle: "Grand Opening", eventStartDate: "2026-02-01T10:00:00Z", eventEndDate: "2026-02-01T18:00:00Z", callToActionType: "BOOK", callToActionUrl: "https://example.com/rsvp" } } }); ``` -------------------------------- ### Start Google Reviews Import Source: https://info.bundle.social/api-reference/client/misc/start-a-new-google-reviews-import Initiates a new import of Google Reviews. This endpoint allows users to start the process of fetching and importing reviews from Google. ```APIDOC ## POST /websites/info_bundle_social/google-reviews/import ### Description Starts a new import of Google Reviews. ### Method POST ### Endpoint /websites/info_bundle_social/google-reviews/import ### Request Body This endpoint does not require a request body. ### Response #### Success Response (200) - **message** (string) - Indicates that the import process has been successfully initiated. #### Response Example ```json { "message": "Google Reviews import process started successfully." } ``` #### Error Responses - **401** - Unauthorized: Authentication failed. - **403** - Forbidden: Insufficient permissions. - **404** - Not Found: The requested resource was not found. - **409** - Conflict: An import is already in progress. - **429** - Too Many Requests: Rate limit exceeded. - **500** - Internal Server Error: An unexpected error occurred. ``` -------------------------------- ### Google Business Review Import Status Example Source: https://info.bundle.social/api-reference/platforms/google-business-reviews An example of an import object showing its current status, imported review count, and timestamps. Statuses include PENDING, FETCHING_REVIEWS, COMPLETED, FAILED, and RATE_LIMITED. ```json { "id": "imp_abc123", "teamId": "team_123", "socialAccountId": "sa_123", "requestedCount": 50, "status": "FETCHING_REVIEWS", "reviewsImported": 24, "error": null, "rateLimitResetAt": null, "startedAt": "2026-02-17T10:00:00.000Z", "completedAt": null, "createdAt": "2026-02-17T09:59:55.000Z", "updatedAt": "2026-02-17T10:00:08.000Z", "deletedAt": null } ``` -------------------------------- ### Quick Setup Source: https://info.bundle.social/api-reference/sdk Initialize the BundleSocial SDK with your live API key. ```typescript import { BundleSocial } from 'bundlesocial'; const bundle = new BundleSocial('pk_live_...') ``` -------------------------------- ### Post Events Payload Example Source: https://info.bundle.social/api-reference/webhooks Example payload structure for `post.published` or `post.failed` events, including details about the post. ```APIDOC ## Post Events Payload ### Description When a `post.published` or `post.failed` event is triggered, the `data` field in the webhook payload contains the full post object. ### Event Type `post.published` or `post.failed` ### Data Payload Example ```json { "type": "post.published", "data": { "id": "post_abc123", "title": "My awesome post", "content": "Hello world!", "status": "POSTED", "scheduledDate": "2026-01-15T10:00:00.000Z", "postedDate": "2026-01-15T10:00:02.341Z", "teamId": "team_xyz", "createdAt": "2026-01-14T15:30:00.000Z", "updatedAt": "2026-01-15T10:00:02.341Z", "deletedAt": null, "uploads": [ { "upload": { "id": "upload_456", "fileName": "cover.jpg", "mimeType": "image/jpeg", "size": 245000 } } ], "socialAccounts": [ { "socialAccount": { "id": "sa_789", "type": "INSTAGRAM", "username": "mybrand", "displayName": "My Brand" } } ] } } ``` ``` -------------------------------- ### Quick Setup Node.js SDK Source: https://info.bundle.social/api-reference/sdk Initialize the BundleSocial SDK with your live API key. ```typescript import { BundleSocial } from 'bundlesocial'; const bundle = new BundleSocial('pk_live_...); ``` -------------------------------- ### Comment Events Payload Example Source: https://info.bundle.social/api-reference/webhooks Example payload structure for `comment.published` events, including details about the comment. ```APIDOC ## Comment Events Payload ### Description When a `comment.published` event is triggered, the `data` field in the webhook payload contains details about the published comment. ### Event Type `comment.published` ### Data Payload Example ```json { "type": "comment.published", "data": { "id": "comment_abc", "content": "#growth #mindset", "status": "POSTED", "postId": "post_abc123", "teamId": "team_xyz", "createdAt": "2026-01-15T10:00:05.000Z", "socialAccounts": [ { "socialAccount": { "id": "sa_789", "type": "INSTAGRAM", "username": "mybrand" } } ] } } ``` ``` -------------------------------- ### Resumable Upload - Step 1: Initialize Source: https://info.bundle.social/api-reference/upload-content Initiates a resumable upload by providing file details. Returns a pre-signed URL and a path for subsequent steps. ```APIDOC ## Initialize Resumable Upload ### Description Initiates a resumable upload process. This step tells the server about the file you intend to upload and returns a pre-signed URL and a unique path for the upload. ### Method POST ### Endpoint /upload/init ### Request Body - **fileName** (string) - Required - The name of the file to be uploaded. - **mimeType** (string) - Required - The MIME type of the file (e.g., 'video/mp4'). - **teamId** (string) - Optional - The ID of the team associated with the upload. ### Response #### Success Response (200) - **url** (string) - The pre-signed URL for uploading the file content. This URL expires after 10 minutes. - **path** (string) - The unique path assigned to this upload, used in the finalize step. ``` -------------------------------- ### Error Response Example Source: https://info.bundle.social/api-reference/client/misc/get-videos-from-a-playlist This snippet shows an example of a 500 Internal Server Error response, including its structure and properties. ```APIDOC ## Error Response (500) ### Description An example of a 500 Internal Server Error response. ### Content - **statusCode** (number, nullable) - The status code of the error. - **message** (string) - A message describing the error. ### Response Example ```json { "statusCode": 500, "message": "An internal server error occurred." } ``` ``` -------------------------------- ### Start Google Business Review Import Source: https://info.bundle.social/api-reference/platforms/google-business-reviews Initiate an asynchronous import of Google Business reviews. Specify the team ID and the number of reviews to fetch (1-100). ```json { "teamId": "team_123", "count": 50 } ``` -------------------------------- ### Start a new Google Reviews import Source: https://info.bundle.social/llms.txt Initiates a new import process for Google Reviews. ```APIDOC ## POST /google/reviews/import/start ### Description Initiates a new import process for Google Reviews. ### Method POST ### Endpoint /google/reviews/import/start ``` -------------------------------- ### Social Account Events Payload Example Source: https://info.bundle.social/api-reference/webhooks Example payload structure for social account-related events like creation, update, or deletion. ```APIDOC ## Social Account Events Payload ### Description When events related to social accounts occur (e.g., `social-account.created`, `social-account.updated`, `social-account.deleted`), the `data` field contains information about the social account. ### Event Type `social-account.created`, `social-account.updated`, or `social-account.deleted` ### Data Payload Example ```json { "type": "social-account.created", "data": { "id": "sa_789", "type": "INSTAGRAM", "teamId": "team_xyz", "username": "mybrand", "displayName": "My Brand", "avatarUrl": "https://...", "externalId": "17841400000", "channels": [], "createdAt": "2026-01-10T12:00:00.000Z" } } ``` ``` -------------------------------- ### Resumable Upload - Step 2: Push the Bytes Source: https://info.bundle.social/api-reference/upload-content Uploads the raw binary file content to the pre-signed URL obtained from the initialization step. ```APIDOC ## Push Bytes for Resumable Upload ### Description Uploads the actual file content using the pre-signed URL obtained from the `POST /upload/init` endpoint. This should be a direct `PUT` request with the raw file bytes. ### Method PUT ### Endpoint [URL from Step 1] ### Request Body - Raw binary file content. Do not wrap in JSON or multipart form data. ``` -------------------------------- ### GET /api/v1/ Health Response Source: https://info.bundle.social/api-reference/health This JSON object represents the response from the GET /api/v1/ endpoint, detailing the overall API status and the health of individual platforms. ```json { "status": "ok", "createdAt": "2026-04-27T10:00:00.000Z", "note": "", "platforms": { "FACEBOOK": { "status": "operational", "note": "" }, "INSTAGRAM": { "status": "degraded", "note": "Instagram publishing is slower than usual" }, "TIKTOK": { "status": "maintenance", "note": "TikTok OAuth is temporarily paused" }, "YOUTUBE": { "status": "operational", "note": "" }, "TWITTER": { "status": "operational", "note": "" }, "PINTEREST": { "status": "operational", "note": "" }, "REDDIT": { "status": "operational", "note": "" }, "MASTODON": { "status": "operational", "note": "" }, "DISCORD": { "status": "operational", "note": "" }, "SLACK": { "status": "operational", "note": "" }, "BLUESKY": { "status": "operational", "note": "" }, "GOOGLE_BUSINESS": { "status": "outage", "note": "Google Business API is rejecting requests" }, "LINKEDIN": { "status": "operational", "note": "" }, "THREADS": { "status": "operational", "note": "" } } } ``` -------------------------------- ### Start Facebook Recommendations Import Source: https://info.bundle.social/api-reference/client/misc/start-a-new-facebook-recommendations-import Use this endpoint to begin importing Facebook recommendations. You need to provide a team ID and the desired count of recommendations to import. ```APIDOC ## POST /api/v1/misc/facebook/recommendations/import ### Description Starts a new Facebook recommendations import process. ### Method POST ### Endpoint /api/v1/misc/facebook/recommendations/import ### Request Body - **teamId** (string) - Required - The ID of the team for which to import recommendations. - **count** (integer) - Required - The number of recommendations to import. Must be between 1 and 250. ### Request Example ```json { "teamId": "your_team_id", "count": 50 } ``` ### Response #### Success Response (201) - **id** (string) - The unique identifier for the import job. - **teamId** (string) - The ID of the team associated with the import. - **socialAccountId** (string) - The ID of the social media account. - **requestedCount** (number) - The number of items requested for import. - **status** (string) - The current status of the import job. Possible values: PENDING, FETCHING_RECOMMENDATIONS, COMPLETED, FAILED, RATE_LIMITED. - **itemsImported** (number) - The number of items successfully imported. - **error** (string, nullable) - Any error message if the import failed. - **rateLimitResetAt** (string, format: date-time, nullable) - The time when the rate limit will reset. - **startedAt** (string, format: date-time, nullable) - The timestamp when the import started. - **completedAt** (string, format: date-time, nullable) - The timestamp when the import completed. - **createdAt** (string, format: date-time) - The timestamp when the import job was created. - **updatedAt** (string, format: date-time) - The timestamp when the import job was last updated. - **deletedAt** (string, format: date-time, nullable) - The timestamp when the import job was deleted. #### Response Example ```json { "id": "import_job_123", "teamId": "your_team_id", "socialAccountId": "fb_account_456", "requestedCount": 50, "status": "PENDING", "itemsImported": 0, "error": null, "rateLimitResetAt": null, "startedAt": null, "completedAt": null, "createdAt": "2023-10-27T10:00:00Z", "updatedAt": "2023-10-27T10:00:00Z", "deletedAt": null } ``` #### Error Response (400) - **statusCode** (number, nullable) - The HTTP status code. - **message** (string) - A message describing the error. - **issues** (array) - An array of specific issues encountered. - **code** (string, nullable) - The error code. - **message** (string) - The error message. ``` -------------------------------- ### Facebook Review Import Status Example Source: https://info.bundle.social/api-reference/platforms/facebook-page-reviews An example of an import object showing the status of a Facebook Page review import job. Includes details like ID, status, counts, and timestamps. ```json { "id": "imp_fb_abc123", "teamId": "team_123", "socialAccountId": "sa_123", "requestedCount": 50, "status": "FETCHING_RECOMMENDATIONS", "itemsImported": 24, "error": null, "rateLimitResetAt": null, "startedAt": "2026-04-27T10:00:00.000Z", "completedAt": null, "createdAt": "2026-04-27T09:59:55.000Z", "updatedAt": "2026-04-27T10:00:08.000Z", "deletedAt": null } ``` -------------------------------- ### Start a new Facebook recommendations import Source: https://info.bundle.social/llms.txt Initiates a new import process for Facebook recommendations. ```APIDOC ## POST /facebook/recommendations/import/start ### Description Initiates a new import process for Facebook recommendations. ### Method POST ### Endpoint /facebook/recommendations/import/start ``` -------------------------------- ### Get location Source: https://info.bundle.social/api-reference/platforms/google-business-location Fetches the current Google Business Profile location data. You can specify which fields to retrieve or get a default set of profile-oriented fields. This is useful for displaying current information or preparing for an update. ```APIDOC ## Get location ### Description Fetches the current Google Business Profile location data. You can specify which fields to retrieve or get a default set of profile-oriented fields. This is useful for displaying current information or preparing for an update. ### Method GET ### Endpoint `/api/v1/misc/google-business/location` ### Parameters #### Query Parameters - **teamId** (string) - Required - Team that owns the connected Google Business social account. - **fields** (string) - Optional - Subset of location fields to return. If omitted, a default profile-oriented field list is used. Accepts comma-separated values or repeated query params (e.g., `fields=name,title` or `fields=name&fields=title`). Allowed `fields` values: `name`, `languageCode`, `storeCode`, `title`, `phoneNumbers`, `categories`, `storefrontAddress`, `websiteUri`, `regularHours`, `specialHours`, `serviceArea`, `labels`, `adWordsLocationExtensions`, `latlng`, `openInfo`, `metadata`, `profile`, `relationshipData`, `moreHours`, `serviceItems` ### Response #### Success Response (200) - The response shape follows Google's API and includes the requested location fields. ``` -------------------------------- ### Post to Discord Source: https://info.bundle.social/api-reference/platforms/discord This example demonstrates how to post a message to a Discord channel using the bundle.post.create method. It includes options for specifying the channel, message text, and custom bot identity. ```APIDOC ## Post to Discord ### Description Posts a message to a specified Discord channel. ### Method `bundle.post.create` ### Parameters #### Social Account Types - `socialAccountTypes`: `string[]` - Must include `"DISCORD"`. #### Data - `DISCORD`: `object` - Required if `socialAccountTypes` includes `"DISCORD"`. - `channelId` (string): **Required.** The ID of the Discord channel to post to. This can be found in the `socialAccount.channels` array. - `text` (string): **Optional.** The content of the message. Maximum 2000 characters. - `uploadIds` (string[]): **Optional.** An array of media attachment IDs (images, videos). - `username` (string): **Optional.** Custom display name for the bot posting the message. Maximum 80 characters. - `avatarUrl` (string): **Optional.** A URL to an image to be used as the bot's avatar. Maximum 2048 characters. ### Request Example ```javascript await bundle.post.create({ socialAccountTypes: ["DISCORD"], data: { DISCORD: { channelId: "123456789012345678", text: "Hello from bundle.social!", username: "My Bot", avatarUrl: "https://example.com/avatar.png" } } }); ``` ### Media Limits - Files: 0-10 (images and/or videos, mixed allowed) - Video max size: 25 MB - Image max size: 25 MB - Text: Max 2,000 characters ### Text & Field Limits - `text`: Max 2,000 characters - `username`: Max 80 characters - `avatarUrl`: Max 2,048 characters ### Analytics Discord does not provide analytics via its API. All metrics return `0`. - `impressions`: Returns `0` - `views`: Returns `0` - `likes`: Returns `0` - `comments`: Returns `0` ``` -------------------------------- ### Get upload Source: https://info.bundle.social/llms.txt Retrieves information about a specific upload. ```APIDOC ## GET /upload/get-upload ### Description Fetches details for a specific upload. ### Method GET ### Endpoint /upload/get-upload ### Parameters #### Query Parameters - **uploadId** (string) - Required - The ID of the upload to retrieve. ``` -------------------------------- ### Resumable Upload: Initialize Response Source: https://info.bundle.social/api-reference/upload-content The response from the initialization step provides a pre-signed URL for uploading and a path to store the file. This URL is only valid for 10 minutes. ```json { "url": "https://storage.googleapis.com/...", "path": "uploads/123/viral-video.mp4" } ``` -------------------------------- ### Get team Source: https://info.bundle.social/llms.txt Retrieves details for a specific team. ```APIDOC ## GET /team/get-team ### Description Retrieves detailed information about a specific team. ### Method GET ### Endpoint /team/get-team ### Parameters #### Query Parameters - **teamId** (string) - Required - The ID of the team to retrieve. ``` -------------------------------- ### Get comment Source: https://info.bundle.social/llms.txt Retrieves details of a specific comment. ```APIDOC ## Get comment ### Description Retrieves details of a specific comment. ### Method GET ### Endpoint /client/comment/get-comment ### Parameters #### Query Parameters - **commentId** (string) - Required - The ID of the comment to retrieve. - **postId** (string) - Required - The ID of the post the comment belongs to. ``` -------------------------------- ### Start Facebook Recommendations Import Source: https://info.bundle.social/api-reference/client/misc/start-a-new-facebook-recommendations-import Initiates a new import process for Facebook recommendations. This operation requires authentication and may return various status codes indicating success or failure. ```APIDOC ## POST /websites/info_bundle_social/facebook/recommendations/import ### Description Initiates a new import process for Facebook recommendations. ### Method POST ### Endpoint /websites/info_bundle_social/facebook/recommendations/import ### Request Body - **message** (string) - Required - The message associated with the import request. ### Request Example ```json { "message": "Start import" } ``` ### Response #### Success Response (200) - **statusCode** (number) - The status code of the operation. - **message** (string) - A message indicating the success of the operation. #### Response Example ```json { "statusCode": 200, "message": "Import started successfully" } ``` #### Error Responses - **401** (Unauthorized): Indicates missing or invalid authentication. - **403** (Forbidden): Indicates insufficient permissions. - **404** (Not Found): Indicates the resource was not found. - **409** (Conflict): Indicates a conflict with the current state of the resource. - **429** (Too Many Requests): Indicates the client has sent too many requests. - **500** (Internal Server Error): Indicates a server-side error. ``` -------------------------------- ### Get Upload List Source: https://info.bundle.social/api-reference/client/upload/get-upload-list Fetches a list of all uploads. ```APIDOC ## GET /uploads ### Description Retrieves a list of all uploads. ### Method GET ### Endpoint /uploads ### Parameters #### Query Parameters - **limit** (integer) - Optional - The maximum number of uploads to return. - **offset** (integer) - Optional - The number of uploads to skip before starting to collect the result set. ### Response #### Success Response (200) - **uploads** (array) - An array of upload objects. - **id** (string) - The unique identifier for the upload. - **type** (string) - The type of the upload. - **createdAt** (string) - The timestamp when the upload was created. - **updatedAt** (string) - The timestamp when the upload was last updated. - **posts** (array) - An array of associated posts. #### Response Example { "uploads": [ { "id": "upload-123", "type": "image", "createdAt": "2023-10-27T10:00:00Z", "updatedAt": "2023-10-27T10:00:00Z", "posts": ["post-abc", "post-def"] } ] } #### Error Response (400) - **message** (string) - Description of the error. - **issues** (array) - Array of specific issues encountered. #### Error Response (401) - **message** (string) - Description of the error. #### Error Response (403) - **message** (string) - Description of the error. #### Error Response (404) - **message** (string) - Description of the error. #### Error Response (429) - **message** (string) - Description of the error. #### Error Response (500) - **message** (string) - Description of the error. ``` -------------------------------- ### Get Comment Source: https://info.bundle.social/api-reference/client/comment/get-comment Retrieves a specific comment by its ID. ```APIDOC ## GET /websites/info_bundle_social/{commentId} ### Description Retrieves a specific comment using its unique identifier. ### Method GET ### Endpoint /websites/info_bundle_social/{commentId} ### Parameters #### Path Parameters - **commentId** (string) - Required - The unique identifier of the comment to retrieve. ### Response #### Success Response (200) - **createdAt** (string) - The timestamp when the comment was created. - **updatedAt** (string) - The timestamp when the comment was last updated. #### Error Response - **400** - Bad Request: Indicates an issue with the request payload or parameters. - **401** - Unauthorized: Authentication failed. - **403** - Forbidden: Insufficient permissions. - **404** - Not Found: The specified comment does not exist. - **429** - Too Many Requests: Rate limit exceeded. - **500** - Internal Server Error: An unexpected error occurred on the server. ``` -------------------------------- ### Start Google Reviews Import Source: https://info.bundle.social/api-reference/client/misc/start-a-new-google-reviews-import Initiates a new import of Google Reviews for a specified team. You can control the number of reviews to import. ```APIDOC ## POST /api/v1/misc/google-business/reviews/import ### Description Starts a new Google Reviews import process. ### Method POST ### Endpoint /api/v1/misc/google-business/reviews/import ### Request Body - **teamId** (string) - Required - The ID of the team for which to import reviews. - **count** (integer) - Required - The number of reviews to import. Must be at least 1. ### Request Example ```json { "teamId": "your_team_id", "count": 10 } ``` ### Response #### Success Response (201) - **id** (string) - The unique identifier for the import job. - **teamId** (string) - The ID of the team associated with the import. - **socialAccountId** (string) - The ID of the social account linked to the import. - **requestedCount** (number) - The number of reviews requested for import. - **status** (string) - The current status of the import job. Possible values: PENDING, FETCHING_REVIEWS, COMPLETED, FAILED, RATE_LIMITED. - **reviewsImported** (number) - The number of reviews successfully imported. - **error** (string, nullable) - Any error message if the import failed. - **rateLimitResetAt** (string, format: date-time, nullable) - The time when the rate limit will reset. - **startedAt** (string, format: date-time, nullable) - The timestamp when the import started. - **completedAt** (string, format: date-time, nullable) - The timestamp when the import completed. - **createdAt** (string, format: date-time) - The timestamp when the import job was created. - **updatedAt** (string, format: date-time) - The timestamp when the import job was last updated. - **deletedAt** (string, format: date-time, nullable) - The timestamp when the import job was deleted. #### Response Example ```json { "id": "import_job_id_123", "teamId": "your_team_id", "socialAccountId": "google_business_account_id_456", "requestedCount": 10, "status": "PENDING", "reviewsImported": 0, "error": null, "rateLimitResetAt": null, "startedAt": null, "completedAt": null, "createdAt": "2023-10-27T10:00:00Z", "updatedAt": "2023-10-27T10:00:00Z", "deletedAt": null } ``` #### Error Response (400) - **statusCode** (number, nullable) - The HTTP status code. - **message** (string) - A message describing the error. - **issues** (array) - An array of specific issues encountered. - **code** (string) - The error code. - **message** (string) - A detailed message for the issue. ``` -------------------------------- ### Get Health Source: https://info.bundle.social/api-reference/client/app/get-health Retrieves the health status of the application. ```APIDOC ## GET /health ### Description This endpoint is used to check the health status of the application. It returns a success message if the application is running correctly. ### Method GET ### Endpoint /health ### Response #### Success Response (200) - **message** (string) - A message indicating the application is healthy. #### Response Example ```json { "message": "Application is healthy" } ``` ``` -------------------------------- ### Handle Webhooks with Node.js SDK Source: https://info.bundle.social/api-reference/sdk Construct and verify incoming webhook events using the SDK. This example shows how to handle a 'post.published' event. ```typescript // Express handler const event = bundle.webhooks.constructEvent( rawBody, signature, process.env.WEBHOOK_SECRET ); if (event.type === 'post.published') { console.log('We are live!'); } ``` -------------------------------- ### Get Comment Details Source: https://info.bundle.social/api-reference/client/comment/get-comment Retrieves the details of a specific comment. ```APIDOC ## GET /comments/{commentId} ### Description Retrieves the details of a specific comment, including its associated social media data. ### Method GET ### Endpoint /comments/{commentId} ### Parameters #### Path Parameters - **commentId** (string) - Required - The unique identifier of the comment to retrieve. ### Response #### Success Response (200) - **id** (string) - The unique identifier of the comment. - **teamId** (string) - The identifier of the team associated with the comment. - **internalPostId** (string) - The internal identifier of the post. - **title** (string) - The title of the comment. - **postDate** (string) - The date the comment was posted. - **status** (string) - The status of the comment. - **data** (object) - An object containing social media platform specific data. - **TIKTOK** (object) - TikTok specific data. - **id** (string) - The TikTok post ID. - **permalink** (string) - The permalink to the TikTok post. - **LINKEDIN** (object) - LinkedIn specific data. - **id** (string) - The LinkedIn post ID. - **commentUrn** (string) - The URN of the LinkedIn comment. - **permalink** (string) - The permalink to the LinkedIn post. - **REDDIT** (object) - Reddit specific data. - **id** (string) - The Reddit post ID. - **permalink** (string) - The permalink to the Reddit post. - **YOUTUBE** (object) - YouTube specific data. - **id** (string) - The YouTube post ID. - **permalink** (string) - The permalink to the YouTube post. - **MASTODON** (object) - Mastodon specific data. - **id** (string) - The Mastodon post ID. - **permalink** (string) - The permalink to the Mastodon post. - **THREADS** (object) - Threads specific data. - **id** (string) - The Threads post ID. - **permalink** (string) - The permalink to the Threads post. - **DISCORD** (object) - Discord specific data. - **id** (string) - The Discord post ID. - **permalink** (string) - The permalink to the Discord post. - **SLACK** (object) - Slack specific data. - **id** (string) - The Slack post ID. - **permalink** (string) - The permalink to the Slack post. - **BLUESKY** (object) - Bluesky specific data. - **id** (string) - The Bluesky post ID. - **uri** (string) - The URI of the Bluesky post. - **cid** (string) - Content ID of the created record. - **permalink** (string) - The permalink to the Bluesky post. - **did** (string) - Author DID (owner of the record). - **createdAt** (string) - The timestamp when the comment was created. - **updatedAt** (string) - The timestamp when the comment was last updated. - **deletedAt** (string) - The timestamp when the comment was deleted. #### Response Example { "id": "comment-123", "teamId": "team-abc", "internalPostId": "post-xyz", "title": "Example Comment", "postDate": "2023-10-27T10:00:00Z", "status": "published", "data": { "TIKTOK": { "id": "tiktok-post-1", "permalink": "https://www.tiktok.com/@user/video/123" }, "LINKEDIN": { "id": "linkedin-post-1", "commentUrn": "urn:li:comment:12345", "permalink": "https://www.linkedin.com/posts/user_activity-123456789" }, "REDDIT": { "id": "reddit-post-1", "permalink": "https://www.reddit.com/r/subreddit/comments/123" }, "YOUTUBE": { "id": "youtube-video-1", "permalink": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" }, "MASTODON": { "id": "mastodon-post-1", "permalink": "https://mastodon.social/@user/123" }, "THREADS": { "id": "threads-post-1", "permalink": "https://www.threads.net/@user/post/123" }, "DISCORD": { "id": "discord-message-1", "permalink": "https://discord.com/channels/guild/channel/message/123" }, "SLACK": { "id": "slack-message-1", "permalink": "https://workspace.slack.com/archives/channel/ts-123" }, "BLUESKY": { "id": "bluesky-post-1", "uri": "at://did:plc:abcdefg/app.bsky.feed.post/123", "cid": "bafkreihd4y567890abcdefg", "permalink": "https://bsky.app/profile/user/post/123", "did": "did:plc:abcdefg" } }, "createdAt": "2023-10-27T10:00:00Z", "updatedAt": "2023-10-27T10:05:00Z", "deletedAt": null } ``` -------------------------------- ### Create Google Business place action link Source: https://info.bundle.social/llms.txt Creates an action link for a Google Business place. ```APIDOC ## Create Google Business place action link ### Description Creates an action link for a Google Business place. ### Method POST ### Endpoint /client/misc/create-google-business-place-action-link ### Parameters #### Request Body - **placeId** (string) - Required - The Google Place ID. - **actionType** (string) - Required - The type of action (e.g., 'BOOK_APPOINTMENT'). - **url** (string) - Required - The URL for the action. ``` -------------------------------- ### Resumable Upload: Initialize Request Source: https://info.bundle.social/api-reference/upload-content Initiates a resumable upload by providing file details. The response includes a pre-signed URL that expires in 10 minutes. ```json { "fileName": "viral-video.mp4", "mimeType": "video/mp4", "teamId": "..." // optional } ```