1. Posts
swonkie.dev
  • Introduction
  • 🆕 MCP Server
  • Changelog
  • Quick Start
  • Social Networks
    • Instagram v2
    • Google My Business
    • YouTube
    • X (Twitter)
    • Threads
    • Instagram
    • LinkedIn
    • TikTok
    • Facebook
  • ✨ Andie
    • Generate an Image
      POST
  • Search
    • Search Profiles
      GET
  • Profiles
    • My Profiles
      GET
    • Competitors
      GET
  • Competitors
    • Add Competitor
    • Delete Competitor
  • Insights
    • Getting Started
    • My Profile Insights Metrics
    • My Profile Insights
    • My Profile Insights Posts
    • Competitor Insights Metrics
    • Competitor Insights
    • Competitor Insights Posts
  • Posts
    • Getting Started
    • Limits by Social Network
    • List Posts
      GET
    • Get a Post
      GET
    • Create a Post
      POST
    • Update a Post
      PUT
    • Validate a Post
      GET
    • Delete a Post
      DELETE
    • Change Post Stage
      PATCH
  • Labels
    • Getting Started
    • List Labels
    • Create a Label
  • Media
    • Get a Media
    • Create a Media
    • Upload File to Media
    • Confirm Uploaded Media
    • Delete a Media
    • Create a Media from URL
  • Examples
    • Publish
Back to Home
Back to Home
Login
  1. Posts

Create a Post

POST
/posts
Creates a new post in your workspace. This endpoint allows you to create posts across multiple social networks with customizable content, media, scheduling, and network-specific settings. Posts can be created as ideas (without a publish date) or drafts (with a scheduled publish date). The post will be validated before creation to ensure all content meets the requirements of the selected social networks.

Notes#

Posts created without publishAt will have stage IDEA.
Posts created with publishAt will have stage DRAFT.
The type field determines which other fields are required or supported (e.g., LINK posts require links, MEDIA posts require medias).
Media files must be uploaded first using the POST /media endpoint to obtain mediaLibId values.
Profile IDs must belong to your workspace and be valid for publishing.
The post will be validated before creation - if validation fails, you'll receive a 400 Bad Request with details about what needs to be corrected.
Network-specific settings (facebook, instagram, instagramV2, linkedIn, tiktok, threads, googleMyBusiness, youtube, twitter) are only applied to posts targeting those networks.
Captions, media, and links can be network-specific by setting the net property, or apply to all networks by leaving it null.
Facebook carousels require at least 2 items to be valid.
Different post types support different features - for example, STORY posts don't support captions on most networks.

Network-specific fields#

instagramV2#

Options for Instagram v2 profiles.
FieldTypeDescription
shareToFeedbooleanShare a Reel or Story to the profile feed.

threads#

Options for Threads profiles.
FieldTypeDescription
pollstring[]Poll options (2–4 items, each 1–25 characters).
isGhostPostbooleanPublish as a ghost post (reply-only, not shown on the profile grid).

googleMyBusiness#

Options for Google My Business profiles. postTopicType is required.
FieldTypeRequiredDescription
postTopicTypeSTANDARD | EVENT | OFFER✅Type of GMB post.
titlestringFor EVENT/OFFEREvent or offer title (max 58 chars).
startAtISO 8601For EVENT/OFFERStart date/time.
endAtISO 8601For EVENT/OFFEREnd date/time.
ctaTypeenumNoCall-to-action: BOOK, ORDER, SHOP, LEARN_MORE, SIGN_UP, CALL.
ctaLinkstringWhen CTA ≠ CALLURL for the CTA button (max 255 chars).
couponCodestringNoCoupon code for OFFER posts (max 100 chars).
redeemOnlineUrlstringNoURL to redeem the offer online (max 255 chars).
termConditionsstringNoTerms and conditions for OFFER posts (max 5000 chars).

youtube#

Options for YouTube profiles.
FieldTypeDefaultDescription
titlestring—Video title (max 100 characters).
madeForKidsbooleanfalseMark video as made for kids.
containsSyntheticMediabooleanfalseMark video as containing AI-generated media.
notifySubscribersbooleantrueNotify subscribers on publish.

twitter#

Options for X (Twitter) profiles.
FieldTypeDescription
pollstring[]Poll options (2–4 items, each 1–25 characters).
pollDurationintegerPoll duration in minutes (5–10080).
replySettingsFOLLOWING | MENTIONED_USERS | SUBSCRIBERS | VERIFIEDRestrict who can reply. Omit for everyone.
superFollowersOnlybooleanLimit post visibility to super followers.
madeWithAibooleanMark the post as made with AI.
paidPartnershipbooleanMark the post as a paid partnership.

Request

Header Params

