publishAt will have stage IDEA.publishAt will have stage DRAFT.type field determines which other fields are required or supported (e.g., LINK posts require links, MEDIA posts require medias).POST /media endpoint to obtain mediaLibId values.facebook, instagram, instagramV2, linkedIn, tiktok, threads, googleMyBusiness, youtube, twitter) are only applied to posts targeting those networks.net property, or apply to all networks by leaving it null.instagramV2| Field | Type | Description |
|---|---|---|
shareToFeed | boolean | Share a Reel or Story to the profile feed. |
threads| Field | Type | Description |
|---|---|---|
poll | string[] | Poll options (2–4 items, each 1–25 characters). |
isGhostPost | boolean | Publish as a ghost post (reply-only, not shown on the profile grid). |
googleMyBusinesspostTopicType is required.| Field | Type | Required | Description |
|---|---|---|---|
postTopicType | STANDARD | EVENT | OFFER | ✅ | Type of GMB post. |
title | string | For EVENT/OFFER | Event or offer title (max 58 chars). |
startAt | ISO 8601 | For EVENT/OFFER | Start date/time. |
endAt | ISO 8601 | For EVENT/OFFER | End date/time. |
ctaType | enum | No | Call-to-action: BOOK, ORDER, SHOP, LEARN_MORE, SIGN_UP, CALL. |
ctaLink | string | When CTA ≠CALL | URL for the CTA button (max 255 chars). |
couponCode | string | No | Coupon code for OFFER posts (max 100 chars). |
redeemOnlineUrl | string | No | URL to redeem the offer online (max 255 chars). |
termConditions | string | No | Terms and conditions for OFFER posts (max 5000 chars). |
youtube| Field | Type | Default | Description |
|---|---|---|---|
title | string | — | Video title (max 100 characters). |
madeForKids | boolean | false | Mark video as made for kids. |
containsSyntheticMedia | boolean | false | Mark video as containing AI-generated media. |
notifySubscribers | boolean | true | Notify subscribers on publish. |
twitter| Field | Type | Description |
|---|---|---|
poll | string[] | Poll options (2–4 items, each 1–25 characters). |
pollDuration | integer | Poll duration in minutes (5–10080). |
replySettings | FOLLOWING | MENTIONED_USERS | SUBSCRIBERS | VERIFIED | Restrict who can reply. Omit for everyone. |
superFollowersOnly | boolean | Limit post visibility to super followers. |
madeWithAi | boolean | Mark the post as made with AI. |
paidPartnership | boolean | Mark the post as a paid partnership. |
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
}
}'{
"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
}