Platforms
Every platform Pozy connects to, what each one supports, its API id, and how one post request reaches all of them.
Pozy connects to social networks, messaging apps, phone channels, ad networks, stores, blogs, a CRM and the big productivity suites. You connect each account once, and then the same endpoints work across all of them: one post request for every network, one inbox for every conversation, one analytics call for every account. This page is the map. Each platform page covers what that platform supports, how to connect it, the post types and fields it takes, media limits, analytics and inbox details.
#Capability matrix
| Platform | Publish | Analytics | DMs | Comments | Reviews | Connect |
|---|---|---|---|---|---|---|
| Yes | Yes | Yes | Yes | – | OAuth | |
| TikTok | Yes | Yes | Yes | Yes | – | OAuth |
| YouTube | Yes | Yes | – | Yes | – | OAuth |
| Yes | Yes | Yes | Yes | Yes | OAuth | |
| Yes | Yes | – | Yes | – | OAuth | |
| X | Yes | Yes | Yes | Yes | – | OAuth |
| Threads | Yes | Yes | – | Yes | – | OAuth |
| Yes | Yes | – | – | – | OAuth | |
| Bluesky | Yes | Yes | Yes | Yes | – | Credentials |
| Google Business Profile | Yes | Yes | – | – | Yes | OAuth |
| Snapchat (beta) | Yes | Yes | – | – | – | OAuth |
| Reddit (paused) | Yes | Yes | Yes | Yes | – | OAuth |
| Yes | – | Yes | – | – | Credentials | |
| Telegram (coming soon) | Yes | – | Yes | – | – | Bot token |
| Discord (coming soon) | Yes | – | – | – | – | Bot token |
| Slack | Yes | – | Yes | – | – | Bot token |
| iMessage | – | – | Yes | – | – | Phone number |
| SMS | – | – | Yes | – | – | Phone number |
| RCS | – | – | Yes | – | – | Phone number |
| Shopify | – | – | – | – | – | OAuth |
| WooCommerce | – | – | – | – | – | Credentials |
| WordPress | – | – | – | – | – | OAuth |
| Wix | – | – | – | – | – | OAuth |
| Webflow | – | – | – | – | – | API token |
| HubSpot | – | – | – | – | – | OAuth |
| Google Analytics | – | – | – | – | – | OAuth |
| Google Workspace | – | – | – | – | – | OAuth |
| Microsoft 365 | – | – | – | – | – | OAuth |
Ad networks are listed on Ads.
"Paused" means the platform has switched off third-party access for now. Reddit closed its API to outside apps, so publishing, Reddit DMs and comments are paused; Reddit Ads keep working.
#Platform ids
Requests and responses use a short id per platform. Use these ids in platforms[].platform, in ?platform= filters and in connect URLs such as /v1/connect/{platform}.
| Id | Shown as | Id | Shown as |
|---|---|---|---|
instagram |
whatsapp |
||
tiktok |
TikTok | telegram |
Telegram |
youtube |
YouTube | discord |
Discord |
facebook |
slack |
Slack | |
linkedin |
imessage |
iMessage | |
twitter |
X | sms |
SMS |
threads |
Threads | rcs |
RCS |
pinterest |
shopify |
Shopify | |
bluesky |
Bluesky | wordpress |
WordPress |
googlebusiness |
Google Business Profile | wix |
Wix |
snapchat |
Snapchat | webflow |
Webflow |
reddit |
hubspot |
HubSpot | |
googleanalytics |
Google Analytics | google |
Google Workspace |
microsoft |
Microsoft 365 | woocommerce |
WooCommerce |
X's id is still twitter, for compatibility. Show "X" to people and send twitter to the API.
Ad networks have their own ids (metaads, googleads, tiktokads, linkedinads, pinterestads, xads, redditads, openaiads) because an ad account is a separate connection from the organic account. See Ads.
#One request for every network
A post lists its targets in platforms. Each entry names a connected account, and can override the text, the media, the time and the platform options for that account only. Everything else is shared.
curl -X POST https://api.pozy.ai/v1/posts \
-H "Authorization: Bearer $POZY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Our spring menu is here. Twelve new dishes, all from farms within 50 km. Book a table this week and the dessert is on us.",
"mediaItems": [{ "type": "image", "url": "https://cdn.example.com/spring-menu.jpg" }],
"platforms": [
{ "platform": "instagram", "accountId": "6720c1a94f3b2e0018d4a7f1" },
{ "platform": "facebook", "accountId": "6720c1a94f3b2e0018d4a7f4" },
{ "platform": "twitter", "accountId": "6720c1a94f3b2e0018d4a7f6", "customContent": "Spring menu is live: 12 new dishes from local farms. Dessert on us this week." },
{ "platform": "linkedin", "accountId": "6720c1a94f3b2e0018d4a7f5", "platformSpecificData": { "firstComment": "Reservations: https://example.com/book" } }
],
"scheduledFor": "2026-11-03T09:00:00",
"timezone": "Europe/Madrid"
}'const res = await fetch("https://api.pozy.ai/v1/posts", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.POZY_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
content: "Our spring menu is here. Twelve new dishes, all from farms within 50 km. Book a table this week and the dessert is on us.",
mediaItems: [{ type: "image", url: "https://cdn.example.com/spring-menu.jpg" }],
platforms: [
{ platform: "instagram", accountId: "6720c1a94f3b2e0018d4a7f1" },
{ platform: "facebook", accountId: "6720c1a94f3b2e0018d4a7f4" },
{ platform: "twitter", accountId: "6720c1a94f3b2e0018d4a7f6", customContent: "Spring menu is live: 12 new dishes from local farms. Dessert on us this week." },
{ platform: "linkedin", accountId: "6720c1a94f3b2e0018d4a7f5", platformSpecificData: { firstComment: "Reservations: https://example.com/book" } },
],
scheduledFor: "2026-11-03T09:00:00",
timezone: "Europe/Madrid",
}),
});
const data = await res.json();
if (!res.ok) throw new Error(data.error);
console.log(data.post.status); // "scheduled"import os, requests
resp = requests.post(
"https://api.pozy.ai/v1/posts",
headers={"Authorization": f"Bearer {os.environ['POZY_API_KEY']}"},
json={
"content": "Our spring menu is here. Twelve new dishes, all from farms within 50 km. Book a table this week and the dessert is on us.",
"mediaItems": [{"type": "image", "url": "https://cdn.example.com/spring-menu.jpg"}],
"platforms": [
{"platform": "instagram", "accountId": "6720c1a94f3b2e0018d4a7f1"},
{"platform": "facebook", "accountId": "6720c1a94f3b2e0018d4a7f4"},
{"platform": "twitter", "accountId": "6720c1a94f3b2e0018d4a7f6", "customContent": "Spring menu is live: 12 new dishes from local farms. Dessert on us this week."},
{"platform": "linkedin", "accountId": "6720c1a94f3b2e0018d4a7f5", "platformSpecificData": {"firstComment": "Reservations: https://example.com/book"}},
],
"scheduledFor": "2026-11-03T09:00:00",
"timezone": "Europe/Madrid",
},
)
print(resp.json()["post"]["status"])Per-entry overrides:
Field on a platforms entry |
Use it for |
|---|---|
customContent |
Different text for one account, usually to fit a shorter limit |
customMedia |
Different media for one account, such as a 9:16 crop for a Story |
scheduledFor |
A different time for one account |
platformSpecificData |
Options only that platform understands. Each platform page lists its fields. |
Each entry publishes on its own and reports its own status, so one network failing does not stop the others. A post where some entries failed ends as partial. See Post lifecycle.
#Compare text and media limits
The limits that most often break a cross-post. Full tables are on each platform page.
| Platform | Text limit | Images per post | Videos per post | Text-only posts |
|---|---|---|---|---|
| 2,200 | 1, or 10 in a carousel | 1 | No | |
| TikTok | 2,200 (video), 4,000 (photo description) | Up to 35 | 1 | No |
| YouTube | 100 title, 5,000 description | None | 1 | No |
| 63,206 | 10 | 1 | Yes | |
| 3,000 | 20 (or 1 document) | 1 | Yes | |
| X | 280, or 25,000 with Premium | 4 (or 1 GIF) | 1 | Yes |
| Threads | 500 | 10 | 1 | Yes |
| 100 title, 800 description | 1 | 1 | No | |
| Bluesky | 300 | 4 | 1 | Yes |
| Google Business Profile | 1,500 | 1 | None | Yes |
| Snapchat | 160 (Spotlight) | 1 | 1 | No |
Before you schedule a large batch, run it through validation to catch these limits without publishing anything.
#Social networks
#Messaging
#Commerce, blogs and CRM
#Email, calendar and files
#Before you connect anything
- Every account belongs to a profile. If you are building for your own customers, create one profile per customer first. See Build a platform.
- Most platforms connect through the platform's own sign-in screen. A few use credentials, a bot token or a phone number. See Connecting accounts.
- The first 2 connected accounts are free. After that each account is billed per day it stays connected. See Pricing.