Body Params application/jsonRequired

Examples

Responses

🟢201
application/json
Bodyapplication/json

Request Request Example
Shell
JavaScript
Java
Swift
curl --location 'https://api.swonkie.dev/v2/posts' \
--header 'X-API-ID: ' \
--header 'X-API-KEY: ' \
--header 'Content-Type: application/json' \
--data '{
    "type": "MEDIA",
    "profileIds": [
        "Tjg3YjhSU2xZREFqM1RqOTRnZTdpZz09"
    ],
    "publishAt": "2026-01-31T11:30:00.000Z",
    "captions": [
        {
            "plainText": "A post caption!",
            "firstComment": {
                "plainText": "First comment gets a fix."
            },
            "net": "facebook"
        }
    ],
    "medias": [
        {
            "mediaFiles": [
                {
                    "mediaLibId": "RDlHZERwbitlK1lmQU0xNW0zWUhWZz09"
                }
            ],
            "net": "facebook"
        }
    ],
    "links": [
        {
            "link": "https://brinfer.com",
            "linkTitle": "Brinfer - Influencer Marketing",
            "linkDescription": "Brinfer is the best influencer marketing marketplace platform!",
            "mediaLibId": "RDlHZERwbitlK1lmQU0xNW0zWUhWZz09",
            "net": "facebook"
        }
    ],
    "briefing": {
        "markdown": "# A markdown briefing here!"
    },
    "facebook": {
        "carousels": [
            {
                "link": "https://brinfer.com",
                "title": "Brinfer - Influencer Marketing",
                "description": "Brinfer is the best influencer marketing marketplace platform!",
                "mediaLibId": "RDlHZERwbitlK1lmQU0xNW0zWUhWZz09",
                "callToAction": "NO_BUTTON"
            }
        ],
        "carouselEndCard": true
    },
    "instagram": {
        "shareToFeed": true
    },
    "linkedIn": {
        "documentTitle": "Brinfer Document Title"
    },
    "tiktok": {
        "autoAddMusic": true,
        "disableComments": true,
        "isBrandedContent": true,
        "isBrandOrganic": true,
        "title": "Brinfer TikTok Title",
        "disableDuet": true,
        "disableStitch": true,
        "isAiGenerated": true
    },
    "labelIds": [
        "RDlHZERwbitlK1lmQU0xNW0zWUhWZz09"
    ],
    "instagramV2": {
        "shareToFeed": true
    },
    "threads": {
        "poll": [
            "Option A",
            "Option B",
            "Option C"
        ],
        "isGhostPost": false
    },
    "googleMyBusiness": {
        "postTopicType": "OFFER",
        "title": "Summer Sale",
        "startAt": "2026-07-01T00:00:00.000Z",
        "endAt": "2026-07-31T23:59:59.000Z",
        "ctaType": "SHOP",
        "ctaLink": "https://example.com/summer-sale",
        "couponCode": "SUMMER20",
        "redeemOnlineUrl": "https://example.com/redeem",
        "termConditions": "Valid while supplies last."
    },
    "youtube": {
        "title": "My YouTube Video",
        "madeForKids": false,
        "containsSyntheticMedia": false,
        "notifySubscribers": true
    },
    "twitter": {
        "poll": [
            "Yes",
            "No"
        ],
        "pollDuration": 1440,
        "replySettings": "FOLLOWING",
        "madeWithAi": false,
        "paidPartnership": false
    }
}'
Response Response Example
{
    "id": "UG9zdElkMTIzNDU2Nzg5",
    "type": "MEDIA",
    "stage": "DRAFT",
    "publishAt": "2026-02-01T10:00:00.000Z",
    "budget": 0,
    "profiles": [
        {
            "id": "Tjg3YjhSU2xZREFqM1RqOTRnZTdpZz09",
            "name": "Brand Official Page",
            "username": "brandofficial",
            "picture": "https://storage.example.com/profiles/abc123.jpg",
            "net": {
                "code": "facebook",
                "name": "Facebook"
            },
            "publishStatus": null
        }
    ],
    "captions": [
        {
            "plainText": "Excited to announce our new product! 🚀 #innovation",
            "net": null,
            "firstComment": null
        }
    ],
    "medias": [
        {
            "id": "TWVkaWFJZDk4NzY1NDMyMQ==",
            "url": "https://storage.example.com/media/product.jpg",
            "type": "image/jpeg",
            "net": null
        }
    ],
    "links": [],
    "labels": [
        {
            "id": "TGFiZWxJZDExMTExMTEx",
            "name": "Product Launch",
            "color": "#FF5733"
        }
    ],
    "briefing": null
}
Modified at 2026-06-19 17:25:23
Previous
Get a Post
Next
Update a Post
Built with