@postrun/js 2.9.0 → 2.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-IK4QXQLM.js → chunk-QMBBAADH.js} +3 -3
- package/dist/{chunk-IK4QXQLM.js.map → chunk-QMBBAADH.js.map} +1 -1
- package/dist/{chunk-LATXGVUG.js → chunk-T4V4M2WL.js} +1353 -369
- package/dist/chunk-T4V4M2WL.js.map +1 -0
- package/dist/index.cjs +1348 -364
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/schemas/index.cjs +1351 -367
- package/dist/schemas/index.cjs.map +1 -1
- package/dist/schemas/index.d.cts +1190 -206
- package/dist/schemas/index.d.ts +1190 -206
- package/dist/schemas/index.js +1 -1
- package/dist/server.cjs +1348 -364
- package/dist/server.cjs.map +1 -1
- package/dist/server.d.cts +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.js +2 -2
- package/dist/{types.gen-BUi197pC.d.cts → types.gen-CENLQ15A.d.cts} +2708 -996
- package/dist/{types.gen-BUi197pC.d.ts → types.gen-CENLQ15A.d.ts} +2708 -996
- package/package.json +1 -1
- package/dist/chunk-LATXGVUG.js.map +0 -1
|
@@ -5359,22 +5359,85 @@ type PostsListResponses = {
|
|
|
5359
5359
|
[key: string]: string | number | boolean;
|
|
5360
5360
|
};
|
|
5361
5361
|
variants: Array<{
|
|
5362
|
+
platform: 'x';
|
|
5363
|
+
post_type: 'text' | 'single_image' | 'multi_image' | 'video';
|
|
5364
|
+
/**
|
|
5365
|
+
* X (Twitter) organic post settings.
|
|
5366
|
+
*/
|
|
5367
|
+
settings: {
|
|
5368
|
+
/**
|
|
5369
|
+
* Who may reply. Omit (or `everyone`) = anyone. `everyone` is sugar that is normalised to an omitted field.
|
|
5370
|
+
*/
|
|
5371
|
+
reply_settings?: 'everyone' | 'following' | 'mentionedUsers' | 'subscribers' | 'verified';
|
|
5372
|
+
/**
|
|
5373
|
+
* Quote a post by id. Mutually exclusive with poll/card_uri/media. Enterprise-tier at publish.
|
|
5374
|
+
*/
|
|
5375
|
+
quote_tweet_id?: string;
|
|
5376
|
+
/**
|
|
5377
|
+
* Create a poll. Mutually exclusive with media, quote, and card_uri.
|
|
5378
|
+
*/
|
|
5379
|
+
poll?: {
|
|
5380
|
+
/**
|
|
5381
|
+
* 2–4 options, each 1–25 characters.
|
|
5382
|
+
*/
|
|
5383
|
+
options: Array<string>;
|
|
5384
|
+
/**
|
|
5385
|
+
* Poll duration in minutes (5 min – 7 days).
|
|
5386
|
+
*/
|
|
5387
|
+
duration_minutes: number;
|
|
5388
|
+
/**
|
|
5389
|
+
* Reply restriction for the poll post (same enum).
|
|
5390
|
+
*/
|
|
5391
|
+
reply_settings?: 'following' | 'mentionedUsers' | 'subscribers' | 'verified';
|
|
5392
|
+
};
|
|
5393
|
+
/**
|
|
5394
|
+
* Reply/thread chaining controls.
|
|
5395
|
+
*/
|
|
5396
|
+
reply?: {
|
|
5397
|
+
/**
|
|
5398
|
+
* Parent post id; required when `reply` is present.
|
|
5399
|
+
*/
|
|
5400
|
+
in_reply_to_tweet_id: string;
|
|
5401
|
+
/**
|
|
5402
|
+
* User ids dropped from the auto-mention chain.
|
|
5403
|
+
*/
|
|
5404
|
+
exclude_reply_user_ids?: Array<string>;
|
|
5405
|
+
/**
|
|
5406
|
+
* Auto-prepend the parent participants' @mentions.
|
|
5407
|
+
*/
|
|
5408
|
+
auto_populate_reply_metadata?: boolean;
|
|
5409
|
+
};
|
|
5410
|
+
/**
|
|
5411
|
+
* Post to an X Community.
|
|
5412
|
+
*/
|
|
5413
|
+
community_id?: string;
|
|
5414
|
+
/**
|
|
5415
|
+
* Restrict to Super Followers (default false).
|
|
5416
|
+
*/
|
|
5417
|
+
for_super_followers_only?: boolean;
|
|
5418
|
+
/**
|
|
5419
|
+
* Attach a place.
|
|
5420
|
+
*/
|
|
5421
|
+
geo?: {
|
|
5422
|
+
place_id: string;
|
|
5423
|
+
};
|
|
5424
|
+
/**
|
|
5425
|
+
* Cards-API reference. Mutually exclusive with quote/poll/media.
|
|
5426
|
+
*/
|
|
5427
|
+
card_uri?: string;
|
|
5428
|
+
/**
|
|
5429
|
+
* Tag ≤10 users on attached media.
|
|
5430
|
+
*/
|
|
5431
|
+
media_tagged_user_ids?: Array<string>;
|
|
5432
|
+
};
|
|
5362
5433
|
id: string;
|
|
5363
5434
|
object: 'post_variant';
|
|
5364
5435
|
/**
|
|
5365
5436
|
* The connected account this variant publishes to. null when that connection was removed (disconnected) — the variant then fails at publish time with a `connection_removed` error; reconnect + reschedule to resume.
|
|
5366
5437
|
*/
|
|
5367
5438
|
connection_id: string | null;
|
|
5368
|
-
platform: 'x' | 'linkedin' | 'facebook_page' | 'instagram' | 'tiktok';
|
|
5369
|
-
post_type: 'text' | 'single_image' | 'multi_image' | 'video' | 'reel' | 'carousel';
|
|
5370
5439
|
body: string | null;
|
|
5371
5440
|
status: 'draft' | 'scheduled' | 'publishing' | 'published' | 'failed';
|
|
5372
|
-
/**
|
|
5373
|
-
* Native per-platform settings, as stored.
|
|
5374
|
-
*/
|
|
5375
|
-
settings: {
|
|
5376
|
-
[key: string]: unknown;
|
|
5377
|
-
};
|
|
5378
5441
|
/**
|
|
5379
5442
|
* Per-variant schedule override (ISO-8601); null inherits the post.
|
|
5380
5443
|
*/
|
|
@@ -5409,351 +5472,504 @@ type PostsListResponses = {
|
|
|
5409
5472
|
*/
|
|
5410
5473
|
alt_text_override: string | null;
|
|
5411
5474
|
}>;
|
|
5412
|
-
}
|
|
5413
|
-
|
|
5414
|
-
|
|
5415
|
-
*/
|
|
5416
|
-
created_at: string;
|
|
5417
|
-
/**
|
|
5418
|
-
* ISO-8601 last-update time.
|
|
5419
|
-
*/
|
|
5420
|
-
updated_at: string;
|
|
5421
|
-
}>;
|
|
5422
|
-
/**
|
|
5423
|
-
* Total items matching the query, across all pages.
|
|
5424
|
-
*/
|
|
5425
|
-
total: number;
|
|
5426
|
-
/**
|
|
5427
|
-
* The limit applied to this page.
|
|
5428
|
-
*/
|
|
5429
|
-
limit: number;
|
|
5430
|
-
/**
|
|
5431
|
-
* The offset applied to this page.
|
|
5432
|
-
*/
|
|
5433
|
-
offset: number;
|
|
5434
|
-
/**
|
|
5435
|
-
* True if more items exist after this page.
|
|
5436
|
-
*/
|
|
5437
|
-
has_more: boolean;
|
|
5438
|
-
};
|
|
5439
|
-
};
|
|
5440
|
-
type PostsListResponse = PostsListResponses[keyof PostsListResponses];
|
|
5441
|
-
type PostsCreateData = {
|
|
5442
|
-
body: {
|
|
5443
|
-
/**
|
|
5444
|
-
* Profile that owns this post.
|
|
5445
|
-
*/
|
|
5446
|
-
profile_id: string;
|
|
5447
|
-
/**
|
|
5448
|
-
* now = publish immediately; schedule = publish at schedule_at; draft = store only.
|
|
5449
|
-
*/
|
|
5450
|
-
publish?: 'now' | 'schedule' | 'draft';
|
|
5451
|
-
/**
|
|
5452
|
-
* UTC ISO-8601 publish time. Required when publish = schedule.
|
|
5453
|
-
*/
|
|
5454
|
-
schedule_at?: string;
|
|
5455
|
-
external_id?: string;
|
|
5456
|
-
/**
|
|
5457
|
-
* Customer-owned key/value context, returned on reads and filterable on list endpoints (exact match). Values are scalars: string (≤500 chars), number, or boolean. At most 50 keys; keys ≤40 chars; total serialized JSON must fit in 16 KiB. Arrays and nested objects are out of scope for v1 (kept out to keep the contract scalar + exact-match). Keep a key’s value type consistent across records — filtering matches type-exactly. Never derive auth/scopes from metadata.
|
|
5458
|
-
*/
|
|
5459
|
-
metadata?: {
|
|
5460
|
-
[key: string]: string | number | boolean;
|
|
5461
|
-
};
|
|
5462
|
-
tags?: Array<string>;
|
|
5463
|
-
notes?: string;
|
|
5464
|
-
/**
|
|
5465
|
-
* Validate the post without persisting or scheduling.
|
|
5466
|
-
*/
|
|
5467
|
-
dry_run?: boolean;
|
|
5468
|
-
/**
|
|
5469
|
-
* A single platform variant of a post: connection, platform, explicit post_type, body, ordered media, and native typed settings.
|
|
5470
|
-
*/
|
|
5471
|
-
variants: Array<{
|
|
5472
|
-
platform: 'x';
|
|
5473
|
-
post_type: 'text' | 'single_image' | 'multi_image' | 'video';
|
|
5474
|
-
/**
|
|
5475
|
-
* The connected account this variant publishes to.
|
|
5476
|
-
*/
|
|
5477
|
-
connection_id: string;
|
|
5478
|
-
/**
|
|
5479
|
-
* Caption / commentary / message for the post.
|
|
5480
|
-
*/
|
|
5481
|
-
body?: string;
|
|
5482
|
-
/**
|
|
5483
|
-
* Ordered media references; the count drives the post-type rules.
|
|
5484
|
-
*/
|
|
5485
|
-
media?: Array<{
|
|
5486
|
-
media_id: string;
|
|
5487
|
-
/**
|
|
5488
|
-
* Per-variant crop applied at publish; omit for none.
|
|
5489
|
-
*/
|
|
5490
|
-
crop_box?: {
|
|
5491
|
-
[key: string]: unknown;
|
|
5492
|
-
} | null;
|
|
5493
|
-
/**
|
|
5494
|
-
* Per-variant alt text; falls back to the asset's.
|
|
5495
|
-
*/
|
|
5496
|
-
alt_text_override?: string | null;
|
|
5497
|
-
}>;
|
|
5498
|
-
/**
|
|
5499
|
-
* X (Twitter) organic post settings.
|
|
5500
|
-
*/
|
|
5501
|
-
settings?: {
|
|
5502
|
-
/**
|
|
5503
|
-
* Who may reply. Omit (or `everyone`) = anyone. `everyone` is sugar that is normalised to an omitted field.
|
|
5504
|
-
*/
|
|
5505
|
-
reply_settings?: 'everyone' | 'following' | 'mentionedUsers' | 'subscribers' | 'verified';
|
|
5506
|
-
/**
|
|
5507
|
-
* Quote a post by id. Mutually exclusive with poll/card_uri/media. Enterprise-tier at publish.
|
|
5508
|
-
*/
|
|
5509
|
-
quote_tweet_id?: string;
|
|
5475
|
+
} | {
|
|
5476
|
+
platform: 'linkedin';
|
|
5477
|
+
post_type: 'text' | 'single_image' | 'multi_image' | 'video';
|
|
5510
5478
|
/**
|
|
5511
|
-
*
|
|
5479
|
+
* LinkedIn personal member post settings.
|
|
5512
5480
|
*/
|
|
5513
|
-
|
|
5481
|
+
settings: {
|
|
5514
5482
|
/**
|
|
5515
|
-
*
|
|
5483
|
+
* Audience. PUBLIC or CONNECTIONS — CONTAINER/LOGGED_IN are invalid for member posts.
|
|
5516
5484
|
*/
|
|
5517
|
-
|
|
5485
|
+
visibility: 'PUBLIC' | 'CONNECTIONS';
|
|
5518
5486
|
/**
|
|
5519
|
-
*
|
|
5487
|
+
* Which content shape this post carries (mutually exclusive with the others).
|
|
5520
5488
|
*/
|
|
5521
|
-
|
|
5489
|
+
content_kind: 'text' | 'single_image' | 'video' | 'multi_image' | 'document' | 'article' | 'poll';
|
|
5522
5490
|
/**
|
|
5523
|
-
*
|
|
5491
|
+
* An article share card.
|
|
5524
5492
|
*/
|
|
5525
|
-
|
|
5526
|
-
|
|
5527
|
-
|
|
5528
|
-
|
|
5529
|
-
|
|
5530
|
-
|
|
5493
|
+
article?: {
|
|
5494
|
+
/**
|
|
5495
|
+
* Article URL. Required for an article post.
|
|
5496
|
+
*/
|
|
5497
|
+
source: string;
|
|
5498
|
+
/**
|
|
5499
|
+
* Article headline, ≤400 characters.
|
|
5500
|
+
*/
|
|
5501
|
+
title?: string;
|
|
5502
|
+
/**
|
|
5503
|
+
* Subtext on the article card, ≤4086 characters.
|
|
5504
|
+
*/
|
|
5505
|
+
description?: string;
|
|
5506
|
+
/**
|
|
5507
|
+
* Optional thumbnail, referenced by OUR media id (resolved to a urn:li:image at publish).
|
|
5508
|
+
*/
|
|
5509
|
+
thumbnail_media_id?: string;
|
|
5510
|
+
};
|
|
5531
5511
|
/**
|
|
5532
|
-
*
|
|
5512
|
+
* A LinkedIn poll (mutually exclusive with other content).
|
|
5533
5513
|
*/
|
|
5534
|
-
|
|
5514
|
+
poll?: {
|
|
5515
|
+
/**
|
|
5516
|
+
* The poll question, ≤140 characters.
|
|
5517
|
+
*/
|
|
5518
|
+
question: string;
|
|
5519
|
+
/**
|
|
5520
|
+
* 2–4 options, each 1–30 characters.
|
|
5521
|
+
*/
|
|
5522
|
+
options: Array<string>;
|
|
5523
|
+
/**
|
|
5524
|
+
* How long the poll runs.
|
|
5525
|
+
*/
|
|
5526
|
+
duration: 'ONE_DAY' | 'THREE_DAYS' | 'SEVEN_DAYS' | 'FOURTEEN_DAYS';
|
|
5527
|
+
};
|
|
5535
5528
|
/**
|
|
5536
|
-
*
|
|
5529
|
+
* Document-post display options (asset rides on media[]).
|
|
5537
5530
|
*/
|
|
5538
|
-
|
|
5531
|
+
document?: {
|
|
5532
|
+
/**
|
|
5533
|
+
* Display title shown above the document. Required for document posts.
|
|
5534
|
+
*/
|
|
5535
|
+
title: string;
|
|
5536
|
+
};
|
|
5539
5537
|
/**
|
|
5540
|
-
*
|
|
5538
|
+
* Disable resharing of this post (default false).
|
|
5541
5539
|
*/
|
|
5542
|
-
|
|
5540
|
+
disable_reshare?: boolean;
|
|
5541
|
+
/**
|
|
5542
|
+
* Inline @mentions encoded into the commentary at publish.
|
|
5543
|
+
*/
|
|
5544
|
+
mentions?: Array<{
|
|
5545
|
+
/**
|
|
5546
|
+
* Whether the mentioned entity is a member or an organization.
|
|
5547
|
+
*/
|
|
5548
|
+
type: 'person' | 'organization';
|
|
5549
|
+
/**
|
|
5550
|
+
* Rendered text; must match the entity name (case-sensitive) for the link to convert.
|
|
5551
|
+
*/
|
|
5552
|
+
name: string;
|
|
5553
|
+
/**
|
|
5554
|
+
* The mentioned entity urn (supplied by the caller).
|
|
5555
|
+
*/
|
|
5556
|
+
urn: string;
|
|
5557
|
+
}>;
|
|
5543
5558
|
};
|
|
5559
|
+
id: string;
|
|
5560
|
+
object: 'post_variant';
|
|
5544
5561
|
/**
|
|
5545
|
-
*
|
|
5562
|
+
* The connected account this variant publishes to. null when that connection was removed (disconnected) — the variant then fails at publish time with a `connection_removed` error; reconnect + reschedule to resume.
|
|
5546
5563
|
*/
|
|
5547
|
-
|
|
5564
|
+
connection_id: string | null;
|
|
5565
|
+
body: string | null;
|
|
5566
|
+
status: 'draft' | 'scheduled' | 'publishing' | 'published' | 'failed';
|
|
5548
5567
|
/**
|
|
5549
|
-
*
|
|
5568
|
+
* Per-variant schedule override (ISO-8601); null inherits the post.
|
|
5550
5569
|
*/
|
|
5551
|
-
|
|
5570
|
+
schedule_at: string | null;
|
|
5571
|
+
result: {
|
|
5572
|
+
platform_post_id: string;
|
|
5573
|
+
permalink: string | null;
|
|
5574
|
+
published_at: string;
|
|
5575
|
+
} | null;
|
|
5576
|
+
error: {
|
|
5577
|
+
code: string;
|
|
5578
|
+
message: string;
|
|
5579
|
+
/**
|
|
5580
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string.
|
|
5581
|
+
*/
|
|
5582
|
+
display_error: string;
|
|
5583
|
+
} | null;
|
|
5584
|
+
media: Array<{
|
|
5585
|
+
media_id: string;
|
|
5586
|
+
/**
|
|
5587
|
+
* Ordering of this media within the variant (e.g. carousel order).
|
|
5588
|
+
*/
|
|
5589
|
+
position: number;
|
|
5590
|
+
/**
|
|
5591
|
+
* Per-variant crop, applied at publish; null = none.
|
|
5592
|
+
*/
|
|
5593
|
+
crop_box: {
|
|
5594
|
+
[key: string]: unknown;
|
|
5595
|
+
} | null;
|
|
5596
|
+
/**
|
|
5597
|
+
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
5598
|
+
*/
|
|
5599
|
+
alt_text_override: string | null;
|
|
5600
|
+
}>;
|
|
5601
|
+
} | {
|
|
5602
|
+
platform: 'facebook_page';
|
|
5603
|
+
post_type: 'text' | 'single_image' | 'multi_image' | 'reel';
|
|
5552
5604
|
/**
|
|
5553
|
-
*
|
|
5605
|
+
* Facebook Page organic post settings.
|
|
5554
5606
|
*/
|
|
5555
|
-
|
|
5556
|
-
|
|
5607
|
+
settings: {
|
|
5608
|
+
/**
|
|
5609
|
+
* URL to unfurl. A feed post needs a body (message) OR a link.
|
|
5610
|
+
*/
|
|
5611
|
+
link?: string;
|
|
5557
5612
|
};
|
|
5613
|
+
id: string;
|
|
5614
|
+
object: 'post_variant';
|
|
5558
5615
|
/**
|
|
5559
|
-
*
|
|
5616
|
+
* The connected account this variant publishes to. null when that connection was removed (disconnected) — the variant then fails at publish time with a `connection_removed` error; reconnect + reschedule to resume.
|
|
5560
5617
|
*/
|
|
5561
|
-
|
|
5618
|
+
connection_id: string | null;
|
|
5619
|
+
body: string | null;
|
|
5620
|
+
status: 'draft' | 'scheduled' | 'publishing' | 'published' | 'failed';
|
|
5562
5621
|
/**
|
|
5563
|
-
*
|
|
5622
|
+
* Per-variant schedule override (ISO-8601); null inherits the post.
|
|
5564
5623
|
*/
|
|
5565
|
-
|
|
5566
|
-
|
|
5567
|
-
|
|
5568
|
-
|
|
5569
|
-
|
|
5570
|
-
/**
|
|
5571
|
-
* The connected account this variant publishes to.
|
|
5572
|
-
*/
|
|
5573
|
-
connection_id: string;
|
|
5574
|
-
/**
|
|
5575
|
-
* Caption / commentary / message for the post.
|
|
5576
|
-
*/
|
|
5577
|
-
body?: string;
|
|
5578
|
-
/**
|
|
5579
|
-
* Ordered media references; the count drives the post-type rules.
|
|
5580
|
-
*/
|
|
5581
|
-
media?: Array<{
|
|
5582
|
-
media_id: string;
|
|
5583
|
-
/**
|
|
5584
|
-
* Per-variant crop applied at publish; omit for none.
|
|
5585
|
-
*/
|
|
5586
|
-
crop_box?: {
|
|
5587
|
-
[key: string]: unknown;
|
|
5624
|
+
schedule_at: string | null;
|
|
5625
|
+
result: {
|
|
5626
|
+
platform_post_id: string;
|
|
5627
|
+
permalink: string | null;
|
|
5628
|
+
published_at: string;
|
|
5588
5629
|
} | null;
|
|
5589
|
-
|
|
5590
|
-
|
|
5591
|
-
|
|
5592
|
-
alt_text_override?: string | null;
|
|
5593
|
-
}>;
|
|
5594
|
-
/**
|
|
5595
|
-
* LinkedIn personal member post settings.
|
|
5596
|
-
*/
|
|
5597
|
-
settings: {
|
|
5598
|
-
/**
|
|
5599
|
-
* Audience. PUBLIC or CONNECTIONS — CONTAINER/LOGGED_IN are invalid for member posts.
|
|
5600
|
-
*/
|
|
5601
|
-
visibility: 'PUBLIC' | 'CONNECTIONS';
|
|
5602
|
-
/**
|
|
5603
|
-
* Which content shape this post carries (mutually exclusive with the others).
|
|
5604
|
-
*/
|
|
5605
|
-
content_kind: 'text' | 'single_image' | 'video' | 'multi_image' | 'document' | 'article' | 'poll';
|
|
5606
|
-
/**
|
|
5607
|
-
* An article share card.
|
|
5608
|
-
*/
|
|
5609
|
-
article?: {
|
|
5630
|
+
error: {
|
|
5631
|
+
code: string;
|
|
5632
|
+
message: string;
|
|
5610
5633
|
/**
|
|
5611
|
-
*
|
|
5634
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string.
|
|
5612
5635
|
*/
|
|
5613
|
-
|
|
5636
|
+
display_error: string;
|
|
5637
|
+
} | null;
|
|
5638
|
+
media: Array<{
|
|
5639
|
+
media_id: string;
|
|
5614
5640
|
/**
|
|
5615
|
-
*
|
|
5641
|
+
* Ordering of this media within the variant (e.g. carousel order).
|
|
5616
5642
|
*/
|
|
5617
|
-
|
|
5643
|
+
position: number;
|
|
5618
5644
|
/**
|
|
5619
|
-
*
|
|
5645
|
+
* Per-variant crop, applied at publish; null = none.
|
|
5620
5646
|
*/
|
|
5621
|
-
|
|
5647
|
+
crop_box: {
|
|
5648
|
+
[key: string]: unknown;
|
|
5649
|
+
} | null;
|
|
5622
5650
|
/**
|
|
5623
|
-
*
|
|
5651
|
+
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
5624
5652
|
*/
|
|
5625
|
-
|
|
5626
|
-
}
|
|
5653
|
+
alt_text_override: string | null;
|
|
5654
|
+
}>;
|
|
5655
|
+
} | {
|
|
5656
|
+
platform: 'instagram';
|
|
5657
|
+
post_type: 'single_image' | 'carousel' | 'reel';
|
|
5627
5658
|
/**
|
|
5628
|
-
*
|
|
5659
|
+
* Instagram organic post settings (feed image/carousel + reels).
|
|
5629
5660
|
*/
|
|
5630
|
-
|
|
5661
|
+
settings: {
|
|
5631
5662
|
/**
|
|
5632
|
-
*
|
|
5663
|
+
* Feed image, carousel, or reel. Defaults to IMAGE for a single image.
|
|
5633
5664
|
*/
|
|
5634
|
-
|
|
5665
|
+
media_type?: 'IMAGE' | 'CAROUSEL' | 'REELS';
|
|
5635
5666
|
/**
|
|
5636
|
-
*
|
|
5667
|
+
* Facebook Page id representing a location.
|
|
5637
5668
|
*/
|
|
5638
|
-
|
|
5669
|
+
location_id?: string;
|
|
5639
5670
|
/**
|
|
5640
|
-
*
|
|
5671
|
+
* Tag users on an image; x/y are fractional positions in [0,1].
|
|
5641
5672
|
*/
|
|
5642
|
-
|
|
5643
|
-
|
|
5644
|
-
|
|
5645
|
-
|
|
5646
|
-
|
|
5647
|
-
|
|
5673
|
+
user_tags?: Array<{
|
|
5674
|
+
/**
|
|
5675
|
+
* IG username to tag.
|
|
5676
|
+
*/
|
|
5677
|
+
username: string;
|
|
5678
|
+
/**
|
|
5679
|
+
* Horizontal position on the image, in [0,1].
|
|
5680
|
+
*/
|
|
5681
|
+
x: number;
|
|
5682
|
+
/**
|
|
5683
|
+
* Vertical position on the image, in [0,1].
|
|
5684
|
+
*/
|
|
5685
|
+
y: number;
|
|
5686
|
+
}>;
|
|
5648
5687
|
/**
|
|
5649
|
-
*
|
|
5688
|
+
* ≤3 co-author usernames.
|
|
5650
5689
|
*/
|
|
5651
|
-
|
|
5690
|
+
collaborators?: Array<string>;
|
|
5691
|
+
/**
|
|
5692
|
+
* Reel also appears in the main feed.
|
|
5693
|
+
*/
|
|
5694
|
+
share_to_feed?: boolean;
|
|
5695
|
+
/**
|
|
5696
|
+
* Reel cover frame offset (ms).
|
|
5697
|
+
*/
|
|
5698
|
+
thumb_offset?: number;
|
|
5699
|
+
/**
|
|
5700
|
+
* Custom reel cover image URL.
|
|
5701
|
+
*/
|
|
5702
|
+
cover_url?: string;
|
|
5703
|
+
/**
|
|
5704
|
+
* Label for the reel's original audio.
|
|
5705
|
+
*/
|
|
5706
|
+
audio_name?: string;
|
|
5652
5707
|
};
|
|
5708
|
+
id: string;
|
|
5709
|
+
object: 'post_variant';
|
|
5653
5710
|
/**
|
|
5654
|
-
*
|
|
5711
|
+
* The connected account this variant publishes to. null when that connection was removed (disconnected) — the variant then fails at publish time with a `connection_removed` error; reconnect + reschedule to resume.
|
|
5655
5712
|
*/
|
|
5656
|
-
|
|
5713
|
+
connection_id: string | null;
|
|
5714
|
+
body: string | null;
|
|
5715
|
+
status: 'draft' | 'scheduled' | 'publishing' | 'published' | 'failed';
|
|
5657
5716
|
/**
|
|
5658
|
-
*
|
|
5717
|
+
* Per-variant schedule override (ISO-8601); null inherits the post.
|
|
5659
5718
|
*/
|
|
5660
|
-
|
|
5719
|
+
schedule_at: string | null;
|
|
5720
|
+
result: {
|
|
5721
|
+
platform_post_id: string;
|
|
5722
|
+
permalink: string | null;
|
|
5723
|
+
published_at: string;
|
|
5724
|
+
} | null;
|
|
5725
|
+
error: {
|
|
5726
|
+
code: string;
|
|
5727
|
+
message: string;
|
|
5661
5728
|
/**
|
|
5662
|
-
*
|
|
5729
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string.
|
|
5663
5730
|
*/
|
|
5664
|
-
|
|
5731
|
+
display_error: string;
|
|
5732
|
+
} | null;
|
|
5733
|
+
media: Array<{
|
|
5734
|
+
media_id: string;
|
|
5665
5735
|
/**
|
|
5666
|
-
*
|
|
5736
|
+
* Ordering of this media within the variant (e.g. carousel order).
|
|
5667
5737
|
*/
|
|
5668
|
-
|
|
5738
|
+
position: number;
|
|
5669
5739
|
/**
|
|
5670
|
-
*
|
|
5740
|
+
* Per-variant crop, applied at publish; null = none.
|
|
5671
5741
|
*/
|
|
5672
|
-
|
|
5742
|
+
crop_box: {
|
|
5743
|
+
[key: string]: unknown;
|
|
5744
|
+
} | null;
|
|
5745
|
+
/**
|
|
5746
|
+
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
5747
|
+
*/
|
|
5748
|
+
alt_text_override: string | null;
|
|
5673
5749
|
}>;
|
|
5674
|
-
}
|
|
5675
|
-
|
|
5676
|
-
|
|
5677
|
-
post_type: 'single_image' | 'carousel' | 'reel';
|
|
5678
|
-
/**
|
|
5679
|
-
* The connected account this variant publishes to.
|
|
5680
|
-
*/
|
|
5681
|
-
connection_id: string;
|
|
5682
|
-
/**
|
|
5683
|
-
* Caption / commentary / message for the post.
|
|
5684
|
-
*/
|
|
5685
|
-
body?: string;
|
|
5686
|
-
/**
|
|
5687
|
-
* Ordered media references; the count drives the post-type rules.
|
|
5688
|
-
*/
|
|
5689
|
-
media?: Array<{
|
|
5690
|
-
media_id: string;
|
|
5691
|
-
/**
|
|
5692
|
-
* Per-variant crop applied at publish; omit for none.
|
|
5693
|
-
*/
|
|
5694
|
-
crop_box?: {
|
|
5695
|
-
[key: string]: unknown;
|
|
5696
|
-
} | null;
|
|
5697
|
-
/**
|
|
5698
|
-
* Per-variant alt text; falls back to the asset's.
|
|
5699
|
-
*/
|
|
5700
|
-
alt_text_override?: string | null;
|
|
5701
|
-
}>;
|
|
5702
|
-
/**
|
|
5703
|
-
* Instagram organic post settings (feed image/carousel + reels).
|
|
5704
|
-
*/
|
|
5705
|
-
settings: {
|
|
5750
|
+
} | {
|
|
5751
|
+
platform: 'tiktok';
|
|
5752
|
+
post_type: 'video' | 'single_image' | 'carousel';
|
|
5706
5753
|
/**
|
|
5707
|
-
*
|
|
5754
|
+
* TikTok organic post settings (Direct Post: video + photo).
|
|
5708
5755
|
*/
|
|
5709
|
-
|
|
5756
|
+
settings: {
|
|
5757
|
+
/**
|
|
5758
|
+
* Audience for the post. The per-account allowed set is returned by creator_info at publish; an out-of-set value is rejected then. Unaudited apps may only use SELF_ONLY.
|
|
5759
|
+
*/
|
|
5760
|
+
privacy_level?: 'PUBLIC_TO_EVERYONE' | 'MUTUAL_FOLLOW_FRIENDS' | 'FOLLOWER_OF_CREATOR' | 'SELF_ONLY';
|
|
5761
|
+
/**
|
|
5762
|
+
* Disable comments on this post.
|
|
5763
|
+
*/
|
|
5764
|
+
disable_comment?: boolean;
|
|
5765
|
+
/**
|
|
5766
|
+
* Disable Duet (video only).
|
|
5767
|
+
*/
|
|
5768
|
+
disable_duet?: boolean;
|
|
5769
|
+
/**
|
|
5770
|
+
* Disable Stitch (video only).
|
|
5771
|
+
*/
|
|
5772
|
+
disable_stitch?: boolean;
|
|
5773
|
+
/**
|
|
5774
|
+
* Video cover frame offset (ms). Video posts only.
|
|
5775
|
+
*/
|
|
5776
|
+
video_cover_timestamp_ms?: number;
|
|
5777
|
+
/**
|
|
5778
|
+
* Which carousel image is the cover (0-based index into the ordered image list). Photo posts only.
|
|
5779
|
+
*/
|
|
5780
|
+
photo_cover_index?: number;
|
|
5781
|
+
/**
|
|
5782
|
+
* Auto-add a TikTok soundtrack. Photo posts only.
|
|
5783
|
+
*/
|
|
5784
|
+
auto_add_music?: boolean;
|
|
5785
|
+
/**
|
|
5786
|
+
* Disclose a paid partnership (branded content).
|
|
5787
|
+
*/
|
|
5788
|
+
brand_content_toggle?: boolean;
|
|
5789
|
+
/**
|
|
5790
|
+
* Disclose own-brand promotional content.
|
|
5791
|
+
*/
|
|
5792
|
+
brand_organic_toggle?: boolean;
|
|
5793
|
+
/**
|
|
5794
|
+
* Disclose AI-generated content. Video posts only.
|
|
5795
|
+
*/
|
|
5796
|
+
is_aigc?: boolean;
|
|
5797
|
+
};
|
|
5798
|
+
id: string;
|
|
5799
|
+
object: 'post_variant';
|
|
5710
5800
|
/**
|
|
5711
|
-
*
|
|
5801
|
+
* The connected account this variant publishes to. null when that connection was removed (disconnected) — the variant then fails at publish time with a `connection_removed` error; reconnect + reschedule to resume.
|
|
5712
5802
|
*/
|
|
5713
|
-
|
|
5803
|
+
connection_id: string | null;
|
|
5804
|
+
body: string | null;
|
|
5805
|
+
status: 'draft' | 'scheduled' | 'publishing' | 'published' | 'failed';
|
|
5714
5806
|
/**
|
|
5715
|
-
*
|
|
5807
|
+
* Per-variant schedule override (ISO-8601); null inherits the post.
|
|
5716
5808
|
*/
|
|
5717
|
-
|
|
5809
|
+
schedule_at: string | null;
|
|
5810
|
+
result: {
|
|
5811
|
+
platform_post_id: string;
|
|
5812
|
+
permalink: string | null;
|
|
5813
|
+
published_at: string;
|
|
5814
|
+
} | null;
|
|
5815
|
+
error: {
|
|
5816
|
+
code: string;
|
|
5817
|
+
message: string;
|
|
5718
5818
|
/**
|
|
5719
|
-
*
|
|
5819
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string.
|
|
5720
5820
|
*/
|
|
5721
|
-
|
|
5821
|
+
display_error: string;
|
|
5822
|
+
} | null;
|
|
5823
|
+
media: Array<{
|
|
5824
|
+
media_id: string;
|
|
5722
5825
|
/**
|
|
5723
|
-
*
|
|
5826
|
+
* Ordering of this media within the variant (e.g. carousel order).
|
|
5724
5827
|
*/
|
|
5725
|
-
|
|
5828
|
+
position: number;
|
|
5726
5829
|
/**
|
|
5727
|
-
*
|
|
5830
|
+
* Per-variant crop, applied at publish; null = none.
|
|
5728
5831
|
*/
|
|
5729
|
-
|
|
5832
|
+
crop_box: {
|
|
5833
|
+
[key: string]: unknown;
|
|
5834
|
+
} | null;
|
|
5835
|
+
/**
|
|
5836
|
+
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
5837
|
+
*/
|
|
5838
|
+
alt_text_override: string | null;
|
|
5730
5839
|
}>;
|
|
5731
|
-
|
|
5732
|
-
* ≤3 co-author usernames.
|
|
5733
|
-
*/
|
|
5734
|
-
collaborators?: Array<string>;
|
|
5735
|
-
/**
|
|
5736
|
-
* Reel also appears in the main feed.
|
|
5737
|
-
*/
|
|
5738
|
-
share_to_feed?: boolean;
|
|
5739
|
-
/**
|
|
5740
|
-
* Reel cover frame offset (ms).
|
|
5741
|
-
*/
|
|
5742
|
-
thumb_offset?: number;
|
|
5743
|
-
/**
|
|
5744
|
-
* Custom reel cover image URL.
|
|
5745
|
-
*/
|
|
5746
|
-
cover_url?: string;
|
|
5747
|
-
/**
|
|
5748
|
-
* Label for the reel's original audio.
|
|
5749
|
-
*/
|
|
5750
|
-
audio_name?: string;
|
|
5751
|
-
};
|
|
5752
|
-
} | {
|
|
5753
|
-
platform: 'facebook_page';
|
|
5754
|
-
post_type: 'text' | 'single_image' | 'multi_image' | 'reel';
|
|
5840
|
+
}>;
|
|
5755
5841
|
/**
|
|
5756
|
-
*
|
|
5842
|
+
* ISO-8601 creation time.
|
|
5843
|
+
*/
|
|
5844
|
+
created_at: string;
|
|
5845
|
+
/**
|
|
5846
|
+
* ISO-8601 last-update time.
|
|
5847
|
+
*/
|
|
5848
|
+
updated_at: string;
|
|
5849
|
+
}>;
|
|
5850
|
+
/**
|
|
5851
|
+
* Total items matching the query, across all pages.
|
|
5852
|
+
*/
|
|
5853
|
+
total: number;
|
|
5854
|
+
/**
|
|
5855
|
+
* The limit applied to this page.
|
|
5856
|
+
*/
|
|
5857
|
+
limit: number;
|
|
5858
|
+
/**
|
|
5859
|
+
* The offset applied to this page.
|
|
5860
|
+
*/
|
|
5861
|
+
offset: number;
|
|
5862
|
+
/**
|
|
5863
|
+
* True if more items exist after this page.
|
|
5864
|
+
*/
|
|
5865
|
+
has_more: boolean;
|
|
5866
|
+
};
|
|
5867
|
+
};
|
|
5868
|
+
type PostsListResponse = PostsListResponses[keyof PostsListResponses];
|
|
5869
|
+
type PostsCreateData = {
|
|
5870
|
+
body: {
|
|
5871
|
+
/**
|
|
5872
|
+
* Profile that owns this post.
|
|
5873
|
+
*/
|
|
5874
|
+
profile_id: string;
|
|
5875
|
+
/**
|
|
5876
|
+
* now = publish immediately; schedule = publish at schedule_at; draft = store only.
|
|
5877
|
+
*/
|
|
5878
|
+
publish?: 'now' | 'schedule' | 'draft';
|
|
5879
|
+
/**
|
|
5880
|
+
* UTC ISO-8601 publish time. Required when publish = schedule.
|
|
5881
|
+
*/
|
|
5882
|
+
schedule_at?: string;
|
|
5883
|
+
external_id?: string;
|
|
5884
|
+
/**
|
|
5885
|
+
* Customer-owned key/value context, returned on reads and filterable on list endpoints (exact match). Values are scalars: string (≤500 chars), number, or boolean. At most 50 keys; keys ≤40 chars; total serialized JSON must fit in 16 KiB. Arrays and nested objects are out of scope for v1 (kept out to keep the contract scalar + exact-match). Keep a key’s value type consistent across records — filtering matches type-exactly. Never derive auth/scopes from metadata.
|
|
5886
|
+
*/
|
|
5887
|
+
metadata?: {
|
|
5888
|
+
[key: string]: string | number | boolean;
|
|
5889
|
+
};
|
|
5890
|
+
tags?: Array<string>;
|
|
5891
|
+
notes?: string;
|
|
5892
|
+
/**
|
|
5893
|
+
* Validate the post without persisting or scheduling.
|
|
5894
|
+
*/
|
|
5895
|
+
dry_run?: boolean;
|
|
5896
|
+
/**
|
|
5897
|
+
* A single platform variant of a post: connection, platform, explicit post_type, body, ordered media, and native typed settings.
|
|
5898
|
+
*/
|
|
5899
|
+
variants: Array<{
|
|
5900
|
+
platform: 'x';
|
|
5901
|
+
post_type: 'text' | 'single_image' | 'multi_image' | 'video';
|
|
5902
|
+
/**
|
|
5903
|
+
* X (Twitter) organic post settings.
|
|
5904
|
+
*/
|
|
5905
|
+
settings?: {
|
|
5906
|
+
/**
|
|
5907
|
+
* Who may reply. Omit (or `everyone`) = anyone. `everyone` is sugar that is normalised to an omitted field.
|
|
5908
|
+
*/
|
|
5909
|
+
reply_settings?: 'everyone' | 'following' | 'mentionedUsers' | 'subscribers' | 'verified';
|
|
5910
|
+
/**
|
|
5911
|
+
* Quote a post by id. Mutually exclusive with poll/card_uri/media. Enterprise-tier at publish.
|
|
5912
|
+
*/
|
|
5913
|
+
quote_tweet_id?: string;
|
|
5914
|
+
/**
|
|
5915
|
+
* Create a poll. Mutually exclusive with media, quote, and card_uri.
|
|
5916
|
+
*/
|
|
5917
|
+
poll?: {
|
|
5918
|
+
/**
|
|
5919
|
+
* 2–4 options, each 1–25 characters.
|
|
5920
|
+
*/
|
|
5921
|
+
options: Array<string>;
|
|
5922
|
+
/**
|
|
5923
|
+
* Poll duration in minutes (5 min – 7 days).
|
|
5924
|
+
*/
|
|
5925
|
+
duration_minutes: number;
|
|
5926
|
+
/**
|
|
5927
|
+
* Reply restriction for the poll post (same enum).
|
|
5928
|
+
*/
|
|
5929
|
+
reply_settings?: 'following' | 'mentionedUsers' | 'subscribers' | 'verified';
|
|
5930
|
+
};
|
|
5931
|
+
/**
|
|
5932
|
+
* Reply/thread chaining controls.
|
|
5933
|
+
*/
|
|
5934
|
+
reply?: {
|
|
5935
|
+
/**
|
|
5936
|
+
* Parent post id; required when `reply` is present.
|
|
5937
|
+
*/
|
|
5938
|
+
in_reply_to_tweet_id: string;
|
|
5939
|
+
/**
|
|
5940
|
+
* User ids dropped from the auto-mention chain.
|
|
5941
|
+
*/
|
|
5942
|
+
exclude_reply_user_ids?: Array<string>;
|
|
5943
|
+
/**
|
|
5944
|
+
* Auto-prepend the parent participants' @mentions.
|
|
5945
|
+
*/
|
|
5946
|
+
auto_populate_reply_metadata?: boolean;
|
|
5947
|
+
};
|
|
5948
|
+
/**
|
|
5949
|
+
* Post to an X Community.
|
|
5950
|
+
*/
|
|
5951
|
+
community_id?: string;
|
|
5952
|
+
/**
|
|
5953
|
+
* Restrict to Super Followers (default false).
|
|
5954
|
+
*/
|
|
5955
|
+
for_super_followers_only?: boolean;
|
|
5956
|
+
/**
|
|
5957
|
+
* Attach a place.
|
|
5958
|
+
*/
|
|
5959
|
+
geo?: {
|
|
5960
|
+
place_id: string;
|
|
5961
|
+
};
|
|
5962
|
+
/**
|
|
5963
|
+
* Cards-API reference. Mutually exclusive with quote/poll/media.
|
|
5964
|
+
*/
|
|
5965
|
+
card_uri?: string;
|
|
5966
|
+
/**
|
|
5967
|
+
* Tag ≤10 users on attached media.
|
|
5968
|
+
*/
|
|
5969
|
+
media_tagged_user_ids?: Array<string>;
|
|
5970
|
+
};
|
|
5971
|
+
/**
|
|
5972
|
+
* The connected account this variant publishes to.
|
|
5757
5973
|
*/
|
|
5758
5974
|
connection_id: string;
|
|
5759
5975
|
/**
|
|
@@ -5776,18 +5992,90 @@ type PostsCreateData = {
|
|
|
5776
5992
|
*/
|
|
5777
5993
|
alt_text_override?: string | null;
|
|
5778
5994
|
}>;
|
|
5995
|
+
} | {
|
|
5996
|
+
platform: 'linkedin';
|
|
5997
|
+
post_type: 'text' | 'single_image' | 'multi_image' | 'video';
|
|
5779
5998
|
/**
|
|
5780
|
-
*
|
|
5999
|
+
* LinkedIn personal member post settings.
|
|
5781
6000
|
*/
|
|
5782
|
-
settings
|
|
6001
|
+
settings: {
|
|
5783
6002
|
/**
|
|
5784
|
-
*
|
|
6003
|
+
* Audience. PUBLIC or CONNECTIONS — CONTAINER/LOGGED_IN are invalid for member posts.
|
|
5785
6004
|
*/
|
|
5786
|
-
|
|
6005
|
+
visibility: 'PUBLIC' | 'CONNECTIONS';
|
|
6006
|
+
/**
|
|
6007
|
+
* Which content shape this post carries (mutually exclusive with the others).
|
|
6008
|
+
*/
|
|
6009
|
+
content_kind: 'text' | 'single_image' | 'video' | 'multi_image' | 'document' | 'article' | 'poll';
|
|
6010
|
+
/**
|
|
6011
|
+
* An article share card.
|
|
6012
|
+
*/
|
|
6013
|
+
article?: {
|
|
6014
|
+
/**
|
|
6015
|
+
* Article URL. Required for an article post.
|
|
6016
|
+
*/
|
|
6017
|
+
source: string;
|
|
6018
|
+
/**
|
|
6019
|
+
* Article headline, ≤400 characters.
|
|
6020
|
+
*/
|
|
6021
|
+
title?: string;
|
|
6022
|
+
/**
|
|
6023
|
+
* Subtext on the article card, ≤4086 characters.
|
|
6024
|
+
*/
|
|
6025
|
+
description?: string;
|
|
6026
|
+
/**
|
|
6027
|
+
* Optional thumbnail, referenced by OUR media id (resolved to a urn:li:image at publish).
|
|
6028
|
+
*/
|
|
6029
|
+
thumbnail_media_id?: string;
|
|
6030
|
+
};
|
|
6031
|
+
/**
|
|
6032
|
+
* A LinkedIn poll (mutually exclusive with other content).
|
|
6033
|
+
*/
|
|
6034
|
+
poll?: {
|
|
6035
|
+
/**
|
|
6036
|
+
* The poll question, ≤140 characters.
|
|
6037
|
+
*/
|
|
6038
|
+
question: string;
|
|
6039
|
+
/**
|
|
6040
|
+
* 2–4 options, each 1–30 characters.
|
|
6041
|
+
*/
|
|
6042
|
+
options: Array<string>;
|
|
6043
|
+
/**
|
|
6044
|
+
* How long the poll runs.
|
|
6045
|
+
*/
|
|
6046
|
+
duration: 'ONE_DAY' | 'THREE_DAYS' | 'SEVEN_DAYS' | 'FOURTEEN_DAYS';
|
|
6047
|
+
};
|
|
6048
|
+
/**
|
|
6049
|
+
* Document-post display options (asset rides on media[]).
|
|
6050
|
+
*/
|
|
6051
|
+
document?: {
|
|
6052
|
+
/**
|
|
6053
|
+
* Display title shown above the document. Required for document posts.
|
|
6054
|
+
*/
|
|
6055
|
+
title: string;
|
|
6056
|
+
};
|
|
6057
|
+
/**
|
|
6058
|
+
* Disable resharing of this post (default false).
|
|
6059
|
+
*/
|
|
6060
|
+
disable_reshare?: boolean;
|
|
6061
|
+
/**
|
|
6062
|
+
* Inline @mentions encoded into the commentary at publish.
|
|
6063
|
+
*/
|
|
6064
|
+
mentions?: Array<{
|
|
6065
|
+
/**
|
|
6066
|
+
* Whether the mentioned entity is a member or an organization.
|
|
6067
|
+
*/
|
|
6068
|
+
type: 'person' | 'organization';
|
|
6069
|
+
/**
|
|
6070
|
+
* Rendered text; must match the entity name (case-sensitive) for the link to convert.
|
|
6071
|
+
*/
|
|
6072
|
+
name: string;
|
|
6073
|
+
/**
|
|
6074
|
+
* The mentioned entity urn (supplied by the caller).
|
|
6075
|
+
*/
|
|
6076
|
+
urn: string;
|
|
6077
|
+
}>;
|
|
5787
6078
|
};
|
|
5788
|
-
} | {
|
|
5789
|
-
platform: 'tiktok';
|
|
5790
|
-
post_type: 'video' | 'single_image' | 'carousel';
|
|
5791
6079
|
/**
|
|
5792
6080
|
* The connected account this variant publishes to.
|
|
5793
6081
|
*/
|
|
@@ -5812,30 +6100,146 @@ type PostsCreateData = {
|
|
|
5812
6100
|
*/
|
|
5813
6101
|
alt_text_override?: string | null;
|
|
5814
6102
|
}>;
|
|
6103
|
+
} | {
|
|
6104
|
+
platform: 'instagram';
|
|
6105
|
+
post_type: 'single_image' | 'carousel' | 'reel';
|
|
5815
6106
|
/**
|
|
5816
|
-
*
|
|
6107
|
+
* Instagram organic post settings (feed image/carousel + reels).
|
|
5817
6108
|
*/
|
|
5818
|
-
settings
|
|
6109
|
+
settings: {
|
|
5819
6110
|
/**
|
|
5820
|
-
*
|
|
6111
|
+
* Feed image, carousel, or reel. Defaults to IMAGE for a single image.
|
|
5821
6112
|
*/
|
|
5822
|
-
|
|
6113
|
+
media_type?: 'IMAGE' | 'CAROUSEL' | 'REELS';
|
|
5823
6114
|
/**
|
|
5824
|
-
*
|
|
6115
|
+
* Facebook Page id representing a location.
|
|
5825
6116
|
*/
|
|
5826
|
-
|
|
6117
|
+
location_id?: string;
|
|
5827
6118
|
/**
|
|
5828
|
-
*
|
|
6119
|
+
* Tag users on an image; x/y are fractional positions in [0,1].
|
|
5829
6120
|
*/
|
|
5830
|
-
|
|
6121
|
+
user_tags?: Array<{
|
|
6122
|
+
/**
|
|
6123
|
+
* IG username to tag.
|
|
6124
|
+
*/
|
|
6125
|
+
username: string;
|
|
6126
|
+
/**
|
|
6127
|
+
* Horizontal position on the image, in [0,1].
|
|
6128
|
+
*/
|
|
6129
|
+
x: number;
|
|
6130
|
+
/**
|
|
6131
|
+
* Vertical position on the image, in [0,1].
|
|
6132
|
+
*/
|
|
6133
|
+
y: number;
|
|
6134
|
+
}>;
|
|
5831
6135
|
/**
|
|
5832
|
-
*
|
|
6136
|
+
* ≤3 co-author usernames.
|
|
5833
6137
|
*/
|
|
5834
|
-
|
|
6138
|
+
collaborators?: Array<string>;
|
|
5835
6139
|
/**
|
|
5836
|
-
*
|
|
6140
|
+
* Reel also appears in the main feed.
|
|
5837
6141
|
*/
|
|
5838
|
-
|
|
6142
|
+
share_to_feed?: boolean;
|
|
6143
|
+
/**
|
|
6144
|
+
* Reel cover frame offset (ms).
|
|
6145
|
+
*/
|
|
6146
|
+
thumb_offset?: number;
|
|
6147
|
+
/**
|
|
6148
|
+
* Custom reel cover image URL.
|
|
6149
|
+
*/
|
|
6150
|
+
cover_url?: string;
|
|
6151
|
+
/**
|
|
6152
|
+
* Label for the reel's original audio.
|
|
6153
|
+
*/
|
|
6154
|
+
audio_name?: string;
|
|
6155
|
+
};
|
|
6156
|
+
/**
|
|
6157
|
+
* The connected account this variant publishes to.
|
|
6158
|
+
*/
|
|
6159
|
+
connection_id: string;
|
|
6160
|
+
/**
|
|
6161
|
+
* Caption / commentary / message for the post.
|
|
6162
|
+
*/
|
|
6163
|
+
body?: string;
|
|
6164
|
+
/**
|
|
6165
|
+
* Ordered media references; the count drives the post-type rules.
|
|
6166
|
+
*/
|
|
6167
|
+
media?: Array<{
|
|
6168
|
+
media_id: string;
|
|
6169
|
+
/**
|
|
6170
|
+
* Per-variant crop applied at publish; omit for none.
|
|
6171
|
+
*/
|
|
6172
|
+
crop_box?: {
|
|
6173
|
+
[key: string]: unknown;
|
|
6174
|
+
} | null;
|
|
6175
|
+
/**
|
|
6176
|
+
* Per-variant alt text; falls back to the asset's.
|
|
6177
|
+
*/
|
|
6178
|
+
alt_text_override?: string | null;
|
|
6179
|
+
}>;
|
|
6180
|
+
} | {
|
|
6181
|
+
platform: 'facebook_page';
|
|
6182
|
+
post_type: 'text' | 'single_image' | 'multi_image' | 'reel';
|
|
6183
|
+
/**
|
|
6184
|
+
* Facebook Page organic post settings.
|
|
6185
|
+
*/
|
|
6186
|
+
settings?: {
|
|
6187
|
+
/**
|
|
6188
|
+
* URL to unfurl. A feed post needs a body (message) OR a link.
|
|
6189
|
+
*/
|
|
6190
|
+
link?: string;
|
|
6191
|
+
};
|
|
6192
|
+
/**
|
|
6193
|
+
* The connected account this variant publishes to.
|
|
6194
|
+
*/
|
|
6195
|
+
connection_id: string;
|
|
6196
|
+
/**
|
|
6197
|
+
* Caption / commentary / message for the post.
|
|
6198
|
+
*/
|
|
6199
|
+
body?: string;
|
|
6200
|
+
/**
|
|
6201
|
+
* Ordered media references; the count drives the post-type rules.
|
|
6202
|
+
*/
|
|
6203
|
+
media?: Array<{
|
|
6204
|
+
media_id: string;
|
|
6205
|
+
/**
|
|
6206
|
+
* Per-variant crop applied at publish; omit for none.
|
|
6207
|
+
*/
|
|
6208
|
+
crop_box?: {
|
|
6209
|
+
[key: string]: unknown;
|
|
6210
|
+
} | null;
|
|
6211
|
+
/**
|
|
6212
|
+
* Per-variant alt text; falls back to the asset's.
|
|
6213
|
+
*/
|
|
6214
|
+
alt_text_override?: string | null;
|
|
6215
|
+
}>;
|
|
6216
|
+
} | {
|
|
6217
|
+
platform: 'tiktok';
|
|
6218
|
+
post_type: 'video' | 'single_image' | 'carousel';
|
|
6219
|
+
/**
|
|
6220
|
+
* TikTok organic post settings (Direct Post: video + photo).
|
|
6221
|
+
*/
|
|
6222
|
+
settings?: {
|
|
6223
|
+
/**
|
|
6224
|
+
* Audience for the post. The per-account allowed set is returned by creator_info at publish; an out-of-set value is rejected then. Unaudited apps may only use SELF_ONLY.
|
|
6225
|
+
*/
|
|
6226
|
+
privacy_level?: 'PUBLIC_TO_EVERYONE' | 'MUTUAL_FOLLOW_FRIENDS' | 'FOLLOWER_OF_CREATOR' | 'SELF_ONLY';
|
|
6227
|
+
/**
|
|
6228
|
+
* Disable comments on this post.
|
|
6229
|
+
*/
|
|
6230
|
+
disable_comment?: boolean;
|
|
6231
|
+
/**
|
|
6232
|
+
* Disable Duet (video only).
|
|
6233
|
+
*/
|
|
6234
|
+
disable_duet?: boolean;
|
|
6235
|
+
/**
|
|
6236
|
+
* Disable Stitch (video only).
|
|
6237
|
+
*/
|
|
6238
|
+
disable_stitch?: boolean;
|
|
6239
|
+
/**
|
|
6240
|
+
* Video cover frame offset (ms). Video posts only.
|
|
6241
|
+
*/
|
|
6242
|
+
video_cover_timestamp_ms?: number;
|
|
5839
6243
|
/**
|
|
5840
6244
|
* Which carousel image is the cover (0-based index into the ordered image list). Photo posts only.
|
|
5841
6245
|
*/
|
|
@@ -5857,6 +6261,30 @@ type PostsCreateData = {
|
|
|
5857
6261
|
*/
|
|
5858
6262
|
is_aigc?: boolean;
|
|
5859
6263
|
};
|
|
6264
|
+
/**
|
|
6265
|
+
* The connected account this variant publishes to.
|
|
6266
|
+
*/
|
|
6267
|
+
connection_id: string;
|
|
6268
|
+
/**
|
|
6269
|
+
* Caption / commentary / message for the post.
|
|
6270
|
+
*/
|
|
6271
|
+
body?: string;
|
|
6272
|
+
/**
|
|
6273
|
+
* Ordered media references; the count drives the post-type rules.
|
|
6274
|
+
*/
|
|
6275
|
+
media?: Array<{
|
|
6276
|
+
media_id: string;
|
|
6277
|
+
/**
|
|
6278
|
+
* Per-variant crop applied at publish; omit for none.
|
|
6279
|
+
*/
|
|
6280
|
+
crop_box?: {
|
|
6281
|
+
[key: string]: unknown;
|
|
6282
|
+
} | null;
|
|
6283
|
+
/**
|
|
6284
|
+
* Per-variant alt text; falls back to the asset's.
|
|
6285
|
+
*/
|
|
6286
|
+
alt_text_override?: string | null;
|
|
6287
|
+
}>;
|
|
5860
6288
|
}>;
|
|
5861
6289
|
};
|
|
5862
6290
|
path?: never;
|
|
@@ -6124,22 +6552,85 @@ type PostsCreateResponses = {
|
|
|
6124
6552
|
[key: string]: string | number | boolean;
|
|
6125
6553
|
};
|
|
6126
6554
|
variants: Array<{
|
|
6555
|
+
platform: 'x';
|
|
6556
|
+
post_type: 'text' | 'single_image' | 'multi_image' | 'video';
|
|
6557
|
+
/**
|
|
6558
|
+
* X (Twitter) organic post settings.
|
|
6559
|
+
*/
|
|
6560
|
+
settings: {
|
|
6561
|
+
/**
|
|
6562
|
+
* Who may reply. Omit (or `everyone`) = anyone. `everyone` is sugar that is normalised to an omitted field.
|
|
6563
|
+
*/
|
|
6564
|
+
reply_settings?: 'everyone' | 'following' | 'mentionedUsers' | 'subscribers' | 'verified';
|
|
6565
|
+
/**
|
|
6566
|
+
* Quote a post by id. Mutually exclusive with poll/card_uri/media. Enterprise-tier at publish.
|
|
6567
|
+
*/
|
|
6568
|
+
quote_tweet_id?: string;
|
|
6569
|
+
/**
|
|
6570
|
+
* Create a poll. Mutually exclusive with media, quote, and card_uri.
|
|
6571
|
+
*/
|
|
6572
|
+
poll?: {
|
|
6573
|
+
/**
|
|
6574
|
+
* 2–4 options, each 1–25 characters.
|
|
6575
|
+
*/
|
|
6576
|
+
options: Array<string>;
|
|
6577
|
+
/**
|
|
6578
|
+
* Poll duration in minutes (5 min – 7 days).
|
|
6579
|
+
*/
|
|
6580
|
+
duration_minutes: number;
|
|
6581
|
+
/**
|
|
6582
|
+
* Reply restriction for the poll post (same enum).
|
|
6583
|
+
*/
|
|
6584
|
+
reply_settings?: 'following' | 'mentionedUsers' | 'subscribers' | 'verified';
|
|
6585
|
+
};
|
|
6586
|
+
/**
|
|
6587
|
+
* Reply/thread chaining controls.
|
|
6588
|
+
*/
|
|
6589
|
+
reply?: {
|
|
6590
|
+
/**
|
|
6591
|
+
* Parent post id; required when `reply` is present.
|
|
6592
|
+
*/
|
|
6593
|
+
in_reply_to_tweet_id: string;
|
|
6594
|
+
/**
|
|
6595
|
+
* User ids dropped from the auto-mention chain.
|
|
6596
|
+
*/
|
|
6597
|
+
exclude_reply_user_ids?: Array<string>;
|
|
6598
|
+
/**
|
|
6599
|
+
* Auto-prepend the parent participants' @mentions.
|
|
6600
|
+
*/
|
|
6601
|
+
auto_populate_reply_metadata?: boolean;
|
|
6602
|
+
};
|
|
6603
|
+
/**
|
|
6604
|
+
* Post to an X Community.
|
|
6605
|
+
*/
|
|
6606
|
+
community_id?: string;
|
|
6607
|
+
/**
|
|
6608
|
+
* Restrict to Super Followers (default false).
|
|
6609
|
+
*/
|
|
6610
|
+
for_super_followers_only?: boolean;
|
|
6611
|
+
/**
|
|
6612
|
+
* Attach a place.
|
|
6613
|
+
*/
|
|
6614
|
+
geo?: {
|
|
6615
|
+
place_id: string;
|
|
6616
|
+
};
|
|
6617
|
+
/**
|
|
6618
|
+
* Cards-API reference. Mutually exclusive with quote/poll/media.
|
|
6619
|
+
*/
|
|
6620
|
+
card_uri?: string;
|
|
6621
|
+
/**
|
|
6622
|
+
* Tag ≤10 users on attached media.
|
|
6623
|
+
*/
|
|
6624
|
+
media_tagged_user_ids?: Array<string>;
|
|
6625
|
+
};
|
|
6127
6626
|
id: string;
|
|
6128
6627
|
object: 'post_variant';
|
|
6129
6628
|
/**
|
|
6130
6629
|
* The connected account this variant publishes to. null when that connection was removed (disconnected) — the variant then fails at publish time with a `connection_removed` error; reconnect + reschedule to resume.
|
|
6131
6630
|
*/
|
|
6132
6631
|
connection_id: string | null;
|
|
6133
|
-
platform: 'x' | 'linkedin' | 'facebook_page' | 'instagram' | 'tiktok';
|
|
6134
|
-
post_type: 'text' | 'single_image' | 'multi_image' | 'video' | 'reel' | 'carousel';
|
|
6135
6632
|
body: string | null;
|
|
6136
6633
|
status: 'draft' | 'scheduled' | 'publishing' | 'published' | 'failed';
|
|
6137
|
-
/**
|
|
6138
|
-
* Native per-platform settings, as stored.
|
|
6139
|
-
*/
|
|
6140
|
-
settings: {
|
|
6141
|
-
[key: string]: unknown;
|
|
6142
|
-
};
|
|
6143
6634
|
/**
|
|
6144
6635
|
* Per-variant schedule override (ISO-8601); null inherits the post.
|
|
6145
6636
|
*/
|
|
@@ -6174,63 +6665,656 @@ type PostsCreateResponses = {
|
|
|
6174
6665
|
*/
|
|
6175
6666
|
alt_text_override: string | null;
|
|
6176
6667
|
}>;
|
|
6177
|
-
}
|
|
6178
|
-
|
|
6179
|
-
|
|
6180
|
-
|
|
6181
|
-
|
|
6182
|
-
|
|
6183
|
-
|
|
6184
|
-
|
|
6185
|
-
|
|
6186
|
-
|
|
6187
|
-
|
|
6188
|
-
|
|
6189
|
-
|
|
6190
|
-
|
|
6191
|
-
|
|
6192
|
-
|
|
6193
|
-
|
|
6194
|
-
|
|
6195
|
-
|
|
6196
|
-
|
|
6197
|
-
|
|
6198
|
-
|
|
6199
|
-
|
|
6200
|
-
|
|
6201
|
-
|
|
6202
|
-
|
|
6203
|
-
|
|
6204
|
-
|
|
6205
|
-
|
|
6206
|
-
|
|
6207
|
-
|
|
6208
|
-
|
|
6209
|
-
|
|
6210
|
-
|
|
6211
|
-
|
|
6212
|
-
|
|
6213
|
-
|
|
6214
|
-
|
|
6215
|
-
|
|
6216
|
-
|
|
6217
|
-
|
|
6218
|
-
|
|
6219
|
-
|
|
6220
|
-
|
|
6221
|
-
|
|
6222
|
-
|
|
6223
|
-
|
|
6224
|
-
|
|
6225
|
-
|
|
6226
|
-
|
|
6227
|
-
|
|
6228
|
-
|
|
6229
|
-
|
|
6230
|
-
|
|
6231
|
-
|
|
6232
|
-
|
|
6233
|
-
|
|
6668
|
+
} | {
|
|
6669
|
+
platform: 'linkedin';
|
|
6670
|
+
post_type: 'text' | 'single_image' | 'multi_image' | 'video';
|
|
6671
|
+
/**
|
|
6672
|
+
* LinkedIn personal member post settings.
|
|
6673
|
+
*/
|
|
6674
|
+
settings: {
|
|
6675
|
+
/**
|
|
6676
|
+
* Audience. PUBLIC or CONNECTIONS — CONTAINER/LOGGED_IN are invalid for member posts.
|
|
6677
|
+
*/
|
|
6678
|
+
visibility: 'PUBLIC' | 'CONNECTIONS';
|
|
6679
|
+
/**
|
|
6680
|
+
* Which content shape this post carries (mutually exclusive with the others).
|
|
6681
|
+
*/
|
|
6682
|
+
content_kind: 'text' | 'single_image' | 'video' | 'multi_image' | 'document' | 'article' | 'poll';
|
|
6683
|
+
/**
|
|
6684
|
+
* An article share card.
|
|
6685
|
+
*/
|
|
6686
|
+
article?: {
|
|
6687
|
+
/**
|
|
6688
|
+
* Article URL. Required for an article post.
|
|
6689
|
+
*/
|
|
6690
|
+
source: string;
|
|
6691
|
+
/**
|
|
6692
|
+
* Article headline, ≤400 characters.
|
|
6693
|
+
*/
|
|
6694
|
+
title?: string;
|
|
6695
|
+
/**
|
|
6696
|
+
* Subtext on the article card, ≤4086 characters.
|
|
6697
|
+
*/
|
|
6698
|
+
description?: string;
|
|
6699
|
+
/**
|
|
6700
|
+
* Optional thumbnail, referenced by OUR media id (resolved to a urn:li:image at publish).
|
|
6701
|
+
*/
|
|
6702
|
+
thumbnail_media_id?: string;
|
|
6703
|
+
};
|
|
6704
|
+
/**
|
|
6705
|
+
* A LinkedIn poll (mutually exclusive with other content).
|
|
6706
|
+
*/
|
|
6707
|
+
poll?: {
|
|
6708
|
+
/**
|
|
6709
|
+
* The poll question, ≤140 characters.
|
|
6710
|
+
*/
|
|
6711
|
+
question: string;
|
|
6712
|
+
/**
|
|
6713
|
+
* 2–4 options, each 1–30 characters.
|
|
6714
|
+
*/
|
|
6715
|
+
options: Array<string>;
|
|
6716
|
+
/**
|
|
6717
|
+
* How long the poll runs.
|
|
6718
|
+
*/
|
|
6719
|
+
duration: 'ONE_DAY' | 'THREE_DAYS' | 'SEVEN_DAYS' | 'FOURTEEN_DAYS';
|
|
6720
|
+
};
|
|
6721
|
+
/**
|
|
6722
|
+
* Document-post display options (asset rides on media[]).
|
|
6723
|
+
*/
|
|
6724
|
+
document?: {
|
|
6725
|
+
/**
|
|
6726
|
+
* Display title shown above the document. Required for document posts.
|
|
6727
|
+
*/
|
|
6728
|
+
title: string;
|
|
6729
|
+
};
|
|
6730
|
+
/**
|
|
6731
|
+
* Disable resharing of this post (default false).
|
|
6732
|
+
*/
|
|
6733
|
+
disable_reshare?: boolean;
|
|
6734
|
+
/**
|
|
6735
|
+
* Inline @mentions encoded into the commentary at publish.
|
|
6736
|
+
*/
|
|
6737
|
+
mentions?: Array<{
|
|
6738
|
+
/**
|
|
6739
|
+
* Whether the mentioned entity is a member or an organization.
|
|
6740
|
+
*/
|
|
6741
|
+
type: 'person' | 'organization';
|
|
6742
|
+
/**
|
|
6743
|
+
* Rendered text; must match the entity name (case-sensitive) for the link to convert.
|
|
6744
|
+
*/
|
|
6745
|
+
name: string;
|
|
6746
|
+
/**
|
|
6747
|
+
* The mentioned entity urn (supplied by the caller).
|
|
6748
|
+
*/
|
|
6749
|
+
urn: string;
|
|
6750
|
+
}>;
|
|
6751
|
+
};
|
|
6752
|
+
id: string;
|
|
6753
|
+
object: 'post_variant';
|
|
6754
|
+
/**
|
|
6755
|
+
* The connected account this variant publishes to. null when that connection was removed (disconnected) — the variant then fails at publish time with a `connection_removed` error; reconnect + reschedule to resume.
|
|
6756
|
+
*/
|
|
6757
|
+
connection_id: string | null;
|
|
6758
|
+
body: string | null;
|
|
6759
|
+
status: 'draft' | 'scheduled' | 'publishing' | 'published' | 'failed';
|
|
6760
|
+
/**
|
|
6761
|
+
* Per-variant schedule override (ISO-8601); null inherits the post.
|
|
6762
|
+
*/
|
|
6763
|
+
schedule_at: string | null;
|
|
6764
|
+
result: {
|
|
6765
|
+
platform_post_id: string;
|
|
6766
|
+
permalink: string | null;
|
|
6767
|
+
published_at: string;
|
|
6768
|
+
} | null;
|
|
6769
|
+
error: {
|
|
6770
|
+
code: string;
|
|
6771
|
+
message: string;
|
|
6772
|
+
/**
|
|
6773
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string.
|
|
6774
|
+
*/
|
|
6775
|
+
display_error: string;
|
|
6776
|
+
} | null;
|
|
6777
|
+
media: Array<{
|
|
6778
|
+
media_id: string;
|
|
6779
|
+
/**
|
|
6780
|
+
* Ordering of this media within the variant (e.g. carousel order).
|
|
6781
|
+
*/
|
|
6782
|
+
position: number;
|
|
6783
|
+
/**
|
|
6784
|
+
* Per-variant crop, applied at publish; null = none.
|
|
6785
|
+
*/
|
|
6786
|
+
crop_box: {
|
|
6787
|
+
[key: string]: unknown;
|
|
6788
|
+
} | null;
|
|
6789
|
+
/**
|
|
6790
|
+
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
6791
|
+
*/
|
|
6792
|
+
alt_text_override: string | null;
|
|
6793
|
+
}>;
|
|
6794
|
+
} | {
|
|
6795
|
+
platform: 'facebook_page';
|
|
6796
|
+
post_type: 'text' | 'single_image' | 'multi_image' | 'reel';
|
|
6797
|
+
/**
|
|
6798
|
+
* Facebook Page organic post settings.
|
|
6799
|
+
*/
|
|
6800
|
+
settings: {
|
|
6801
|
+
/**
|
|
6802
|
+
* URL to unfurl. A feed post needs a body (message) OR a link.
|
|
6803
|
+
*/
|
|
6804
|
+
link?: string;
|
|
6805
|
+
};
|
|
6806
|
+
id: string;
|
|
6807
|
+
object: 'post_variant';
|
|
6808
|
+
/**
|
|
6809
|
+
* The connected account this variant publishes to. null when that connection was removed (disconnected) — the variant then fails at publish time with a `connection_removed` error; reconnect + reschedule to resume.
|
|
6810
|
+
*/
|
|
6811
|
+
connection_id: string | null;
|
|
6812
|
+
body: string | null;
|
|
6813
|
+
status: 'draft' | 'scheduled' | 'publishing' | 'published' | 'failed';
|
|
6814
|
+
/**
|
|
6815
|
+
* Per-variant schedule override (ISO-8601); null inherits the post.
|
|
6816
|
+
*/
|
|
6817
|
+
schedule_at: string | null;
|
|
6818
|
+
result: {
|
|
6819
|
+
platform_post_id: string;
|
|
6820
|
+
permalink: string | null;
|
|
6821
|
+
published_at: string;
|
|
6822
|
+
} | null;
|
|
6823
|
+
error: {
|
|
6824
|
+
code: string;
|
|
6825
|
+
message: string;
|
|
6826
|
+
/**
|
|
6827
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string.
|
|
6828
|
+
*/
|
|
6829
|
+
display_error: string;
|
|
6830
|
+
} | null;
|
|
6831
|
+
media: Array<{
|
|
6832
|
+
media_id: string;
|
|
6833
|
+
/**
|
|
6834
|
+
* Ordering of this media within the variant (e.g. carousel order).
|
|
6835
|
+
*/
|
|
6836
|
+
position: number;
|
|
6837
|
+
/**
|
|
6838
|
+
* Per-variant crop, applied at publish; null = none.
|
|
6839
|
+
*/
|
|
6840
|
+
crop_box: {
|
|
6841
|
+
[key: string]: unknown;
|
|
6842
|
+
} | null;
|
|
6843
|
+
/**
|
|
6844
|
+
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
6845
|
+
*/
|
|
6846
|
+
alt_text_override: string | null;
|
|
6847
|
+
}>;
|
|
6848
|
+
} | {
|
|
6849
|
+
platform: 'instagram';
|
|
6850
|
+
post_type: 'single_image' | 'carousel' | 'reel';
|
|
6851
|
+
/**
|
|
6852
|
+
* Instagram organic post settings (feed image/carousel + reels).
|
|
6853
|
+
*/
|
|
6854
|
+
settings: {
|
|
6855
|
+
/**
|
|
6856
|
+
* Feed image, carousel, or reel. Defaults to IMAGE for a single image.
|
|
6857
|
+
*/
|
|
6858
|
+
media_type?: 'IMAGE' | 'CAROUSEL' | 'REELS';
|
|
6859
|
+
/**
|
|
6860
|
+
* Facebook Page id representing a location.
|
|
6861
|
+
*/
|
|
6862
|
+
location_id?: string;
|
|
6863
|
+
/**
|
|
6864
|
+
* Tag users on an image; x/y are fractional positions in [0,1].
|
|
6865
|
+
*/
|
|
6866
|
+
user_tags?: Array<{
|
|
6867
|
+
/**
|
|
6868
|
+
* IG username to tag.
|
|
6869
|
+
*/
|
|
6870
|
+
username: string;
|
|
6871
|
+
/**
|
|
6872
|
+
* Horizontal position on the image, in [0,1].
|
|
6873
|
+
*/
|
|
6874
|
+
x: number;
|
|
6875
|
+
/**
|
|
6876
|
+
* Vertical position on the image, in [0,1].
|
|
6877
|
+
*/
|
|
6878
|
+
y: number;
|
|
6879
|
+
}>;
|
|
6880
|
+
/**
|
|
6881
|
+
* ≤3 co-author usernames.
|
|
6882
|
+
*/
|
|
6883
|
+
collaborators?: Array<string>;
|
|
6884
|
+
/**
|
|
6885
|
+
* Reel also appears in the main feed.
|
|
6886
|
+
*/
|
|
6887
|
+
share_to_feed?: boolean;
|
|
6888
|
+
/**
|
|
6889
|
+
* Reel cover frame offset (ms).
|
|
6890
|
+
*/
|
|
6891
|
+
thumb_offset?: number;
|
|
6892
|
+
/**
|
|
6893
|
+
* Custom reel cover image URL.
|
|
6894
|
+
*/
|
|
6895
|
+
cover_url?: string;
|
|
6896
|
+
/**
|
|
6897
|
+
* Label for the reel's original audio.
|
|
6898
|
+
*/
|
|
6899
|
+
audio_name?: string;
|
|
6900
|
+
};
|
|
6901
|
+
id: string;
|
|
6902
|
+
object: 'post_variant';
|
|
6903
|
+
/**
|
|
6904
|
+
* The connected account this variant publishes to. null when that connection was removed (disconnected) — the variant then fails at publish time with a `connection_removed` error; reconnect + reschedule to resume.
|
|
6905
|
+
*/
|
|
6906
|
+
connection_id: string | null;
|
|
6907
|
+
body: string | null;
|
|
6908
|
+
status: 'draft' | 'scheduled' | 'publishing' | 'published' | 'failed';
|
|
6909
|
+
/**
|
|
6910
|
+
* Per-variant schedule override (ISO-8601); null inherits the post.
|
|
6911
|
+
*/
|
|
6912
|
+
schedule_at: string | null;
|
|
6913
|
+
result: {
|
|
6914
|
+
platform_post_id: string;
|
|
6915
|
+
permalink: string | null;
|
|
6916
|
+
published_at: string;
|
|
6917
|
+
} | null;
|
|
6918
|
+
error: {
|
|
6919
|
+
code: string;
|
|
6920
|
+
message: string;
|
|
6921
|
+
/**
|
|
6922
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string.
|
|
6923
|
+
*/
|
|
6924
|
+
display_error: string;
|
|
6925
|
+
} | null;
|
|
6926
|
+
media: Array<{
|
|
6927
|
+
media_id: string;
|
|
6928
|
+
/**
|
|
6929
|
+
* Ordering of this media within the variant (e.g. carousel order).
|
|
6930
|
+
*/
|
|
6931
|
+
position: number;
|
|
6932
|
+
/**
|
|
6933
|
+
* Per-variant crop, applied at publish; null = none.
|
|
6934
|
+
*/
|
|
6935
|
+
crop_box: {
|
|
6936
|
+
[key: string]: unknown;
|
|
6937
|
+
} | null;
|
|
6938
|
+
/**
|
|
6939
|
+
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
6940
|
+
*/
|
|
6941
|
+
alt_text_override: string | null;
|
|
6942
|
+
}>;
|
|
6943
|
+
} | {
|
|
6944
|
+
platform: 'tiktok';
|
|
6945
|
+
post_type: 'video' | 'single_image' | 'carousel';
|
|
6946
|
+
/**
|
|
6947
|
+
* TikTok organic post settings (Direct Post: video + photo).
|
|
6948
|
+
*/
|
|
6949
|
+
settings: {
|
|
6950
|
+
/**
|
|
6951
|
+
* Audience for the post. The per-account allowed set is returned by creator_info at publish; an out-of-set value is rejected then. Unaudited apps may only use SELF_ONLY.
|
|
6952
|
+
*/
|
|
6953
|
+
privacy_level?: 'PUBLIC_TO_EVERYONE' | 'MUTUAL_FOLLOW_FRIENDS' | 'FOLLOWER_OF_CREATOR' | 'SELF_ONLY';
|
|
6954
|
+
/**
|
|
6955
|
+
* Disable comments on this post.
|
|
6956
|
+
*/
|
|
6957
|
+
disable_comment?: boolean;
|
|
6958
|
+
/**
|
|
6959
|
+
* Disable Duet (video only).
|
|
6960
|
+
*/
|
|
6961
|
+
disable_duet?: boolean;
|
|
6962
|
+
/**
|
|
6963
|
+
* Disable Stitch (video only).
|
|
6964
|
+
*/
|
|
6965
|
+
disable_stitch?: boolean;
|
|
6966
|
+
/**
|
|
6967
|
+
* Video cover frame offset (ms). Video posts only.
|
|
6968
|
+
*/
|
|
6969
|
+
video_cover_timestamp_ms?: number;
|
|
6970
|
+
/**
|
|
6971
|
+
* Which carousel image is the cover (0-based index into the ordered image list). Photo posts only.
|
|
6972
|
+
*/
|
|
6973
|
+
photo_cover_index?: number;
|
|
6974
|
+
/**
|
|
6975
|
+
* Auto-add a TikTok soundtrack. Photo posts only.
|
|
6976
|
+
*/
|
|
6977
|
+
auto_add_music?: boolean;
|
|
6978
|
+
/**
|
|
6979
|
+
* Disclose a paid partnership (branded content).
|
|
6980
|
+
*/
|
|
6981
|
+
brand_content_toggle?: boolean;
|
|
6982
|
+
/**
|
|
6983
|
+
* Disclose own-brand promotional content.
|
|
6984
|
+
*/
|
|
6985
|
+
brand_organic_toggle?: boolean;
|
|
6986
|
+
/**
|
|
6987
|
+
* Disclose AI-generated content. Video posts only.
|
|
6988
|
+
*/
|
|
6989
|
+
is_aigc?: boolean;
|
|
6990
|
+
};
|
|
6991
|
+
id: string;
|
|
6992
|
+
object: 'post_variant';
|
|
6993
|
+
/**
|
|
6994
|
+
* The connected account this variant publishes to. null when that connection was removed (disconnected) — the variant then fails at publish time with a `connection_removed` error; reconnect + reschedule to resume.
|
|
6995
|
+
*/
|
|
6996
|
+
connection_id: string | null;
|
|
6997
|
+
body: string | null;
|
|
6998
|
+
status: 'draft' | 'scheduled' | 'publishing' | 'published' | 'failed';
|
|
6999
|
+
/**
|
|
7000
|
+
* Per-variant schedule override (ISO-8601); null inherits the post.
|
|
7001
|
+
*/
|
|
7002
|
+
schedule_at: string | null;
|
|
7003
|
+
result: {
|
|
7004
|
+
platform_post_id: string;
|
|
7005
|
+
permalink: string | null;
|
|
7006
|
+
published_at: string;
|
|
7007
|
+
} | null;
|
|
7008
|
+
error: {
|
|
7009
|
+
code: string;
|
|
7010
|
+
message: string;
|
|
7011
|
+
/**
|
|
7012
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string.
|
|
7013
|
+
*/
|
|
7014
|
+
display_error: string;
|
|
7015
|
+
} | null;
|
|
7016
|
+
media: Array<{
|
|
7017
|
+
media_id: string;
|
|
7018
|
+
/**
|
|
7019
|
+
* Ordering of this media within the variant (e.g. carousel order).
|
|
7020
|
+
*/
|
|
7021
|
+
position: number;
|
|
7022
|
+
/**
|
|
7023
|
+
* Per-variant crop, applied at publish; null = none.
|
|
7024
|
+
*/
|
|
7025
|
+
crop_box: {
|
|
7026
|
+
[key: string]: unknown;
|
|
7027
|
+
} | null;
|
|
7028
|
+
/**
|
|
7029
|
+
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
7030
|
+
*/
|
|
7031
|
+
alt_text_override: string | null;
|
|
7032
|
+
}>;
|
|
7033
|
+
}>;
|
|
7034
|
+
/**
|
|
7035
|
+
* ISO-8601 creation time.
|
|
7036
|
+
*/
|
|
7037
|
+
created_at: string;
|
|
7038
|
+
/**
|
|
7039
|
+
* ISO-8601 last-update time.
|
|
7040
|
+
*/
|
|
7041
|
+
updated_at: string;
|
|
7042
|
+
/**
|
|
7043
|
+
* Whether this was a validate-only dry run.
|
|
7044
|
+
*/
|
|
7045
|
+
dry_run: boolean;
|
|
7046
|
+
/**
|
|
7047
|
+
* Whether the post was actually persisted (false on a dry run).
|
|
7048
|
+
*/
|
|
7049
|
+
executed: boolean;
|
|
7050
|
+
};
|
|
7051
|
+
};
|
|
7052
|
+
type PostsCreateResponse = PostsCreateResponses[keyof PostsCreateResponses];
|
|
7053
|
+
type PostsDeleteData = {
|
|
7054
|
+
body?: never;
|
|
7055
|
+
path: {
|
|
7056
|
+
/**
|
|
7057
|
+
* The post id.
|
|
7058
|
+
*/
|
|
7059
|
+
id: string;
|
|
7060
|
+
};
|
|
7061
|
+
query?: never;
|
|
7062
|
+
url: '/posts/{id}';
|
|
7063
|
+
};
|
|
7064
|
+
type PostsDeleteErrors = {
|
|
7065
|
+
/**
|
|
7066
|
+
* An RFC 9457 problem response.
|
|
7067
|
+
*/
|
|
7068
|
+
400: {
|
|
7069
|
+
/**
|
|
7070
|
+
* A URL to this code's documentation page.
|
|
7071
|
+
*/
|
|
7072
|
+
type: string;
|
|
7073
|
+
/**
|
|
7074
|
+
* A stable, human-readable summary of the error code.
|
|
7075
|
+
*/
|
|
7076
|
+
title: string;
|
|
7077
|
+
/**
|
|
7078
|
+
* The HTTP status code.
|
|
7079
|
+
*/
|
|
7080
|
+
status: number;
|
|
7081
|
+
/**
|
|
7082
|
+
* The machine-readable error code — branch on this. Narrowed to the codes this endpoint can return at this status.
|
|
7083
|
+
*/
|
|
7084
|
+
code: 'idempotency_key_invalid';
|
|
7085
|
+
/**
|
|
7086
|
+
* An occurrence-specific, human-readable explanation.
|
|
7087
|
+
*/
|
|
7088
|
+
detail?: string;
|
|
7089
|
+
/**
|
|
7090
|
+
* The request id, for support and log correlation.
|
|
7091
|
+
*/
|
|
7092
|
+
request_id?: string;
|
|
7093
|
+
};
|
|
7094
|
+
/**
|
|
7095
|
+
* An RFC 9457 problem response.
|
|
7096
|
+
*/
|
|
7097
|
+
401: {
|
|
7098
|
+
/**
|
|
7099
|
+
* A URL to this code's documentation page.
|
|
7100
|
+
*/
|
|
7101
|
+
type: string;
|
|
7102
|
+
/**
|
|
7103
|
+
* A stable, human-readable summary of the error code.
|
|
7104
|
+
*/
|
|
7105
|
+
title: string;
|
|
7106
|
+
/**
|
|
7107
|
+
* The HTTP status code.
|
|
7108
|
+
*/
|
|
7109
|
+
status: number;
|
|
7110
|
+
/**
|
|
7111
|
+
* The machine-readable error code — branch on this. Narrowed to the codes this endpoint can return at this status.
|
|
7112
|
+
*/
|
|
7113
|
+
code: 'unauthorized';
|
|
7114
|
+
/**
|
|
7115
|
+
* An occurrence-specific, human-readable explanation.
|
|
7116
|
+
*/
|
|
7117
|
+
detail?: string;
|
|
7118
|
+
/**
|
|
7119
|
+
* The request id, for support and log correlation.
|
|
7120
|
+
*/
|
|
7121
|
+
request_id?: string;
|
|
7122
|
+
};
|
|
7123
|
+
/**
|
|
7124
|
+
* An RFC 9457 problem response.
|
|
7125
|
+
*/
|
|
7126
|
+
403: {
|
|
7127
|
+
/**
|
|
7128
|
+
* A URL to this code's documentation page.
|
|
7129
|
+
*/
|
|
7130
|
+
type: string;
|
|
7131
|
+
/**
|
|
7132
|
+
* A stable, human-readable summary of the error code.
|
|
7133
|
+
*/
|
|
7134
|
+
title: string;
|
|
7135
|
+
/**
|
|
7136
|
+
* The HTTP status code.
|
|
7137
|
+
*/
|
|
7138
|
+
status: number;
|
|
7139
|
+
/**
|
|
7140
|
+
* The machine-readable error code — branch on this. Narrowed to the codes this endpoint can return at this status.
|
|
7141
|
+
*/
|
|
7142
|
+
code: 'forbidden';
|
|
7143
|
+
/**
|
|
7144
|
+
* An occurrence-specific, human-readable explanation.
|
|
7145
|
+
*/
|
|
7146
|
+
detail?: string;
|
|
7147
|
+
/**
|
|
7148
|
+
* The request id, for support and log correlation.
|
|
7149
|
+
*/
|
|
7150
|
+
request_id?: string;
|
|
7151
|
+
};
|
|
7152
|
+
/**
|
|
7153
|
+
* An RFC 9457 problem response.
|
|
7154
|
+
*/
|
|
7155
|
+
404: {
|
|
7156
|
+
/**
|
|
7157
|
+
* A URL to this code's documentation page.
|
|
7158
|
+
*/
|
|
7159
|
+
type: string;
|
|
7160
|
+
/**
|
|
7161
|
+
* A stable, human-readable summary of the error code.
|
|
7162
|
+
*/
|
|
7163
|
+
title: string;
|
|
7164
|
+
/**
|
|
7165
|
+
* The HTTP status code.
|
|
7166
|
+
*/
|
|
7167
|
+
status: number;
|
|
7168
|
+
/**
|
|
7169
|
+
* The machine-readable error code — branch on this. Narrowed to the codes this endpoint can return at this status.
|
|
7170
|
+
*/
|
|
7171
|
+
code: 'not_found';
|
|
7172
|
+
/**
|
|
7173
|
+
* An occurrence-specific, human-readable explanation.
|
|
7174
|
+
*/
|
|
7175
|
+
detail?: string;
|
|
7176
|
+
/**
|
|
7177
|
+
* The request id, for support and log correlation.
|
|
7178
|
+
*/
|
|
7179
|
+
request_id?: string;
|
|
7180
|
+
};
|
|
7181
|
+
/**
|
|
7182
|
+
* An RFC 9457 problem response.
|
|
7183
|
+
*/
|
|
7184
|
+
409: {
|
|
7185
|
+
/**
|
|
7186
|
+
* A URL to this code's documentation page.
|
|
7187
|
+
*/
|
|
7188
|
+
type: string;
|
|
7189
|
+
/**
|
|
7190
|
+
* A stable, human-readable summary of the error code.
|
|
7191
|
+
*/
|
|
7192
|
+
title: string;
|
|
7193
|
+
/**
|
|
7194
|
+
* The HTTP status code.
|
|
7195
|
+
*/
|
|
7196
|
+
status: number;
|
|
7197
|
+
/**
|
|
7198
|
+
* The machine-readable error code — branch on this. Narrowed to the codes this endpoint can return at this status.
|
|
7199
|
+
*/
|
|
7200
|
+
code: 'conflict' | 'idempotency_request_in_progress';
|
|
7201
|
+
/**
|
|
7202
|
+
* An occurrence-specific, human-readable explanation.
|
|
7203
|
+
*/
|
|
7204
|
+
detail?: string;
|
|
7205
|
+
/**
|
|
7206
|
+
* The request id, for support and log correlation.
|
|
7207
|
+
*/
|
|
7208
|
+
request_id?: string;
|
|
7209
|
+
};
|
|
7210
|
+
/**
|
|
7211
|
+
* An RFC 9457 problem response.
|
|
7212
|
+
*/
|
|
7213
|
+
422: {
|
|
7214
|
+
/**
|
|
7215
|
+
* A URL to this code's documentation page.
|
|
7216
|
+
*/
|
|
7217
|
+
type: string;
|
|
7218
|
+
/**
|
|
7219
|
+
* A stable, human-readable summary of the error code.
|
|
7220
|
+
*/
|
|
7221
|
+
title: string;
|
|
7222
|
+
/**
|
|
7223
|
+
* The HTTP status code.
|
|
7224
|
+
*/
|
|
7225
|
+
status: number;
|
|
7226
|
+
/**
|
|
7227
|
+
* The machine-readable error code — branch on this. Narrowed to the codes this endpoint can return at this status.
|
|
7228
|
+
*/
|
|
7229
|
+
code: 'idempotency_key_reused';
|
|
7230
|
+
/**
|
|
7231
|
+
* An occurrence-specific, human-readable explanation.
|
|
7232
|
+
*/
|
|
7233
|
+
detail?: string;
|
|
7234
|
+
/**
|
|
7235
|
+
* The request id, for support and log correlation.
|
|
7236
|
+
*/
|
|
7237
|
+
request_id?: string;
|
|
7238
|
+
};
|
|
7239
|
+
/**
|
|
7240
|
+
* An RFC 9457 problem response.
|
|
7241
|
+
*/
|
|
7242
|
+
429: {
|
|
7243
|
+
/**
|
|
7244
|
+
* A URL to this code's documentation page.
|
|
7245
|
+
*/
|
|
7246
|
+
type: string;
|
|
7247
|
+
/**
|
|
7248
|
+
* A stable, human-readable summary of the error code.
|
|
7249
|
+
*/
|
|
7250
|
+
title: string;
|
|
7251
|
+
/**
|
|
7252
|
+
* The HTTP status code.
|
|
7253
|
+
*/
|
|
7254
|
+
status: number;
|
|
7255
|
+
/**
|
|
7256
|
+
* The machine-readable error code — branch on this. Narrowed to the codes this endpoint can return at this status.
|
|
7257
|
+
*/
|
|
7258
|
+
code: 'rate_limited';
|
|
7259
|
+
/**
|
|
7260
|
+
* An occurrence-specific, human-readable explanation.
|
|
7261
|
+
*/
|
|
7262
|
+
detail?: string;
|
|
7263
|
+
/**
|
|
7264
|
+
* The request id, for support and log correlation.
|
|
7265
|
+
*/
|
|
7266
|
+
request_id?: string;
|
|
7267
|
+
};
|
|
7268
|
+
};
|
|
7269
|
+
type PostsDeleteError = PostsDeleteErrors[keyof PostsDeleteErrors];
|
|
7270
|
+
type PostsDeleteResponses = {
|
|
7271
|
+
/**
|
|
7272
|
+
* OK
|
|
7273
|
+
*/
|
|
7274
|
+
200: {
|
|
7275
|
+
id: string;
|
|
7276
|
+
object: 'post';
|
|
7277
|
+
deleted: true;
|
|
7278
|
+
};
|
|
7279
|
+
};
|
|
7280
|
+
type PostsDeleteResponse = PostsDeleteResponses[keyof PostsDeleteResponses];
|
|
7281
|
+
type PostsGetData = {
|
|
7282
|
+
body?: never;
|
|
7283
|
+
path: {
|
|
7284
|
+
/**
|
|
7285
|
+
* The post id.
|
|
7286
|
+
*/
|
|
7287
|
+
id: string;
|
|
7288
|
+
};
|
|
7289
|
+
query?: never;
|
|
7290
|
+
url: '/posts/{id}';
|
|
7291
|
+
};
|
|
7292
|
+
type PostsGetErrors = {
|
|
7293
|
+
/**
|
|
7294
|
+
* An RFC 9457 problem response.
|
|
7295
|
+
*/
|
|
7296
|
+
400: {
|
|
7297
|
+
/**
|
|
7298
|
+
* A URL to this code's documentation page.
|
|
7299
|
+
*/
|
|
7300
|
+
type: string;
|
|
7301
|
+
/**
|
|
7302
|
+
* A stable, human-readable summary of the error code.
|
|
7303
|
+
*/
|
|
7304
|
+
title: string;
|
|
7305
|
+
/**
|
|
7306
|
+
* The HTTP status code.
|
|
7307
|
+
*/
|
|
7308
|
+
status: number;
|
|
7309
|
+
/**
|
|
7310
|
+
* The machine-readable error code — branch on this. Narrowed to the codes this endpoint can return at this status.
|
|
7311
|
+
*/
|
|
7312
|
+
code: 'idempotency_key_invalid';
|
|
7313
|
+
/**
|
|
7314
|
+
* An occurrence-specific, human-readable explanation.
|
|
7315
|
+
*/
|
|
7316
|
+
detail?: string;
|
|
7317
|
+
/**
|
|
6234
7318
|
* The request id, for support and log correlation.
|
|
6235
7319
|
*/
|
|
6236
7320
|
request_id?: string;
|
|
@@ -6372,58 +7456,969 @@ type PostsDeleteErrors = {
|
|
|
6372
7456
|
*/
|
|
6373
7457
|
code: 'idempotency_key_reused';
|
|
6374
7458
|
/**
|
|
6375
|
-
* An occurrence-specific, human-readable explanation.
|
|
7459
|
+
* An occurrence-specific, human-readable explanation.
|
|
7460
|
+
*/
|
|
7461
|
+
detail?: string;
|
|
7462
|
+
/**
|
|
7463
|
+
* The request id, for support and log correlation.
|
|
7464
|
+
*/
|
|
7465
|
+
request_id?: string;
|
|
7466
|
+
};
|
|
7467
|
+
/**
|
|
7468
|
+
* An RFC 9457 problem response.
|
|
7469
|
+
*/
|
|
7470
|
+
429: {
|
|
7471
|
+
/**
|
|
7472
|
+
* A URL to this code's documentation page.
|
|
7473
|
+
*/
|
|
7474
|
+
type: string;
|
|
7475
|
+
/**
|
|
7476
|
+
* A stable, human-readable summary of the error code.
|
|
7477
|
+
*/
|
|
7478
|
+
title: string;
|
|
7479
|
+
/**
|
|
7480
|
+
* The HTTP status code.
|
|
7481
|
+
*/
|
|
7482
|
+
status: number;
|
|
7483
|
+
/**
|
|
7484
|
+
* The machine-readable error code — branch on this. Narrowed to the codes this endpoint can return at this status.
|
|
7485
|
+
*/
|
|
7486
|
+
code: 'rate_limited';
|
|
7487
|
+
/**
|
|
7488
|
+
* An occurrence-specific, human-readable explanation.
|
|
7489
|
+
*/
|
|
7490
|
+
detail?: string;
|
|
7491
|
+
/**
|
|
7492
|
+
* The request id, for support and log correlation.
|
|
7493
|
+
*/
|
|
7494
|
+
request_id?: string;
|
|
7495
|
+
};
|
|
7496
|
+
};
|
|
7497
|
+
type PostsGetError = PostsGetErrors[keyof PostsGetErrors];
|
|
7498
|
+
type PostsGetResponses = {
|
|
7499
|
+
/**
|
|
7500
|
+
* OK
|
|
7501
|
+
*/
|
|
7502
|
+
200: {
|
|
7503
|
+
id: string;
|
|
7504
|
+
object: 'post';
|
|
7505
|
+
profile_id: string;
|
|
7506
|
+
external_id: string | null;
|
|
7507
|
+
/**
|
|
7508
|
+
* Derived rollup of the variants’ statuses (never set directly).
|
|
7509
|
+
*/
|
|
7510
|
+
status: 'draft' | 'scheduled' | 'publishing' | 'partially_published' | 'published' | 'failed';
|
|
7511
|
+
/**
|
|
7512
|
+
* Shared schedule (ISO-8601). null = draft/publish-now.
|
|
7513
|
+
*/
|
|
7514
|
+
schedule_at: string | null;
|
|
7515
|
+
tags: Array<string>;
|
|
7516
|
+
notes: string | null;
|
|
7517
|
+
/**
|
|
7518
|
+
* Customer-owned key/value context, returned on reads and filterable on list endpoints (exact match). Values are scalars: string (≤500 chars), number, or boolean. At most 50 keys; keys ≤40 chars; total serialized JSON must fit in 16 KiB. Arrays and nested objects are out of scope for v1 (kept out to keep the contract scalar + exact-match). Keep a key’s value type consistent across records — filtering matches type-exactly. Never derive auth/scopes from metadata.
|
|
7519
|
+
*/
|
|
7520
|
+
metadata: {
|
|
7521
|
+
[key: string]: string | number | boolean;
|
|
7522
|
+
};
|
|
7523
|
+
variants: Array<{
|
|
7524
|
+
platform: 'x';
|
|
7525
|
+
post_type: 'text' | 'single_image' | 'multi_image' | 'video';
|
|
7526
|
+
/**
|
|
7527
|
+
* X (Twitter) organic post settings.
|
|
7528
|
+
*/
|
|
7529
|
+
settings: {
|
|
7530
|
+
/**
|
|
7531
|
+
* Who may reply. Omit (or `everyone`) = anyone. `everyone` is sugar that is normalised to an omitted field.
|
|
7532
|
+
*/
|
|
7533
|
+
reply_settings?: 'everyone' | 'following' | 'mentionedUsers' | 'subscribers' | 'verified';
|
|
7534
|
+
/**
|
|
7535
|
+
* Quote a post by id. Mutually exclusive with poll/card_uri/media. Enterprise-tier at publish.
|
|
7536
|
+
*/
|
|
7537
|
+
quote_tweet_id?: string;
|
|
7538
|
+
/**
|
|
7539
|
+
* Create a poll. Mutually exclusive with media, quote, and card_uri.
|
|
7540
|
+
*/
|
|
7541
|
+
poll?: {
|
|
7542
|
+
/**
|
|
7543
|
+
* 2–4 options, each 1–25 characters.
|
|
7544
|
+
*/
|
|
7545
|
+
options: Array<string>;
|
|
7546
|
+
/**
|
|
7547
|
+
* Poll duration in minutes (5 min – 7 days).
|
|
7548
|
+
*/
|
|
7549
|
+
duration_minutes: number;
|
|
7550
|
+
/**
|
|
7551
|
+
* Reply restriction for the poll post (same enum).
|
|
7552
|
+
*/
|
|
7553
|
+
reply_settings?: 'following' | 'mentionedUsers' | 'subscribers' | 'verified';
|
|
7554
|
+
};
|
|
7555
|
+
/**
|
|
7556
|
+
* Reply/thread chaining controls.
|
|
7557
|
+
*/
|
|
7558
|
+
reply?: {
|
|
7559
|
+
/**
|
|
7560
|
+
* Parent post id; required when `reply` is present.
|
|
7561
|
+
*/
|
|
7562
|
+
in_reply_to_tweet_id: string;
|
|
7563
|
+
/**
|
|
7564
|
+
* User ids dropped from the auto-mention chain.
|
|
7565
|
+
*/
|
|
7566
|
+
exclude_reply_user_ids?: Array<string>;
|
|
7567
|
+
/**
|
|
7568
|
+
* Auto-prepend the parent participants' @mentions.
|
|
7569
|
+
*/
|
|
7570
|
+
auto_populate_reply_metadata?: boolean;
|
|
7571
|
+
};
|
|
7572
|
+
/**
|
|
7573
|
+
* Post to an X Community.
|
|
7574
|
+
*/
|
|
7575
|
+
community_id?: string;
|
|
7576
|
+
/**
|
|
7577
|
+
* Restrict to Super Followers (default false).
|
|
7578
|
+
*/
|
|
7579
|
+
for_super_followers_only?: boolean;
|
|
7580
|
+
/**
|
|
7581
|
+
* Attach a place.
|
|
7582
|
+
*/
|
|
7583
|
+
geo?: {
|
|
7584
|
+
place_id: string;
|
|
7585
|
+
};
|
|
7586
|
+
/**
|
|
7587
|
+
* Cards-API reference. Mutually exclusive with quote/poll/media.
|
|
7588
|
+
*/
|
|
7589
|
+
card_uri?: string;
|
|
7590
|
+
/**
|
|
7591
|
+
* Tag ≤10 users on attached media.
|
|
7592
|
+
*/
|
|
7593
|
+
media_tagged_user_ids?: Array<string>;
|
|
7594
|
+
};
|
|
7595
|
+
id: string;
|
|
7596
|
+
object: 'post_variant';
|
|
7597
|
+
/**
|
|
7598
|
+
* The connected account this variant publishes to. null when that connection was removed (disconnected) — the variant then fails at publish time with a `connection_removed` error; reconnect + reschedule to resume.
|
|
7599
|
+
*/
|
|
7600
|
+
connection_id: string | null;
|
|
7601
|
+
body: string | null;
|
|
7602
|
+
status: 'draft' | 'scheduled' | 'publishing' | 'published' | 'failed';
|
|
7603
|
+
/**
|
|
7604
|
+
* Per-variant schedule override (ISO-8601); null inherits the post.
|
|
7605
|
+
*/
|
|
7606
|
+
schedule_at: string | null;
|
|
7607
|
+
result: {
|
|
7608
|
+
platform_post_id: string;
|
|
7609
|
+
permalink: string | null;
|
|
7610
|
+
published_at: string;
|
|
7611
|
+
} | null;
|
|
7612
|
+
error: {
|
|
7613
|
+
code: string;
|
|
7614
|
+
message: string;
|
|
7615
|
+
/**
|
|
7616
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string.
|
|
7617
|
+
*/
|
|
7618
|
+
display_error: string;
|
|
7619
|
+
} | null;
|
|
7620
|
+
media: Array<{
|
|
7621
|
+
media_id: string;
|
|
7622
|
+
/**
|
|
7623
|
+
* Ordering of this media within the variant (e.g. carousel order).
|
|
7624
|
+
*/
|
|
7625
|
+
position: number;
|
|
7626
|
+
/**
|
|
7627
|
+
* Per-variant crop, applied at publish; null = none.
|
|
7628
|
+
*/
|
|
7629
|
+
crop_box: {
|
|
7630
|
+
[key: string]: unknown;
|
|
7631
|
+
} | null;
|
|
7632
|
+
/**
|
|
7633
|
+
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
7634
|
+
*/
|
|
7635
|
+
alt_text_override: string | null;
|
|
7636
|
+
}>;
|
|
7637
|
+
} | {
|
|
7638
|
+
platform: 'linkedin';
|
|
7639
|
+
post_type: 'text' | 'single_image' | 'multi_image' | 'video';
|
|
7640
|
+
/**
|
|
7641
|
+
* LinkedIn personal member post settings.
|
|
7642
|
+
*/
|
|
7643
|
+
settings: {
|
|
7644
|
+
/**
|
|
7645
|
+
* Audience. PUBLIC or CONNECTIONS — CONTAINER/LOGGED_IN are invalid for member posts.
|
|
7646
|
+
*/
|
|
7647
|
+
visibility: 'PUBLIC' | 'CONNECTIONS';
|
|
7648
|
+
/**
|
|
7649
|
+
* Which content shape this post carries (mutually exclusive with the others).
|
|
7650
|
+
*/
|
|
7651
|
+
content_kind: 'text' | 'single_image' | 'video' | 'multi_image' | 'document' | 'article' | 'poll';
|
|
7652
|
+
/**
|
|
7653
|
+
* An article share card.
|
|
7654
|
+
*/
|
|
7655
|
+
article?: {
|
|
7656
|
+
/**
|
|
7657
|
+
* Article URL. Required for an article post.
|
|
7658
|
+
*/
|
|
7659
|
+
source: string;
|
|
7660
|
+
/**
|
|
7661
|
+
* Article headline, ≤400 characters.
|
|
7662
|
+
*/
|
|
7663
|
+
title?: string;
|
|
7664
|
+
/**
|
|
7665
|
+
* Subtext on the article card, ≤4086 characters.
|
|
7666
|
+
*/
|
|
7667
|
+
description?: string;
|
|
7668
|
+
/**
|
|
7669
|
+
* Optional thumbnail, referenced by OUR media id (resolved to a urn:li:image at publish).
|
|
7670
|
+
*/
|
|
7671
|
+
thumbnail_media_id?: string;
|
|
7672
|
+
};
|
|
7673
|
+
/**
|
|
7674
|
+
* A LinkedIn poll (mutually exclusive with other content).
|
|
7675
|
+
*/
|
|
7676
|
+
poll?: {
|
|
7677
|
+
/**
|
|
7678
|
+
* The poll question, ≤140 characters.
|
|
7679
|
+
*/
|
|
7680
|
+
question: string;
|
|
7681
|
+
/**
|
|
7682
|
+
* 2–4 options, each 1–30 characters.
|
|
7683
|
+
*/
|
|
7684
|
+
options: Array<string>;
|
|
7685
|
+
/**
|
|
7686
|
+
* How long the poll runs.
|
|
7687
|
+
*/
|
|
7688
|
+
duration: 'ONE_DAY' | 'THREE_DAYS' | 'SEVEN_DAYS' | 'FOURTEEN_DAYS';
|
|
7689
|
+
};
|
|
7690
|
+
/**
|
|
7691
|
+
* Document-post display options (asset rides on media[]).
|
|
7692
|
+
*/
|
|
7693
|
+
document?: {
|
|
7694
|
+
/**
|
|
7695
|
+
* Display title shown above the document. Required for document posts.
|
|
7696
|
+
*/
|
|
7697
|
+
title: string;
|
|
7698
|
+
};
|
|
7699
|
+
/**
|
|
7700
|
+
* Disable resharing of this post (default false).
|
|
7701
|
+
*/
|
|
7702
|
+
disable_reshare?: boolean;
|
|
7703
|
+
/**
|
|
7704
|
+
* Inline @mentions encoded into the commentary at publish.
|
|
7705
|
+
*/
|
|
7706
|
+
mentions?: Array<{
|
|
7707
|
+
/**
|
|
7708
|
+
* Whether the mentioned entity is a member or an organization.
|
|
7709
|
+
*/
|
|
7710
|
+
type: 'person' | 'organization';
|
|
7711
|
+
/**
|
|
7712
|
+
* Rendered text; must match the entity name (case-sensitive) for the link to convert.
|
|
7713
|
+
*/
|
|
7714
|
+
name: string;
|
|
7715
|
+
/**
|
|
7716
|
+
* The mentioned entity urn (supplied by the caller).
|
|
7717
|
+
*/
|
|
7718
|
+
urn: string;
|
|
7719
|
+
}>;
|
|
7720
|
+
};
|
|
7721
|
+
id: string;
|
|
7722
|
+
object: 'post_variant';
|
|
7723
|
+
/**
|
|
7724
|
+
* The connected account this variant publishes to. null when that connection was removed (disconnected) — the variant then fails at publish time with a `connection_removed` error; reconnect + reschedule to resume.
|
|
7725
|
+
*/
|
|
7726
|
+
connection_id: string | null;
|
|
7727
|
+
body: string | null;
|
|
7728
|
+
status: 'draft' | 'scheduled' | 'publishing' | 'published' | 'failed';
|
|
7729
|
+
/**
|
|
7730
|
+
* Per-variant schedule override (ISO-8601); null inherits the post.
|
|
7731
|
+
*/
|
|
7732
|
+
schedule_at: string | null;
|
|
7733
|
+
result: {
|
|
7734
|
+
platform_post_id: string;
|
|
7735
|
+
permalink: string | null;
|
|
7736
|
+
published_at: string;
|
|
7737
|
+
} | null;
|
|
7738
|
+
error: {
|
|
7739
|
+
code: string;
|
|
7740
|
+
message: string;
|
|
7741
|
+
/**
|
|
7742
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string.
|
|
7743
|
+
*/
|
|
7744
|
+
display_error: string;
|
|
7745
|
+
} | null;
|
|
7746
|
+
media: Array<{
|
|
7747
|
+
media_id: string;
|
|
7748
|
+
/**
|
|
7749
|
+
* Ordering of this media within the variant (e.g. carousel order).
|
|
7750
|
+
*/
|
|
7751
|
+
position: number;
|
|
7752
|
+
/**
|
|
7753
|
+
* Per-variant crop, applied at publish; null = none.
|
|
7754
|
+
*/
|
|
7755
|
+
crop_box: {
|
|
7756
|
+
[key: string]: unknown;
|
|
7757
|
+
} | null;
|
|
7758
|
+
/**
|
|
7759
|
+
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
7760
|
+
*/
|
|
7761
|
+
alt_text_override: string | null;
|
|
7762
|
+
}>;
|
|
7763
|
+
} | {
|
|
7764
|
+
platform: 'facebook_page';
|
|
7765
|
+
post_type: 'text' | 'single_image' | 'multi_image' | 'reel';
|
|
7766
|
+
/**
|
|
7767
|
+
* Facebook Page organic post settings.
|
|
7768
|
+
*/
|
|
7769
|
+
settings: {
|
|
7770
|
+
/**
|
|
7771
|
+
* URL to unfurl. A feed post needs a body (message) OR a link.
|
|
7772
|
+
*/
|
|
7773
|
+
link?: string;
|
|
7774
|
+
};
|
|
7775
|
+
id: string;
|
|
7776
|
+
object: 'post_variant';
|
|
7777
|
+
/**
|
|
7778
|
+
* The connected account this variant publishes to. null when that connection was removed (disconnected) — the variant then fails at publish time with a `connection_removed` error; reconnect + reschedule to resume.
|
|
7779
|
+
*/
|
|
7780
|
+
connection_id: string | null;
|
|
7781
|
+
body: string | null;
|
|
7782
|
+
status: 'draft' | 'scheduled' | 'publishing' | 'published' | 'failed';
|
|
7783
|
+
/**
|
|
7784
|
+
* Per-variant schedule override (ISO-8601); null inherits the post.
|
|
7785
|
+
*/
|
|
7786
|
+
schedule_at: string | null;
|
|
7787
|
+
result: {
|
|
7788
|
+
platform_post_id: string;
|
|
7789
|
+
permalink: string | null;
|
|
7790
|
+
published_at: string;
|
|
7791
|
+
} | null;
|
|
7792
|
+
error: {
|
|
7793
|
+
code: string;
|
|
7794
|
+
message: string;
|
|
7795
|
+
/**
|
|
7796
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string.
|
|
7797
|
+
*/
|
|
7798
|
+
display_error: string;
|
|
7799
|
+
} | null;
|
|
7800
|
+
media: Array<{
|
|
7801
|
+
media_id: string;
|
|
7802
|
+
/**
|
|
7803
|
+
* Ordering of this media within the variant (e.g. carousel order).
|
|
7804
|
+
*/
|
|
7805
|
+
position: number;
|
|
7806
|
+
/**
|
|
7807
|
+
* Per-variant crop, applied at publish; null = none.
|
|
7808
|
+
*/
|
|
7809
|
+
crop_box: {
|
|
7810
|
+
[key: string]: unknown;
|
|
7811
|
+
} | null;
|
|
7812
|
+
/**
|
|
7813
|
+
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
7814
|
+
*/
|
|
7815
|
+
alt_text_override: string | null;
|
|
7816
|
+
}>;
|
|
7817
|
+
} | {
|
|
7818
|
+
platform: 'instagram';
|
|
7819
|
+
post_type: 'single_image' | 'carousel' | 'reel';
|
|
7820
|
+
/**
|
|
7821
|
+
* Instagram organic post settings (feed image/carousel + reels).
|
|
7822
|
+
*/
|
|
7823
|
+
settings: {
|
|
7824
|
+
/**
|
|
7825
|
+
* Feed image, carousel, or reel. Defaults to IMAGE for a single image.
|
|
7826
|
+
*/
|
|
7827
|
+
media_type?: 'IMAGE' | 'CAROUSEL' | 'REELS';
|
|
7828
|
+
/**
|
|
7829
|
+
* Facebook Page id representing a location.
|
|
7830
|
+
*/
|
|
7831
|
+
location_id?: string;
|
|
7832
|
+
/**
|
|
7833
|
+
* Tag users on an image; x/y are fractional positions in [0,1].
|
|
7834
|
+
*/
|
|
7835
|
+
user_tags?: Array<{
|
|
7836
|
+
/**
|
|
7837
|
+
* IG username to tag.
|
|
7838
|
+
*/
|
|
7839
|
+
username: string;
|
|
7840
|
+
/**
|
|
7841
|
+
* Horizontal position on the image, in [0,1].
|
|
7842
|
+
*/
|
|
7843
|
+
x: number;
|
|
7844
|
+
/**
|
|
7845
|
+
* Vertical position on the image, in [0,1].
|
|
7846
|
+
*/
|
|
7847
|
+
y: number;
|
|
7848
|
+
}>;
|
|
7849
|
+
/**
|
|
7850
|
+
* ≤3 co-author usernames.
|
|
7851
|
+
*/
|
|
7852
|
+
collaborators?: Array<string>;
|
|
7853
|
+
/**
|
|
7854
|
+
* Reel also appears in the main feed.
|
|
7855
|
+
*/
|
|
7856
|
+
share_to_feed?: boolean;
|
|
7857
|
+
/**
|
|
7858
|
+
* Reel cover frame offset (ms).
|
|
7859
|
+
*/
|
|
7860
|
+
thumb_offset?: number;
|
|
7861
|
+
/**
|
|
7862
|
+
* Custom reel cover image URL.
|
|
7863
|
+
*/
|
|
7864
|
+
cover_url?: string;
|
|
7865
|
+
/**
|
|
7866
|
+
* Label for the reel's original audio.
|
|
7867
|
+
*/
|
|
7868
|
+
audio_name?: string;
|
|
7869
|
+
};
|
|
7870
|
+
id: string;
|
|
7871
|
+
object: 'post_variant';
|
|
7872
|
+
/**
|
|
7873
|
+
* The connected account this variant publishes to. null when that connection was removed (disconnected) — the variant then fails at publish time with a `connection_removed` error; reconnect + reschedule to resume.
|
|
7874
|
+
*/
|
|
7875
|
+
connection_id: string | null;
|
|
7876
|
+
body: string | null;
|
|
7877
|
+
status: 'draft' | 'scheduled' | 'publishing' | 'published' | 'failed';
|
|
7878
|
+
/**
|
|
7879
|
+
* Per-variant schedule override (ISO-8601); null inherits the post.
|
|
7880
|
+
*/
|
|
7881
|
+
schedule_at: string | null;
|
|
7882
|
+
result: {
|
|
7883
|
+
platform_post_id: string;
|
|
7884
|
+
permalink: string | null;
|
|
7885
|
+
published_at: string;
|
|
7886
|
+
} | null;
|
|
7887
|
+
error: {
|
|
7888
|
+
code: string;
|
|
7889
|
+
message: string;
|
|
7890
|
+
/**
|
|
7891
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string.
|
|
7892
|
+
*/
|
|
7893
|
+
display_error: string;
|
|
7894
|
+
} | null;
|
|
7895
|
+
media: Array<{
|
|
7896
|
+
media_id: string;
|
|
7897
|
+
/**
|
|
7898
|
+
* Ordering of this media within the variant (e.g. carousel order).
|
|
7899
|
+
*/
|
|
7900
|
+
position: number;
|
|
7901
|
+
/**
|
|
7902
|
+
* Per-variant crop, applied at publish; null = none.
|
|
7903
|
+
*/
|
|
7904
|
+
crop_box: {
|
|
7905
|
+
[key: string]: unknown;
|
|
7906
|
+
} | null;
|
|
7907
|
+
/**
|
|
7908
|
+
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
7909
|
+
*/
|
|
7910
|
+
alt_text_override: string | null;
|
|
7911
|
+
}>;
|
|
7912
|
+
} | {
|
|
7913
|
+
platform: 'tiktok';
|
|
7914
|
+
post_type: 'video' | 'single_image' | 'carousel';
|
|
7915
|
+
/**
|
|
7916
|
+
* TikTok organic post settings (Direct Post: video + photo).
|
|
7917
|
+
*/
|
|
7918
|
+
settings: {
|
|
7919
|
+
/**
|
|
7920
|
+
* Audience for the post. The per-account allowed set is returned by creator_info at publish; an out-of-set value is rejected then. Unaudited apps may only use SELF_ONLY.
|
|
7921
|
+
*/
|
|
7922
|
+
privacy_level?: 'PUBLIC_TO_EVERYONE' | 'MUTUAL_FOLLOW_FRIENDS' | 'FOLLOWER_OF_CREATOR' | 'SELF_ONLY';
|
|
7923
|
+
/**
|
|
7924
|
+
* Disable comments on this post.
|
|
7925
|
+
*/
|
|
7926
|
+
disable_comment?: boolean;
|
|
7927
|
+
/**
|
|
7928
|
+
* Disable Duet (video only).
|
|
7929
|
+
*/
|
|
7930
|
+
disable_duet?: boolean;
|
|
7931
|
+
/**
|
|
7932
|
+
* Disable Stitch (video only).
|
|
7933
|
+
*/
|
|
7934
|
+
disable_stitch?: boolean;
|
|
7935
|
+
/**
|
|
7936
|
+
* Video cover frame offset (ms). Video posts only.
|
|
7937
|
+
*/
|
|
7938
|
+
video_cover_timestamp_ms?: number;
|
|
7939
|
+
/**
|
|
7940
|
+
* Which carousel image is the cover (0-based index into the ordered image list). Photo posts only.
|
|
7941
|
+
*/
|
|
7942
|
+
photo_cover_index?: number;
|
|
7943
|
+
/**
|
|
7944
|
+
* Auto-add a TikTok soundtrack. Photo posts only.
|
|
7945
|
+
*/
|
|
7946
|
+
auto_add_music?: boolean;
|
|
7947
|
+
/**
|
|
7948
|
+
* Disclose a paid partnership (branded content).
|
|
7949
|
+
*/
|
|
7950
|
+
brand_content_toggle?: boolean;
|
|
7951
|
+
/**
|
|
7952
|
+
* Disclose own-brand promotional content.
|
|
7953
|
+
*/
|
|
7954
|
+
brand_organic_toggle?: boolean;
|
|
7955
|
+
/**
|
|
7956
|
+
* Disclose AI-generated content. Video posts only.
|
|
7957
|
+
*/
|
|
7958
|
+
is_aigc?: boolean;
|
|
7959
|
+
};
|
|
7960
|
+
id: string;
|
|
7961
|
+
object: 'post_variant';
|
|
7962
|
+
/**
|
|
7963
|
+
* The connected account this variant publishes to. null when that connection was removed (disconnected) — the variant then fails at publish time with a `connection_removed` error; reconnect + reschedule to resume.
|
|
7964
|
+
*/
|
|
7965
|
+
connection_id: string | null;
|
|
7966
|
+
body: string | null;
|
|
7967
|
+
status: 'draft' | 'scheduled' | 'publishing' | 'published' | 'failed';
|
|
7968
|
+
/**
|
|
7969
|
+
* Per-variant schedule override (ISO-8601); null inherits the post.
|
|
7970
|
+
*/
|
|
7971
|
+
schedule_at: string | null;
|
|
7972
|
+
result: {
|
|
7973
|
+
platform_post_id: string;
|
|
7974
|
+
permalink: string | null;
|
|
7975
|
+
published_at: string;
|
|
7976
|
+
} | null;
|
|
7977
|
+
error: {
|
|
7978
|
+
code: string;
|
|
7979
|
+
message: string;
|
|
7980
|
+
/**
|
|
7981
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string.
|
|
7982
|
+
*/
|
|
7983
|
+
display_error: string;
|
|
7984
|
+
} | null;
|
|
7985
|
+
media: Array<{
|
|
7986
|
+
media_id: string;
|
|
7987
|
+
/**
|
|
7988
|
+
* Ordering of this media within the variant (e.g. carousel order).
|
|
7989
|
+
*/
|
|
7990
|
+
position: number;
|
|
7991
|
+
/**
|
|
7992
|
+
* Per-variant crop, applied at publish; null = none.
|
|
7993
|
+
*/
|
|
7994
|
+
crop_box: {
|
|
7995
|
+
[key: string]: unknown;
|
|
7996
|
+
} | null;
|
|
7997
|
+
/**
|
|
7998
|
+
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
7999
|
+
*/
|
|
8000
|
+
alt_text_override: string | null;
|
|
8001
|
+
}>;
|
|
8002
|
+
}>;
|
|
8003
|
+
/**
|
|
8004
|
+
* ISO-8601 creation time.
|
|
6376
8005
|
*/
|
|
6377
|
-
|
|
8006
|
+
created_at: string;
|
|
6378
8007
|
/**
|
|
6379
|
-
*
|
|
8008
|
+
* ISO-8601 last-update time.
|
|
6380
8009
|
*/
|
|
6381
|
-
|
|
8010
|
+
updated_at: string;
|
|
6382
8011
|
};
|
|
6383
|
-
|
|
6384
|
-
|
|
6385
|
-
|
|
6386
|
-
|
|
6387
|
-
|
|
6388
|
-
|
|
6389
|
-
|
|
6390
|
-
type: string;
|
|
6391
|
-
/**
|
|
6392
|
-
* A stable, human-readable summary of the error code.
|
|
6393
|
-
*/
|
|
6394
|
-
title: string;
|
|
6395
|
-
/**
|
|
6396
|
-
* The HTTP status code.
|
|
6397
|
-
*/
|
|
6398
|
-
status: number;
|
|
6399
|
-
/**
|
|
6400
|
-
* The machine-readable error code — branch on this. Narrowed to the codes this endpoint can return at this status.
|
|
6401
|
-
*/
|
|
6402
|
-
code: 'rate_limited';
|
|
6403
|
-
/**
|
|
6404
|
-
* An occurrence-specific, human-readable explanation.
|
|
6405
|
-
*/
|
|
6406
|
-
detail?: string;
|
|
8012
|
+
};
|
|
8013
|
+
type PostsGetResponse = PostsGetResponses[keyof PostsGetResponses];
|
|
8014
|
+
type PostsUpdateData = {
|
|
8015
|
+
body?: {
|
|
8016
|
+
publish?: 'now' | 'schedule' | 'draft';
|
|
8017
|
+
schedule_at?: string | null;
|
|
8018
|
+
external_id?: string | null;
|
|
6407
8019
|
/**
|
|
6408
|
-
*
|
|
8020
|
+
* Customer-owned key/value context, returned on reads and filterable on list endpoints (exact match). Values are scalars: string (≤500 chars), number, or boolean. At most 50 keys; keys ≤40 chars; total serialized JSON must fit in 16 KiB. Arrays and nested objects are out of scope for v1 (kept out to keep the contract scalar + exact-match). Keep a key’s value type consistent across records — filtering matches type-exactly. Never derive auth/scopes from metadata.
|
|
6409
8021
|
*/
|
|
6410
|
-
|
|
6411
|
-
|
|
6412
|
-
};
|
|
6413
|
-
|
|
6414
|
-
|
|
6415
|
-
|
|
6416
|
-
|
|
6417
|
-
|
|
6418
|
-
|
|
6419
|
-
|
|
6420
|
-
|
|
6421
|
-
|
|
8022
|
+
metadata?: {
|
|
8023
|
+
[key: string]: string | number | boolean;
|
|
8024
|
+
};
|
|
8025
|
+
tags?: Array<string>;
|
|
8026
|
+
notes?: string | null;
|
|
8027
|
+
dry_run?: boolean;
|
|
8028
|
+
/**
|
|
8029
|
+
* A single platform variant of a post: connection, platform, explicit post_type, body, ordered media, and native typed settings.
|
|
8030
|
+
*/
|
|
8031
|
+
variants?: Array<{
|
|
8032
|
+
platform: 'x';
|
|
8033
|
+
post_type: 'text' | 'single_image' | 'multi_image' | 'video';
|
|
8034
|
+
/**
|
|
8035
|
+
* X (Twitter) organic post settings.
|
|
8036
|
+
*/
|
|
8037
|
+
settings?: {
|
|
8038
|
+
/**
|
|
8039
|
+
* Who may reply. Omit (or `everyone`) = anyone. `everyone` is sugar that is normalised to an omitted field.
|
|
8040
|
+
*/
|
|
8041
|
+
reply_settings?: 'everyone' | 'following' | 'mentionedUsers' | 'subscribers' | 'verified';
|
|
8042
|
+
/**
|
|
8043
|
+
* Quote a post by id. Mutually exclusive with poll/card_uri/media. Enterprise-tier at publish.
|
|
8044
|
+
*/
|
|
8045
|
+
quote_tweet_id?: string;
|
|
8046
|
+
/**
|
|
8047
|
+
* Create a poll. Mutually exclusive with media, quote, and card_uri.
|
|
8048
|
+
*/
|
|
8049
|
+
poll?: {
|
|
8050
|
+
/**
|
|
8051
|
+
* 2–4 options, each 1–25 characters.
|
|
8052
|
+
*/
|
|
8053
|
+
options: Array<string>;
|
|
8054
|
+
/**
|
|
8055
|
+
* Poll duration in minutes (5 min – 7 days).
|
|
8056
|
+
*/
|
|
8057
|
+
duration_minutes: number;
|
|
8058
|
+
/**
|
|
8059
|
+
* Reply restriction for the poll post (same enum).
|
|
8060
|
+
*/
|
|
8061
|
+
reply_settings?: 'following' | 'mentionedUsers' | 'subscribers' | 'verified';
|
|
8062
|
+
};
|
|
8063
|
+
/**
|
|
8064
|
+
* Reply/thread chaining controls.
|
|
8065
|
+
*/
|
|
8066
|
+
reply?: {
|
|
8067
|
+
/**
|
|
8068
|
+
* Parent post id; required when `reply` is present.
|
|
8069
|
+
*/
|
|
8070
|
+
in_reply_to_tweet_id: string;
|
|
8071
|
+
/**
|
|
8072
|
+
* User ids dropped from the auto-mention chain.
|
|
8073
|
+
*/
|
|
8074
|
+
exclude_reply_user_ids?: Array<string>;
|
|
8075
|
+
/**
|
|
8076
|
+
* Auto-prepend the parent participants' @mentions.
|
|
8077
|
+
*/
|
|
8078
|
+
auto_populate_reply_metadata?: boolean;
|
|
8079
|
+
};
|
|
8080
|
+
/**
|
|
8081
|
+
* Post to an X Community.
|
|
8082
|
+
*/
|
|
8083
|
+
community_id?: string;
|
|
8084
|
+
/**
|
|
8085
|
+
* Restrict to Super Followers (default false).
|
|
8086
|
+
*/
|
|
8087
|
+
for_super_followers_only?: boolean;
|
|
8088
|
+
/**
|
|
8089
|
+
* Attach a place.
|
|
8090
|
+
*/
|
|
8091
|
+
geo?: {
|
|
8092
|
+
place_id: string;
|
|
8093
|
+
};
|
|
8094
|
+
/**
|
|
8095
|
+
* Cards-API reference. Mutually exclusive with quote/poll/media.
|
|
8096
|
+
*/
|
|
8097
|
+
card_uri?: string;
|
|
8098
|
+
/**
|
|
8099
|
+
* Tag ≤10 users on attached media.
|
|
8100
|
+
*/
|
|
8101
|
+
media_tagged_user_ids?: Array<string>;
|
|
8102
|
+
};
|
|
8103
|
+
/**
|
|
8104
|
+
* The connected account this variant publishes to.
|
|
8105
|
+
*/
|
|
8106
|
+
connection_id: string;
|
|
8107
|
+
/**
|
|
8108
|
+
* Caption / commentary / message for the post.
|
|
8109
|
+
*/
|
|
8110
|
+
body?: string;
|
|
8111
|
+
/**
|
|
8112
|
+
* Ordered media references; the count drives the post-type rules.
|
|
8113
|
+
*/
|
|
8114
|
+
media?: Array<{
|
|
8115
|
+
media_id: string;
|
|
8116
|
+
/**
|
|
8117
|
+
* Per-variant crop applied at publish; omit for none.
|
|
8118
|
+
*/
|
|
8119
|
+
crop_box?: {
|
|
8120
|
+
[key: string]: unknown;
|
|
8121
|
+
} | null;
|
|
8122
|
+
/**
|
|
8123
|
+
* Per-variant alt text; falls back to the asset's.
|
|
8124
|
+
*/
|
|
8125
|
+
alt_text_override?: string | null;
|
|
8126
|
+
}>;
|
|
8127
|
+
} | {
|
|
8128
|
+
platform: 'linkedin';
|
|
8129
|
+
post_type: 'text' | 'single_image' | 'multi_image' | 'video';
|
|
8130
|
+
/**
|
|
8131
|
+
* LinkedIn personal member post settings.
|
|
8132
|
+
*/
|
|
8133
|
+
settings: {
|
|
8134
|
+
/**
|
|
8135
|
+
* Audience. PUBLIC or CONNECTIONS — CONTAINER/LOGGED_IN are invalid for member posts.
|
|
8136
|
+
*/
|
|
8137
|
+
visibility: 'PUBLIC' | 'CONNECTIONS';
|
|
8138
|
+
/**
|
|
8139
|
+
* Which content shape this post carries (mutually exclusive with the others).
|
|
8140
|
+
*/
|
|
8141
|
+
content_kind: 'text' | 'single_image' | 'video' | 'multi_image' | 'document' | 'article' | 'poll';
|
|
8142
|
+
/**
|
|
8143
|
+
* An article share card.
|
|
8144
|
+
*/
|
|
8145
|
+
article?: {
|
|
8146
|
+
/**
|
|
8147
|
+
* Article URL. Required for an article post.
|
|
8148
|
+
*/
|
|
8149
|
+
source: string;
|
|
8150
|
+
/**
|
|
8151
|
+
* Article headline, ≤400 characters.
|
|
8152
|
+
*/
|
|
8153
|
+
title?: string;
|
|
8154
|
+
/**
|
|
8155
|
+
* Subtext on the article card, ≤4086 characters.
|
|
8156
|
+
*/
|
|
8157
|
+
description?: string;
|
|
8158
|
+
/**
|
|
8159
|
+
* Optional thumbnail, referenced by OUR media id (resolved to a urn:li:image at publish).
|
|
8160
|
+
*/
|
|
8161
|
+
thumbnail_media_id?: string;
|
|
8162
|
+
};
|
|
8163
|
+
/**
|
|
8164
|
+
* A LinkedIn poll (mutually exclusive with other content).
|
|
8165
|
+
*/
|
|
8166
|
+
poll?: {
|
|
8167
|
+
/**
|
|
8168
|
+
* The poll question, ≤140 characters.
|
|
8169
|
+
*/
|
|
8170
|
+
question: string;
|
|
8171
|
+
/**
|
|
8172
|
+
* 2–4 options, each 1–30 characters.
|
|
8173
|
+
*/
|
|
8174
|
+
options: Array<string>;
|
|
8175
|
+
/**
|
|
8176
|
+
* How long the poll runs.
|
|
8177
|
+
*/
|
|
8178
|
+
duration: 'ONE_DAY' | 'THREE_DAYS' | 'SEVEN_DAYS' | 'FOURTEEN_DAYS';
|
|
8179
|
+
};
|
|
8180
|
+
/**
|
|
8181
|
+
* Document-post display options (asset rides on media[]).
|
|
8182
|
+
*/
|
|
8183
|
+
document?: {
|
|
8184
|
+
/**
|
|
8185
|
+
* Display title shown above the document. Required for document posts.
|
|
8186
|
+
*/
|
|
8187
|
+
title: string;
|
|
8188
|
+
};
|
|
8189
|
+
/**
|
|
8190
|
+
* Disable resharing of this post (default false).
|
|
8191
|
+
*/
|
|
8192
|
+
disable_reshare?: boolean;
|
|
8193
|
+
/**
|
|
8194
|
+
* Inline @mentions encoded into the commentary at publish.
|
|
8195
|
+
*/
|
|
8196
|
+
mentions?: Array<{
|
|
8197
|
+
/**
|
|
8198
|
+
* Whether the mentioned entity is a member or an organization.
|
|
8199
|
+
*/
|
|
8200
|
+
type: 'person' | 'organization';
|
|
8201
|
+
/**
|
|
8202
|
+
* Rendered text; must match the entity name (case-sensitive) for the link to convert.
|
|
8203
|
+
*/
|
|
8204
|
+
name: string;
|
|
8205
|
+
/**
|
|
8206
|
+
* The mentioned entity urn (supplied by the caller).
|
|
8207
|
+
*/
|
|
8208
|
+
urn: string;
|
|
8209
|
+
}>;
|
|
8210
|
+
};
|
|
8211
|
+
/**
|
|
8212
|
+
* The connected account this variant publishes to.
|
|
8213
|
+
*/
|
|
8214
|
+
connection_id: string;
|
|
8215
|
+
/**
|
|
8216
|
+
* Caption / commentary / message for the post.
|
|
8217
|
+
*/
|
|
8218
|
+
body?: string;
|
|
8219
|
+
/**
|
|
8220
|
+
* Ordered media references; the count drives the post-type rules.
|
|
8221
|
+
*/
|
|
8222
|
+
media?: Array<{
|
|
8223
|
+
media_id: string;
|
|
8224
|
+
/**
|
|
8225
|
+
* Per-variant crop applied at publish; omit for none.
|
|
8226
|
+
*/
|
|
8227
|
+
crop_box?: {
|
|
8228
|
+
[key: string]: unknown;
|
|
8229
|
+
} | null;
|
|
8230
|
+
/**
|
|
8231
|
+
* Per-variant alt text; falls back to the asset's.
|
|
8232
|
+
*/
|
|
8233
|
+
alt_text_override?: string | null;
|
|
8234
|
+
}>;
|
|
8235
|
+
} | {
|
|
8236
|
+
platform: 'instagram';
|
|
8237
|
+
post_type: 'single_image' | 'carousel' | 'reel';
|
|
8238
|
+
/**
|
|
8239
|
+
* Instagram organic post settings (feed image/carousel + reels).
|
|
8240
|
+
*/
|
|
8241
|
+
settings: {
|
|
8242
|
+
/**
|
|
8243
|
+
* Feed image, carousel, or reel. Defaults to IMAGE for a single image.
|
|
8244
|
+
*/
|
|
8245
|
+
media_type?: 'IMAGE' | 'CAROUSEL' | 'REELS';
|
|
8246
|
+
/**
|
|
8247
|
+
* Facebook Page id representing a location.
|
|
8248
|
+
*/
|
|
8249
|
+
location_id?: string;
|
|
8250
|
+
/**
|
|
8251
|
+
* Tag users on an image; x/y are fractional positions in [0,1].
|
|
8252
|
+
*/
|
|
8253
|
+
user_tags?: Array<{
|
|
8254
|
+
/**
|
|
8255
|
+
* IG username to tag.
|
|
8256
|
+
*/
|
|
8257
|
+
username: string;
|
|
8258
|
+
/**
|
|
8259
|
+
* Horizontal position on the image, in [0,1].
|
|
8260
|
+
*/
|
|
8261
|
+
x: number;
|
|
8262
|
+
/**
|
|
8263
|
+
* Vertical position on the image, in [0,1].
|
|
8264
|
+
*/
|
|
8265
|
+
y: number;
|
|
8266
|
+
}>;
|
|
8267
|
+
/**
|
|
8268
|
+
* ≤3 co-author usernames.
|
|
8269
|
+
*/
|
|
8270
|
+
collaborators?: Array<string>;
|
|
8271
|
+
/**
|
|
8272
|
+
* Reel also appears in the main feed.
|
|
8273
|
+
*/
|
|
8274
|
+
share_to_feed?: boolean;
|
|
8275
|
+
/**
|
|
8276
|
+
* Reel cover frame offset (ms).
|
|
8277
|
+
*/
|
|
8278
|
+
thumb_offset?: number;
|
|
8279
|
+
/**
|
|
8280
|
+
* Custom reel cover image URL.
|
|
8281
|
+
*/
|
|
8282
|
+
cover_url?: string;
|
|
8283
|
+
/**
|
|
8284
|
+
* Label for the reel's original audio.
|
|
8285
|
+
*/
|
|
8286
|
+
audio_name?: string;
|
|
8287
|
+
};
|
|
8288
|
+
/**
|
|
8289
|
+
* The connected account this variant publishes to.
|
|
8290
|
+
*/
|
|
8291
|
+
connection_id: string;
|
|
8292
|
+
/**
|
|
8293
|
+
* Caption / commentary / message for the post.
|
|
8294
|
+
*/
|
|
8295
|
+
body?: string;
|
|
8296
|
+
/**
|
|
8297
|
+
* Ordered media references; the count drives the post-type rules.
|
|
8298
|
+
*/
|
|
8299
|
+
media?: Array<{
|
|
8300
|
+
media_id: string;
|
|
8301
|
+
/**
|
|
8302
|
+
* Per-variant crop applied at publish; omit for none.
|
|
8303
|
+
*/
|
|
8304
|
+
crop_box?: {
|
|
8305
|
+
[key: string]: unknown;
|
|
8306
|
+
} | null;
|
|
8307
|
+
/**
|
|
8308
|
+
* Per-variant alt text; falls back to the asset's.
|
|
8309
|
+
*/
|
|
8310
|
+
alt_text_override?: string | null;
|
|
8311
|
+
}>;
|
|
8312
|
+
} | {
|
|
8313
|
+
platform: 'facebook_page';
|
|
8314
|
+
post_type: 'text' | 'single_image' | 'multi_image' | 'reel';
|
|
8315
|
+
/**
|
|
8316
|
+
* Facebook Page organic post settings.
|
|
8317
|
+
*/
|
|
8318
|
+
settings?: {
|
|
8319
|
+
/**
|
|
8320
|
+
* URL to unfurl. A feed post needs a body (message) OR a link.
|
|
8321
|
+
*/
|
|
8322
|
+
link?: string;
|
|
8323
|
+
};
|
|
8324
|
+
/**
|
|
8325
|
+
* The connected account this variant publishes to.
|
|
8326
|
+
*/
|
|
8327
|
+
connection_id: string;
|
|
8328
|
+
/**
|
|
8329
|
+
* Caption / commentary / message for the post.
|
|
8330
|
+
*/
|
|
8331
|
+
body?: string;
|
|
8332
|
+
/**
|
|
8333
|
+
* Ordered media references; the count drives the post-type rules.
|
|
8334
|
+
*/
|
|
8335
|
+
media?: Array<{
|
|
8336
|
+
media_id: string;
|
|
8337
|
+
/**
|
|
8338
|
+
* Per-variant crop applied at publish; omit for none.
|
|
8339
|
+
*/
|
|
8340
|
+
crop_box?: {
|
|
8341
|
+
[key: string]: unknown;
|
|
8342
|
+
} | null;
|
|
8343
|
+
/**
|
|
8344
|
+
* Per-variant alt text; falls back to the asset's.
|
|
8345
|
+
*/
|
|
8346
|
+
alt_text_override?: string | null;
|
|
8347
|
+
}>;
|
|
8348
|
+
} | {
|
|
8349
|
+
platform: 'tiktok';
|
|
8350
|
+
post_type: 'video' | 'single_image' | 'carousel';
|
|
8351
|
+
/**
|
|
8352
|
+
* TikTok organic post settings (Direct Post: video + photo).
|
|
8353
|
+
*/
|
|
8354
|
+
settings?: {
|
|
8355
|
+
/**
|
|
8356
|
+
* Audience for the post. The per-account allowed set is returned by creator_info at publish; an out-of-set value is rejected then. Unaudited apps may only use SELF_ONLY.
|
|
8357
|
+
*/
|
|
8358
|
+
privacy_level?: 'PUBLIC_TO_EVERYONE' | 'MUTUAL_FOLLOW_FRIENDS' | 'FOLLOWER_OF_CREATOR' | 'SELF_ONLY';
|
|
8359
|
+
/**
|
|
8360
|
+
* Disable comments on this post.
|
|
8361
|
+
*/
|
|
8362
|
+
disable_comment?: boolean;
|
|
8363
|
+
/**
|
|
8364
|
+
* Disable Duet (video only).
|
|
8365
|
+
*/
|
|
8366
|
+
disable_duet?: boolean;
|
|
8367
|
+
/**
|
|
8368
|
+
* Disable Stitch (video only).
|
|
8369
|
+
*/
|
|
8370
|
+
disable_stitch?: boolean;
|
|
8371
|
+
/**
|
|
8372
|
+
* Video cover frame offset (ms). Video posts only.
|
|
8373
|
+
*/
|
|
8374
|
+
video_cover_timestamp_ms?: number;
|
|
8375
|
+
/**
|
|
8376
|
+
* Which carousel image is the cover (0-based index into the ordered image list). Photo posts only.
|
|
8377
|
+
*/
|
|
8378
|
+
photo_cover_index?: number;
|
|
8379
|
+
/**
|
|
8380
|
+
* Auto-add a TikTok soundtrack. Photo posts only.
|
|
8381
|
+
*/
|
|
8382
|
+
auto_add_music?: boolean;
|
|
8383
|
+
/**
|
|
8384
|
+
* Disclose a paid partnership (branded content).
|
|
8385
|
+
*/
|
|
8386
|
+
brand_content_toggle?: boolean;
|
|
8387
|
+
/**
|
|
8388
|
+
* Disclose own-brand promotional content.
|
|
8389
|
+
*/
|
|
8390
|
+
brand_organic_toggle?: boolean;
|
|
8391
|
+
/**
|
|
8392
|
+
* Disclose AI-generated content. Video posts only.
|
|
8393
|
+
*/
|
|
8394
|
+
is_aigc?: boolean;
|
|
8395
|
+
};
|
|
8396
|
+
/**
|
|
8397
|
+
* The connected account this variant publishes to.
|
|
8398
|
+
*/
|
|
8399
|
+
connection_id: string;
|
|
8400
|
+
/**
|
|
8401
|
+
* Caption / commentary / message for the post.
|
|
8402
|
+
*/
|
|
8403
|
+
body?: string;
|
|
8404
|
+
/**
|
|
8405
|
+
* Ordered media references; the count drives the post-type rules.
|
|
8406
|
+
*/
|
|
8407
|
+
media?: Array<{
|
|
8408
|
+
media_id: string;
|
|
8409
|
+
/**
|
|
8410
|
+
* Per-variant crop applied at publish; omit for none.
|
|
8411
|
+
*/
|
|
8412
|
+
crop_box?: {
|
|
8413
|
+
[key: string]: unknown;
|
|
8414
|
+
} | null;
|
|
8415
|
+
/**
|
|
8416
|
+
* Per-variant alt text; falls back to the asset's.
|
|
8417
|
+
*/
|
|
8418
|
+
alt_text_override?: string | null;
|
|
8419
|
+
}>;
|
|
8420
|
+
}>;
|
|
6422
8421
|
};
|
|
6423
|
-
};
|
|
6424
|
-
type PostsDeleteResponse = PostsDeleteResponses[keyof PostsDeleteResponses];
|
|
6425
|
-
type PostsGetData = {
|
|
6426
|
-
body?: never;
|
|
6427
8422
|
path: {
|
|
6428
8423
|
/**
|
|
6429
8424
|
* The post id.
|
|
@@ -6433,7 +8428,7 @@ type PostsGetData = {
|
|
|
6433
8428
|
query?: never;
|
|
6434
8429
|
url: '/posts/{id}';
|
|
6435
8430
|
};
|
|
6436
|
-
type
|
|
8431
|
+
type PostsUpdateErrors = {
|
|
6437
8432
|
/**
|
|
6438
8433
|
* An RFC 9457 problem response.
|
|
6439
8434
|
*/
|
|
@@ -6598,7 +8593,7 @@ type PostsGetErrors = {
|
|
|
6598
8593
|
/**
|
|
6599
8594
|
* The machine-readable error code — branch on this. Narrowed to the codes this endpoint can return at this status.
|
|
6600
8595
|
*/
|
|
6601
|
-
code: 'idempotency_key_reused';
|
|
8596
|
+
code: 'idempotency_key_reused' | 'invalid_connection' | 'invalid_media' | 'internal_error' | 'not_publishable';
|
|
6602
8597
|
/**
|
|
6603
8598
|
* An occurrence-specific, human-readable explanation.
|
|
6604
8599
|
*/
|
|
@@ -6607,6 +8602,35 @@ type PostsGetErrors = {
|
|
|
6607
8602
|
* The request id, for support and log correlation.
|
|
6608
8603
|
*/
|
|
6609
8604
|
request_id?: string;
|
|
8605
|
+
/**
|
|
8606
|
+
* The specific fields that failed validation or publish-readiness.
|
|
8607
|
+
*/
|
|
8608
|
+
errors?: Array<{
|
|
8609
|
+
/**
|
|
8610
|
+
* Dot-path to the invalid field, e.g. `variants.0.body`.
|
|
8611
|
+
*/
|
|
8612
|
+
field: string;
|
|
8613
|
+
/**
|
|
8614
|
+
* The validation or publish-readiness rule that failed.
|
|
8615
|
+
*/
|
|
8616
|
+
code: string;
|
|
8617
|
+
/**
|
|
8618
|
+
* What is wrong with this field.
|
|
8619
|
+
*/
|
|
8620
|
+
detail: string;
|
|
8621
|
+
/**
|
|
8622
|
+
* How to fix it (publish-readiness failures).
|
|
8623
|
+
*/
|
|
8624
|
+
hint?: string;
|
|
8625
|
+
/**
|
|
8626
|
+
* The accepted value(s) for this field, when known.
|
|
8627
|
+
*/
|
|
8628
|
+
allowed?: Array<string>;
|
|
8629
|
+
/**
|
|
8630
|
+
* The value received, when known.
|
|
8631
|
+
*/
|
|
8632
|
+
got?: string;
|
|
8633
|
+
}>;
|
|
6610
8634
|
};
|
|
6611
8635
|
/**
|
|
6612
8636
|
* An RFC 9457 problem response.
|
|
@@ -6638,8 +8662,8 @@ type PostsGetErrors = {
|
|
|
6638
8662
|
request_id?: string;
|
|
6639
8663
|
};
|
|
6640
8664
|
};
|
|
6641
|
-
type
|
|
6642
|
-
type
|
|
8665
|
+
type PostsUpdateError = PostsUpdateErrors[keyof PostsUpdateErrors];
|
|
8666
|
+
type PostsUpdateResponses = {
|
|
6643
8667
|
/**
|
|
6644
8668
|
* OK
|
|
6645
8669
|
*/
|
|
@@ -6654,127 +8678,23 @@ type PostsGetResponses = {
|
|
|
6654
8678
|
status: 'draft' | 'scheduled' | 'publishing' | 'partially_published' | 'published' | 'failed';
|
|
6655
8679
|
/**
|
|
6656
8680
|
* Shared schedule (ISO-8601). null = draft/publish-now.
|
|
6657
|
-
*/
|
|
6658
|
-
schedule_at: string | null;
|
|
6659
|
-
tags: Array<string>;
|
|
6660
|
-
notes: string | null;
|
|
6661
|
-
/**
|
|
6662
|
-
* Customer-owned key/value context, returned on reads and filterable on list endpoints (exact match). Values are scalars: string (≤500 chars), number, or boolean. At most 50 keys; keys ≤40 chars; total serialized JSON must fit in 16 KiB. Arrays and nested objects are out of scope for v1 (kept out to keep the contract scalar + exact-match). Keep a key’s value type consistent across records — filtering matches type-exactly. Never derive auth/scopes from metadata.
|
|
6663
|
-
*/
|
|
6664
|
-
metadata: {
|
|
6665
|
-
[key: string]: string | number | boolean;
|
|
6666
|
-
};
|
|
6667
|
-
variants: Array<{
|
|
6668
|
-
id: string;
|
|
6669
|
-
object: 'post_variant';
|
|
6670
|
-
/**
|
|
6671
|
-
* The connected account this variant publishes to. null when that connection was removed (disconnected) — the variant then fails at publish time with a `connection_removed` error; reconnect + reschedule to resume.
|
|
6672
|
-
*/
|
|
6673
|
-
connection_id: string | null;
|
|
6674
|
-
platform: 'x' | 'linkedin' | 'facebook_page' | 'instagram' | 'tiktok';
|
|
6675
|
-
post_type: 'text' | 'single_image' | 'multi_image' | 'video' | 'reel' | 'carousel';
|
|
6676
|
-
body: string | null;
|
|
6677
|
-
status: 'draft' | 'scheduled' | 'publishing' | 'published' | 'failed';
|
|
6678
|
-
/**
|
|
6679
|
-
* Native per-platform settings, as stored.
|
|
6680
|
-
*/
|
|
6681
|
-
settings: {
|
|
6682
|
-
[key: string]: unknown;
|
|
6683
|
-
};
|
|
6684
|
-
/**
|
|
6685
|
-
* Per-variant schedule override (ISO-8601); null inherits the post.
|
|
6686
|
-
*/
|
|
6687
|
-
schedule_at: string | null;
|
|
6688
|
-
result: {
|
|
6689
|
-
platform_post_id: string;
|
|
6690
|
-
permalink: string | null;
|
|
6691
|
-
published_at: string;
|
|
6692
|
-
} | null;
|
|
6693
|
-
error: {
|
|
6694
|
-
code: string;
|
|
6695
|
-
message: string;
|
|
6696
|
-
/**
|
|
6697
|
-
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string.
|
|
6698
|
-
*/
|
|
6699
|
-
display_error: string;
|
|
6700
|
-
} | null;
|
|
6701
|
-
media: Array<{
|
|
6702
|
-
media_id: string;
|
|
6703
|
-
/**
|
|
6704
|
-
* Ordering of this media within the variant (e.g. carousel order).
|
|
6705
|
-
*/
|
|
6706
|
-
position: number;
|
|
6707
|
-
/**
|
|
6708
|
-
* Per-variant crop, applied at publish; null = none.
|
|
6709
|
-
*/
|
|
6710
|
-
crop_box: {
|
|
6711
|
-
[key: string]: unknown;
|
|
6712
|
-
} | null;
|
|
6713
|
-
/**
|
|
6714
|
-
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
6715
|
-
*/
|
|
6716
|
-
alt_text_override: string | null;
|
|
6717
|
-
}>;
|
|
6718
|
-
}>;
|
|
6719
|
-
/**
|
|
6720
|
-
* ISO-8601 creation time.
|
|
6721
|
-
*/
|
|
6722
|
-
created_at: string;
|
|
6723
|
-
/**
|
|
6724
|
-
* ISO-8601 last-update time.
|
|
6725
|
-
*/
|
|
6726
|
-
updated_at: string;
|
|
6727
|
-
};
|
|
6728
|
-
};
|
|
6729
|
-
type PostsGetResponse = PostsGetResponses[keyof PostsGetResponses];
|
|
6730
|
-
type PostsUpdateData = {
|
|
6731
|
-
body?: {
|
|
6732
|
-
publish?: 'now' | 'schedule' | 'draft';
|
|
6733
|
-
schedule_at?: string | null;
|
|
6734
|
-
external_id?: string | null;
|
|
8681
|
+
*/
|
|
8682
|
+
schedule_at: string | null;
|
|
8683
|
+
tags: Array<string>;
|
|
8684
|
+
notes: string | null;
|
|
6735
8685
|
/**
|
|
6736
8686
|
* Customer-owned key/value context, returned on reads and filterable on list endpoints (exact match). Values are scalars: string (≤500 chars), number, or boolean. At most 50 keys; keys ≤40 chars; total serialized JSON must fit in 16 KiB. Arrays and nested objects are out of scope for v1 (kept out to keep the contract scalar + exact-match). Keep a key’s value type consistent across records — filtering matches type-exactly. Never derive auth/scopes from metadata.
|
|
6737
8687
|
*/
|
|
6738
|
-
metadata
|
|
8688
|
+
metadata: {
|
|
6739
8689
|
[key: string]: string | number | boolean;
|
|
6740
8690
|
};
|
|
6741
|
-
|
|
6742
|
-
notes?: string | null;
|
|
6743
|
-
dry_run?: boolean;
|
|
6744
|
-
/**
|
|
6745
|
-
* A single platform variant of a post: connection, platform, explicit post_type, body, ordered media, and native typed settings.
|
|
6746
|
-
*/
|
|
6747
|
-
variants?: Array<{
|
|
8691
|
+
variants: Array<{
|
|
6748
8692
|
platform: 'x';
|
|
6749
8693
|
post_type: 'text' | 'single_image' | 'multi_image' | 'video';
|
|
6750
|
-
/**
|
|
6751
|
-
* The connected account this variant publishes to.
|
|
6752
|
-
*/
|
|
6753
|
-
connection_id: string;
|
|
6754
|
-
/**
|
|
6755
|
-
* Caption / commentary / message for the post.
|
|
6756
|
-
*/
|
|
6757
|
-
body?: string;
|
|
6758
|
-
/**
|
|
6759
|
-
* Ordered media references; the count drives the post-type rules.
|
|
6760
|
-
*/
|
|
6761
|
-
media?: Array<{
|
|
6762
|
-
media_id: string;
|
|
6763
|
-
/**
|
|
6764
|
-
* Per-variant crop applied at publish; omit for none.
|
|
6765
|
-
*/
|
|
6766
|
-
crop_box?: {
|
|
6767
|
-
[key: string]: unknown;
|
|
6768
|
-
} | null;
|
|
6769
|
-
/**
|
|
6770
|
-
* Per-variant alt text; falls back to the asset's.
|
|
6771
|
-
*/
|
|
6772
|
-
alt_text_override?: string | null;
|
|
6773
|
-
}>;
|
|
6774
8694
|
/**
|
|
6775
8695
|
* X (Twitter) organic post settings.
|
|
6776
8696
|
*/
|
|
6777
|
-
settings
|
|
8697
|
+
settings: {
|
|
6778
8698
|
/**
|
|
6779
8699
|
* Who may reply. Omit (or `everyone`) = anyone. `everyone` is sugar that is normalised to an omitted field.
|
|
6780
8700
|
*/
|
|
@@ -6840,33 +8760,51 @@ type PostsUpdateData = {
|
|
|
6840
8760
|
*/
|
|
6841
8761
|
media_tagged_user_ids?: Array<string>;
|
|
6842
8762
|
};
|
|
6843
|
-
|
|
6844
|
-
|
|
6845
|
-
post_type: 'text' | 'single_image' | 'multi_image' | 'video';
|
|
6846
|
-
/**
|
|
6847
|
-
* The connected account this variant publishes to.
|
|
6848
|
-
*/
|
|
6849
|
-
connection_id: string;
|
|
8763
|
+
id: string;
|
|
8764
|
+
object: 'post_variant';
|
|
6850
8765
|
/**
|
|
6851
|
-
*
|
|
8766
|
+
* The connected account this variant publishes to. null when that connection was removed (disconnected) — the variant then fails at publish time with a `connection_removed` error; reconnect + reschedule to resume.
|
|
6852
8767
|
*/
|
|
6853
|
-
|
|
8768
|
+
connection_id: string | null;
|
|
8769
|
+
body: string | null;
|
|
8770
|
+
status: 'draft' | 'scheduled' | 'publishing' | 'published' | 'failed';
|
|
6854
8771
|
/**
|
|
6855
|
-
*
|
|
8772
|
+
* Per-variant schedule override (ISO-8601); null inherits the post.
|
|
6856
8773
|
*/
|
|
6857
|
-
|
|
8774
|
+
schedule_at: string | null;
|
|
8775
|
+
result: {
|
|
8776
|
+
platform_post_id: string;
|
|
8777
|
+
permalink: string | null;
|
|
8778
|
+
published_at: string;
|
|
8779
|
+
} | null;
|
|
8780
|
+
error: {
|
|
8781
|
+
code: string;
|
|
8782
|
+
message: string;
|
|
8783
|
+
/**
|
|
8784
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string.
|
|
8785
|
+
*/
|
|
8786
|
+
display_error: string;
|
|
8787
|
+
} | null;
|
|
8788
|
+
media: Array<{
|
|
6858
8789
|
media_id: string;
|
|
6859
8790
|
/**
|
|
6860
|
-
*
|
|
8791
|
+
* Ordering of this media within the variant (e.g. carousel order).
|
|
6861
8792
|
*/
|
|
6862
|
-
|
|
8793
|
+
position: number;
|
|
8794
|
+
/**
|
|
8795
|
+
* Per-variant crop, applied at publish; null = none.
|
|
8796
|
+
*/
|
|
8797
|
+
crop_box: {
|
|
6863
8798
|
[key: string]: unknown;
|
|
6864
8799
|
} | null;
|
|
6865
8800
|
/**
|
|
6866
|
-
* Per-variant alt text; falls back to the asset
|
|
8801
|
+
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
6867
8802
|
*/
|
|
6868
|
-
alt_text_override
|
|
8803
|
+
alt_text_override: string | null;
|
|
6869
8804
|
}>;
|
|
8805
|
+
} | {
|
|
8806
|
+
platform: 'linkedin';
|
|
8807
|
+
post_type: 'text' | 'single_image' | 'multi_image' | 'video';
|
|
6870
8808
|
/**
|
|
6871
8809
|
* LinkedIn personal member post settings.
|
|
6872
8810
|
*/
|
|
@@ -6948,479 +8886,253 @@ type PostsUpdateData = {
|
|
|
6948
8886
|
urn: string;
|
|
6949
8887
|
}>;
|
|
6950
8888
|
};
|
|
6951
|
-
|
|
6952
|
-
|
|
6953
|
-
post_type: 'single_image' | 'carousel' | 'reel';
|
|
6954
|
-
/**
|
|
6955
|
-
* The connected account this variant publishes to.
|
|
6956
|
-
*/
|
|
6957
|
-
connection_id: string;
|
|
6958
|
-
/**
|
|
6959
|
-
* Caption / commentary / message for the post.
|
|
6960
|
-
*/
|
|
6961
|
-
body?: string;
|
|
8889
|
+
id: string;
|
|
8890
|
+
object: 'post_variant';
|
|
6962
8891
|
/**
|
|
6963
|
-
*
|
|
8892
|
+
* The connected account this variant publishes to. null when that connection was removed (disconnected) — the variant then fails at publish time with a `connection_removed` error; reconnect + reschedule to resume.
|
|
6964
8893
|
*/
|
|
6965
|
-
|
|
6966
|
-
|
|
6967
|
-
|
|
6968
|
-
* Per-variant crop applied at publish; omit for none.
|
|
6969
|
-
*/
|
|
6970
|
-
crop_box?: {
|
|
6971
|
-
[key: string]: unknown;
|
|
6972
|
-
} | null;
|
|
6973
|
-
/**
|
|
6974
|
-
* Per-variant alt text; falls back to the asset's.
|
|
6975
|
-
*/
|
|
6976
|
-
alt_text_override?: string | null;
|
|
6977
|
-
}>;
|
|
8894
|
+
connection_id: string | null;
|
|
8895
|
+
body: string | null;
|
|
8896
|
+
status: 'draft' | 'scheduled' | 'publishing' | 'published' | 'failed';
|
|
6978
8897
|
/**
|
|
6979
|
-
*
|
|
8898
|
+
* Per-variant schedule override (ISO-8601); null inherits the post.
|
|
6980
8899
|
*/
|
|
6981
|
-
|
|
6982
|
-
|
|
6983
|
-
|
|
6984
|
-
|
|
6985
|
-
|
|
6986
|
-
|
|
6987
|
-
|
|
6988
|
-
|
|
6989
|
-
|
|
6990
|
-
/**
|
|
6991
|
-
* Tag users on an image; x/y are fractional positions in [0,1].
|
|
6992
|
-
*/
|
|
6993
|
-
user_tags?: Array<{
|
|
6994
|
-
/**
|
|
6995
|
-
* IG username to tag.
|
|
6996
|
-
*/
|
|
6997
|
-
username: string;
|
|
6998
|
-
/**
|
|
6999
|
-
* Horizontal position on the image, in [0,1].
|
|
7000
|
-
*/
|
|
7001
|
-
x: number;
|
|
7002
|
-
/**
|
|
7003
|
-
* Vertical position on the image, in [0,1].
|
|
7004
|
-
*/
|
|
7005
|
-
y: number;
|
|
7006
|
-
}>;
|
|
7007
|
-
/**
|
|
7008
|
-
* ≤3 co-author usernames.
|
|
7009
|
-
*/
|
|
7010
|
-
collaborators?: Array<string>;
|
|
7011
|
-
/**
|
|
7012
|
-
* Reel also appears in the main feed.
|
|
7013
|
-
*/
|
|
7014
|
-
share_to_feed?: boolean;
|
|
7015
|
-
/**
|
|
7016
|
-
* Reel cover frame offset (ms).
|
|
7017
|
-
*/
|
|
7018
|
-
thumb_offset?: number;
|
|
8900
|
+
schedule_at: string | null;
|
|
8901
|
+
result: {
|
|
8902
|
+
platform_post_id: string;
|
|
8903
|
+
permalink: string | null;
|
|
8904
|
+
published_at: string;
|
|
8905
|
+
} | null;
|
|
8906
|
+
error: {
|
|
8907
|
+
code: string;
|
|
8908
|
+
message: string;
|
|
7019
8909
|
/**
|
|
7020
|
-
*
|
|
8910
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string.
|
|
7021
8911
|
*/
|
|
7022
|
-
|
|
8912
|
+
display_error: string;
|
|
8913
|
+
} | null;
|
|
8914
|
+
media: Array<{
|
|
8915
|
+
media_id: string;
|
|
7023
8916
|
/**
|
|
7024
|
-
*
|
|
8917
|
+
* Ordering of this media within the variant (e.g. carousel order).
|
|
7025
8918
|
*/
|
|
7026
|
-
|
|
7027
|
-
};
|
|
7028
|
-
} | {
|
|
7029
|
-
platform: 'facebook_page';
|
|
7030
|
-
post_type: 'text' | 'single_image' | 'multi_image' | 'reel';
|
|
7031
|
-
/**
|
|
7032
|
-
* The connected account this variant publishes to.
|
|
7033
|
-
*/
|
|
7034
|
-
connection_id: string;
|
|
7035
|
-
/**
|
|
7036
|
-
* Caption / commentary / message for the post.
|
|
7037
|
-
*/
|
|
7038
|
-
body?: string;
|
|
7039
|
-
/**
|
|
7040
|
-
* Ordered media references; the count drives the post-type rules.
|
|
7041
|
-
*/
|
|
7042
|
-
media?: Array<{
|
|
7043
|
-
media_id: string;
|
|
8919
|
+
position: number;
|
|
7044
8920
|
/**
|
|
7045
|
-
* Per-variant crop applied at publish;
|
|
8921
|
+
* Per-variant crop, applied at publish; null = none.
|
|
7046
8922
|
*/
|
|
7047
|
-
crop_box
|
|
8923
|
+
crop_box: {
|
|
7048
8924
|
[key: string]: unknown;
|
|
7049
8925
|
} | null;
|
|
7050
8926
|
/**
|
|
7051
|
-
* Per-variant alt text; falls back to the asset
|
|
8927
|
+
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
7052
8928
|
*/
|
|
7053
|
-
alt_text_override
|
|
8929
|
+
alt_text_override: string | null;
|
|
7054
8930
|
}>;
|
|
8931
|
+
} | {
|
|
8932
|
+
platform: 'facebook_page';
|
|
8933
|
+
post_type: 'text' | 'single_image' | 'multi_image' | 'reel';
|
|
7055
8934
|
/**
|
|
7056
8935
|
* Facebook Page organic post settings.
|
|
7057
8936
|
*/
|
|
7058
|
-
settings
|
|
8937
|
+
settings: {
|
|
7059
8938
|
/**
|
|
7060
8939
|
* URL to unfurl. A feed post needs a body (message) OR a link.
|
|
7061
8940
|
*/
|
|
7062
8941
|
link?: string;
|
|
7063
8942
|
};
|
|
7064
|
-
|
|
7065
|
-
|
|
7066
|
-
post_type: 'video' | 'single_image' | 'carousel';
|
|
7067
|
-
/**
|
|
7068
|
-
* The connected account this variant publishes to.
|
|
7069
|
-
*/
|
|
7070
|
-
connection_id: string;
|
|
7071
|
-
/**
|
|
7072
|
-
* Caption / commentary / message for the post.
|
|
7073
|
-
*/
|
|
7074
|
-
body?: string;
|
|
8943
|
+
id: string;
|
|
8944
|
+
object: 'post_variant';
|
|
7075
8945
|
/**
|
|
7076
|
-
*
|
|
8946
|
+
* The connected account this variant publishes to. null when that connection was removed (disconnected) — the variant then fails at publish time with a `connection_removed` error; reconnect + reschedule to resume.
|
|
7077
8947
|
*/
|
|
7078
|
-
|
|
7079
|
-
|
|
7080
|
-
|
|
7081
|
-
* Per-variant crop applied at publish; omit for none.
|
|
7082
|
-
*/
|
|
7083
|
-
crop_box?: {
|
|
7084
|
-
[key: string]: unknown;
|
|
7085
|
-
} | null;
|
|
7086
|
-
/**
|
|
7087
|
-
* Per-variant alt text; falls back to the asset's.
|
|
7088
|
-
*/
|
|
7089
|
-
alt_text_override?: string | null;
|
|
7090
|
-
}>;
|
|
8948
|
+
connection_id: string | null;
|
|
8949
|
+
body: string | null;
|
|
8950
|
+
status: 'draft' | 'scheduled' | 'publishing' | 'published' | 'failed';
|
|
7091
8951
|
/**
|
|
7092
|
-
*
|
|
7093
|
-
*/
|
|
7094
|
-
|
|
7095
|
-
|
|
7096
|
-
|
|
7097
|
-
|
|
7098
|
-
|
|
7099
|
-
|
|
7100
|
-
|
|
7101
|
-
|
|
7102
|
-
|
|
7103
|
-
/**
|
|
7104
|
-
* Disable Duet (video only).
|
|
7105
|
-
*/
|
|
7106
|
-
disable_duet?: boolean;
|
|
8952
|
+
* Per-variant schedule override (ISO-8601); null inherits the post.
|
|
8953
|
+
*/
|
|
8954
|
+
schedule_at: string | null;
|
|
8955
|
+
result: {
|
|
8956
|
+
platform_post_id: string;
|
|
8957
|
+
permalink: string | null;
|
|
8958
|
+
published_at: string;
|
|
8959
|
+
} | null;
|
|
8960
|
+
error: {
|
|
8961
|
+
code: string;
|
|
8962
|
+
message: string;
|
|
7107
8963
|
/**
|
|
7108
|
-
*
|
|
8964
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string.
|
|
7109
8965
|
*/
|
|
7110
|
-
|
|
8966
|
+
display_error: string;
|
|
8967
|
+
} | null;
|
|
8968
|
+
media: Array<{
|
|
8969
|
+
media_id: string;
|
|
7111
8970
|
/**
|
|
7112
|
-
*
|
|
8971
|
+
* Ordering of this media within the variant (e.g. carousel order).
|
|
7113
8972
|
*/
|
|
7114
|
-
|
|
8973
|
+
position: number;
|
|
7115
8974
|
/**
|
|
7116
|
-
*
|
|
8975
|
+
* Per-variant crop, applied at publish; null = none.
|
|
7117
8976
|
*/
|
|
7118
|
-
|
|
8977
|
+
crop_box: {
|
|
8978
|
+
[key: string]: unknown;
|
|
8979
|
+
} | null;
|
|
7119
8980
|
/**
|
|
7120
|
-
*
|
|
8981
|
+
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
7121
8982
|
*/
|
|
7122
|
-
|
|
8983
|
+
alt_text_override: string | null;
|
|
8984
|
+
}>;
|
|
8985
|
+
} | {
|
|
8986
|
+
platform: 'instagram';
|
|
8987
|
+
post_type: 'single_image' | 'carousel' | 'reel';
|
|
8988
|
+
/**
|
|
8989
|
+
* Instagram organic post settings (feed image/carousel + reels).
|
|
8990
|
+
*/
|
|
8991
|
+
settings: {
|
|
7123
8992
|
/**
|
|
7124
|
-
*
|
|
8993
|
+
* Feed image, carousel, or reel. Defaults to IMAGE for a single image.
|
|
7125
8994
|
*/
|
|
7126
|
-
|
|
8995
|
+
media_type?: 'IMAGE' | 'CAROUSEL' | 'REELS';
|
|
7127
8996
|
/**
|
|
7128
|
-
*
|
|
8997
|
+
* Facebook Page id representing a location.
|
|
7129
8998
|
*/
|
|
7130
|
-
|
|
8999
|
+
location_id?: string;
|
|
7131
9000
|
/**
|
|
7132
|
-
*
|
|
9001
|
+
* Tag users on an image; x/y are fractional positions in [0,1].
|
|
7133
9002
|
*/
|
|
7134
|
-
|
|
7135
|
-
|
|
7136
|
-
|
|
7137
|
-
|
|
7138
|
-
|
|
7139
|
-
|
|
7140
|
-
|
|
7141
|
-
|
|
7142
|
-
|
|
7143
|
-
|
|
7144
|
-
|
|
7145
|
-
|
|
7146
|
-
|
|
7147
|
-
|
|
7148
|
-
|
|
7149
|
-
|
|
7150
|
-
|
|
7151
|
-
|
|
7152
|
-
|
|
7153
|
-
|
|
7154
|
-
|
|
7155
|
-
|
|
7156
|
-
|
|
7157
|
-
|
|
7158
|
-
|
|
7159
|
-
|
|
7160
|
-
|
|
7161
|
-
|
|
7162
|
-
|
|
7163
|
-
|
|
7164
|
-
|
|
7165
|
-
|
|
7166
|
-
|
|
7167
|
-
|
|
7168
|
-
|
|
7169
|
-
|
|
7170
|
-
|
|
7171
|
-
detail?: string;
|
|
7172
|
-
/**
|
|
7173
|
-
* The request id, for support and log correlation.
|
|
7174
|
-
*/
|
|
7175
|
-
request_id?: string;
|
|
7176
|
-
};
|
|
7177
|
-
/**
|
|
7178
|
-
* An RFC 9457 problem response.
|
|
7179
|
-
*/
|
|
7180
|
-
401: {
|
|
7181
|
-
/**
|
|
7182
|
-
* A URL to this code's documentation page.
|
|
7183
|
-
*/
|
|
7184
|
-
type: string;
|
|
7185
|
-
/**
|
|
7186
|
-
* A stable, human-readable summary of the error code.
|
|
7187
|
-
*/
|
|
7188
|
-
title: string;
|
|
7189
|
-
/**
|
|
7190
|
-
* The HTTP status code.
|
|
7191
|
-
*/
|
|
7192
|
-
status: number;
|
|
7193
|
-
/**
|
|
7194
|
-
* The machine-readable error code — branch on this. Narrowed to the codes this endpoint can return at this status.
|
|
7195
|
-
*/
|
|
7196
|
-
code: 'unauthorized';
|
|
7197
|
-
/**
|
|
7198
|
-
* An occurrence-specific, human-readable explanation.
|
|
7199
|
-
*/
|
|
7200
|
-
detail?: string;
|
|
7201
|
-
/**
|
|
7202
|
-
* The request id, for support and log correlation.
|
|
7203
|
-
*/
|
|
7204
|
-
request_id?: string;
|
|
7205
|
-
};
|
|
7206
|
-
/**
|
|
7207
|
-
* An RFC 9457 problem response.
|
|
7208
|
-
*/
|
|
7209
|
-
403: {
|
|
7210
|
-
/**
|
|
7211
|
-
* A URL to this code's documentation page.
|
|
7212
|
-
*/
|
|
7213
|
-
type: string;
|
|
7214
|
-
/**
|
|
7215
|
-
* A stable, human-readable summary of the error code.
|
|
7216
|
-
*/
|
|
7217
|
-
title: string;
|
|
7218
|
-
/**
|
|
7219
|
-
* The HTTP status code.
|
|
7220
|
-
*/
|
|
7221
|
-
status: number;
|
|
7222
|
-
/**
|
|
7223
|
-
* The machine-readable error code — branch on this. Narrowed to the codes this endpoint can return at this status.
|
|
7224
|
-
*/
|
|
7225
|
-
code: 'forbidden';
|
|
7226
|
-
/**
|
|
7227
|
-
* An occurrence-specific, human-readable explanation.
|
|
7228
|
-
*/
|
|
7229
|
-
detail?: string;
|
|
7230
|
-
/**
|
|
7231
|
-
* The request id, for support and log correlation.
|
|
7232
|
-
*/
|
|
7233
|
-
request_id?: string;
|
|
7234
|
-
};
|
|
7235
|
-
/**
|
|
7236
|
-
* An RFC 9457 problem response.
|
|
7237
|
-
*/
|
|
7238
|
-
404: {
|
|
7239
|
-
/**
|
|
7240
|
-
* A URL to this code's documentation page.
|
|
7241
|
-
*/
|
|
7242
|
-
type: string;
|
|
7243
|
-
/**
|
|
7244
|
-
* A stable, human-readable summary of the error code.
|
|
7245
|
-
*/
|
|
7246
|
-
title: string;
|
|
7247
|
-
/**
|
|
7248
|
-
* The HTTP status code.
|
|
7249
|
-
*/
|
|
7250
|
-
status: number;
|
|
7251
|
-
/**
|
|
7252
|
-
* The machine-readable error code — branch on this. Narrowed to the codes this endpoint can return at this status.
|
|
7253
|
-
*/
|
|
7254
|
-
code: 'not_found';
|
|
7255
|
-
/**
|
|
7256
|
-
* An occurrence-specific, human-readable explanation.
|
|
7257
|
-
*/
|
|
7258
|
-
detail?: string;
|
|
7259
|
-
/**
|
|
7260
|
-
* The request id, for support and log correlation.
|
|
7261
|
-
*/
|
|
7262
|
-
request_id?: string;
|
|
7263
|
-
};
|
|
7264
|
-
/**
|
|
7265
|
-
* An RFC 9457 problem response.
|
|
7266
|
-
*/
|
|
7267
|
-
409: {
|
|
7268
|
-
/**
|
|
7269
|
-
* A URL to this code's documentation page.
|
|
7270
|
-
*/
|
|
7271
|
-
type: string;
|
|
7272
|
-
/**
|
|
7273
|
-
* A stable, human-readable summary of the error code.
|
|
7274
|
-
*/
|
|
7275
|
-
title: string;
|
|
7276
|
-
/**
|
|
7277
|
-
* The HTTP status code.
|
|
7278
|
-
*/
|
|
7279
|
-
status: number;
|
|
7280
|
-
/**
|
|
7281
|
-
* The machine-readable error code — branch on this. Narrowed to the codes this endpoint can return at this status.
|
|
7282
|
-
*/
|
|
7283
|
-
code: 'conflict' | 'idempotency_request_in_progress';
|
|
7284
|
-
/**
|
|
7285
|
-
* An occurrence-specific, human-readable explanation.
|
|
7286
|
-
*/
|
|
7287
|
-
detail?: string;
|
|
7288
|
-
/**
|
|
7289
|
-
* The request id, for support and log correlation.
|
|
7290
|
-
*/
|
|
7291
|
-
request_id?: string;
|
|
7292
|
-
};
|
|
7293
|
-
/**
|
|
7294
|
-
* An RFC 9457 problem response.
|
|
7295
|
-
*/
|
|
7296
|
-
422: {
|
|
7297
|
-
/**
|
|
7298
|
-
* A URL to this code's documentation page.
|
|
7299
|
-
*/
|
|
7300
|
-
type: string;
|
|
7301
|
-
/**
|
|
7302
|
-
* A stable, human-readable summary of the error code.
|
|
7303
|
-
*/
|
|
7304
|
-
title: string;
|
|
7305
|
-
/**
|
|
7306
|
-
* The HTTP status code.
|
|
7307
|
-
*/
|
|
7308
|
-
status: number;
|
|
7309
|
-
/**
|
|
7310
|
-
* The machine-readable error code — branch on this. Narrowed to the codes this endpoint can return at this status.
|
|
7311
|
-
*/
|
|
7312
|
-
code: 'idempotency_key_reused' | 'invalid_connection' | 'invalid_media' | 'internal_error' | 'not_publishable';
|
|
7313
|
-
/**
|
|
7314
|
-
* An occurrence-specific, human-readable explanation.
|
|
7315
|
-
*/
|
|
7316
|
-
detail?: string;
|
|
7317
|
-
/**
|
|
7318
|
-
* The request id, for support and log correlation.
|
|
7319
|
-
*/
|
|
7320
|
-
request_id?: string;
|
|
7321
|
-
/**
|
|
7322
|
-
* The specific fields that failed validation or publish-readiness.
|
|
7323
|
-
*/
|
|
7324
|
-
errors?: Array<{
|
|
7325
|
-
/**
|
|
7326
|
-
* Dot-path to the invalid field, e.g. `variants.0.body`.
|
|
7327
|
-
*/
|
|
7328
|
-
field: string;
|
|
7329
|
-
/**
|
|
7330
|
-
* The validation or publish-readiness rule that failed.
|
|
7331
|
-
*/
|
|
7332
|
-
code: string;
|
|
7333
|
-
/**
|
|
7334
|
-
* What is wrong with this field.
|
|
7335
|
-
*/
|
|
7336
|
-
detail: string;
|
|
9003
|
+
user_tags?: Array<{
|
|
9004
|
+
/**
|
|
9005
|
+
* IG username to tag.
|
|
9006
|
+
*/
|
|
9007
|
+
username: string;
|
|
9008
|
+
/**
|
|
9009
|
+
* Horizontal position on the image, in [0,1].
|
|
9010
|
+
*/
|
|
9011
|
+
x: number;
|
|
9012
|
+
/**
|
|
9013
|
+
* Vertical position on the image, in [0,1].
|
|
9014
|
+
*/
|
|
9015
|
+
y: number;
|
|
9016
|
+
}>;
|
|
9017
|
+
/**
|
|
9018
|
+
* ≤3 co-author usernames.
|
|
9019
|
+
*/
|
|
9020
|
+
collaborators?: Array<string>;
|
|
9021
|
+
/**
|
|
9022
|
+
* Reel also appears in the main feed.
|
|
9023
|
+
*/
|
|
9024
|
+
share_to_feed?: boolean;
|
|
9025
|
+
/**
|
|
9026
|
+
* Reel cover frame offset (ms).
|
|
9027
|
+
*/
|
|
9028
|
+
thumb_offset?: number;
|
|
9029
|
+
/**
|
|
9030
|
+
* Custom reel cover image URL.
|
|
9031
|
+
*/
|
|
9032
|
+
cover_url?: string;
|
|
9033
|
+
/**
|
|
9034
|
+
* Label for the reel's original audio.
|
|
9035
|
+
*/
|
|
9036
|
+
audio_name?: string;
|
|
9037
|
+
};
|
|
9038
|
+
id: string;
|
|
9039
|
+
object: 'post_variant';
|
|
7337
9040
|
/**
|
|
7338
|
-
*
|
|
9041
|
+
* The connected account this variant publishes to. null when that connection was removed (disconnected) — the variant then fails at publish time with a `connection_removed` error; reconnect + reschedule to resume.
|
|
7339
9042
|
*/
|
|
7340
|
-
|
|
9043
|
+
connection_id: string | null;
|
|
9044
|
+
body: string | null;
|
|
9045
|
+
status: 'draft' | 'scheduled' | 'publishing' | 'published' | 'failed';
|
|
7341
9046
|
/**
|
|
7342
|
-
*
|
|
9047
|
+
* Per-variant schedule override (ISO-8601); null inherits the post.
|
|
7343
9048
|
*/
|
|
7344
|
-
|
|
9049
|
+
schedule_at: string | null;
|
|
9050
|
+
result: {
|
|
9051
|
+
platform_post_id: string;
|
|
9052
|
+
permalink: string | null;
|
|
9053
|
+
published_at: string;
|
|
9054
|
+
} | null;
|
|
9055
|
+
error: {
|
|
9056
|
+
code: string;
|
|
9057
|
+
message: string;
|
|
9058
|
+
/**
|
|
9059
|
+
* A short, friendly end-user line for `code` (render verbatim). `message` stays developer-grade; this is the display string.
|
|
9060
|
+
*/
|
|
9061
|
+
display_error: string;
|
|
9062
|
+
} | null;
|
|
9063
|
+
media: Array<{
|
|
9064
|
+
media_id: string;
|
|
9065
|
+
/**
|
|
9066
|
+
* Ordering of this media within the variant (e.g. carousel order).
|
|
9067
|
+
*/
|
|
9068
|
+
position: number;
|
|
9069
|
+
/**
|
|
9070
|
+
* Per-variant crop, applied at publish; null = none.
|
|
9071
|
+
*/
|
|
9072
|
+
crop_box: {
|
|
9073
|
+
[key: string]: unknown;
|
|
9074
|
+
} | null;
|
|
9075
|
+
/**
|
|
9076
|
+
* Per-variant alt text; falls back to the asset’s alt_text.
|
|
9077
|
+
*/
|
|
9078
|
+
alt_text_override: string | null;
|
|
9079
|
+
}>;
|
|
9080
|
+
} | {
|
|
9081
|
+
platform: 'tiktok';
|
|
9082
|
+
post_type: 'video' | 'single_image' | 'carousel';
|
|
7345
9083
|
/**
|
|
7346
|
-
*
|
|
9084
|
+
* TikTok organic post settings (Direct Post: video + photo).
|
|
7347
9085
|
*/
|
|
7348
|
-
|
|
7349
|
-
|
|
7350
|
-
|
|
7351
|
-
|
|
7352
|
-
|
|
7353
|
-
|
|
7354
|
-
|
|
7355
|
-
|
|
7356
|
-
|
|
7357
|
-
|
|
7358
|
-
|
|
7359
|
-
|
|
7360
|
-
|
|
7361
|
-
|
|
7362
|
-
|
|
7363
|
-
|
|
7364
|
-
|
|
7365
|
-
|
|
7366
|
-
|
|
7367
|
-
|
|
7368
|
-
|
|
7369
|
-
|
|
7370
|
-
|
|
7371
|
-
|
|
7372
|
-
|
|
7373
|
-
|
|
7374
|
-
|
|
7375
|
-
|
|
7376
|
-
|
|
7377
|
-
|
|
7378
|
-
|
|
7379
|
-
|
|
7380
|
-
|
|
7381
|
-
|
|
7382
|
-
|
|
7383
|
-
|
|
7384
|
-
|
|
7385
|
-
|
|
7386
|
-
|
|
7387
|
-
|
|
7388
|
-
|
|
7389
|
-
|
|
7390
|
-
external_id: string | null;
|
|
7391
|
-
/**
|
|
7392
|
-
* Derived rollup of the variants’ statuses (never set directly).
|
|
7393
|
-
*/
|
|
7394
|
-
status: 'draft' | 'scheduled' | 'publishing' | 'partially_published' | 'published' | 'failed';
|
|
7395
|
-
/**
|
|
7396
|
-
* Shared schedule (ISO-8601). null = draft/publish-now.
|
|
7397
|
-
*/
|
|
7398
|
-
schedule_at: string | null;
|
|
7399
|
-
tags: Array<string>;
|
|
7400
|
-
notes: string | null;
|
|
7401
|
-
/**
|
|
7402
|
-
* Customer-owned key/value context, returned on reads and filterable on list endpoints (exact match). Values are scalars: string (≤500 chars), number, or boolean. At most 50 keys; keys ≤40 chars; total serialized JSON must fit in 16 KiB. Arrays and nested objects are out of scope for v1 (kept out to keep the contract scalar + exact-match). Keep a key’s value type consistent across records — filtering matches type-exactly. Never derive auth/scopes from metadata.
|
|
7403
|
-
*/
|
|
7404
|
-
metadata: {
|
|
7405
|
-
[key: string]: string | number | boolean;
|
|
7406
|
-
};
|
|
7407
|
-
variants: Array<{
|
|
9086
|
+
settings: {
|
|
9087
|
+
/**
|
|
9088
|
+
* Audience for the post. The per-account allowed set is returned by creator_info at publish; an out-of-set value is rejected then. Unaudited apps may only use SELF_ONLY.
|
|
9089
|
+
*/
|
|
9090
|
+
privacy_level?: 'PUBLIC_TO_EVERYONE' | 'MUTUAL_FOLLOW_FRIENDS' | 'FOLLOWER_OF_CREATOR' | 'SELF_ONLY';
|
|
9091
|
+
/**
|
|
9092
|
+
* Disable comments on this post.
|
|
9093
|
+
*/
|
|
9094
|
+
disable_comment?: boolean;
|
|
9095
|
+
/**
|
|
9096
|
+
* Disable Duet (video only).
|
|
9097
|
+
*/
|
|
9098
|
+
disable_duet?: boolean;
|
|
9099
|
+
/**
|
|
9100
|
+
* Disable Stitch (video only).
|
|
9101
|
+
*/
|
|
9102
|
+
disable_stitch?: boolean;
|
|
9103
|
+
/**
|
|
9104
|
+
* Video cover frame offset (ms). Video posts only.
|
|
9105
|
+
*/
|
|
9106
|
+
video_cover_timestamp_ms?: number;
|
|
9107
|
+
/**
|
|
9108
|
+
* Which carousel image is the cover (0-based index into the ordered image list). Photo posts only.
|
|
9109
|
+
*/
|
|
9110
|
+
photo_cover_index?: number;
|
|
9111
|
+
/**
|
|
9112
|
+
* Auto-add a TikTok soundtrack. Photo posts only.
|
|
9113
|
+
*/
|
|
9114
|
+
auto_add_music?: boolean;
|
|
9115
|
+
/**
|
|
9116
|
+
* Disclose a paid partnership (branded content).
|
|
9117
|
+
*/
|
|
9118
|
+
brand_content_toggle?: boolean;
|
|
9119
|
+
/**
|
|
9120
|
+
* Disclose own-brand promotional content.
|
|
9121
|
+
*/
|
|
9122
|
+
brand_organic_toggle?: boolean;
|
|
9123
|
+
/**
|
|
9124
|
+
* Disclose AI-generated content. Video posts only.
|
|
9125
|
+
*/
|
|
9126
|
+
is_aigc?: boolean;
|
|
9127
|
+
};
|
|
7408
9128
|
id: string;
|
|
7409
9129
|
object: 'post_variant';
|
|
7410
9130
|
/**
|
|
7411
9131
|
* The connected account this variant publishes to. null when that connection was removed (disconnected) — the variant then fails at publish time with a `connection_removed` error; reconnect + reschedule to resume.
|
|
7412
9132
|
*/
|
|
7413
9133
|
connection_id: string | null;
|
|
7414
|
-
platform: 'x' | 'linkedin' | 'facebook_page' | 'instagram' | 'tiktok';
|
|
7415
|
-
post_type: 'text' | 'single_image' | 'multi_image' | 'video' | 'reel' | 'carousel';
|
|
7416
9134
|
body: string | null;
|
|
7417
9135
|
status: 'draft' | 'scheduled' | 'publishing' | 'published' | 'failed';
|
|
7418
|
-
/**
|
|
7419
|
-
* Native per-platform settings, as stored.
|
|
7420
|
-
*/
|
|
7421
|
-
settings: {
|
|
7422
|
-
[key: string]: unknown;
|
|
7423
|
-
};
|
|
7424
9136
|
/**
|
|
7425
9137
|
* Per-variant schedule override (ISO-8601); null inherits the post.
|
|
7426
9138
|
*/
|
|
@@ -7487,30 +9199,6 @@ type PostsValidateData = {
|
|
|
7487
9199
|
variants: Array<{
|
|
7488
9200
|
platform: 'x';
|
|
7489
9201
|
post_type: 'text' | 'single_image' | 'multi_image' | 'video';
|
|
7490
|
-
/**
|
|
7491
|
-
* The connected account this variant publishes to.
|
|
7492
|
-
*/
|
|
7493
|
-
connection_id: string;
|
|
7494
|
-
/**
|
|
7495
|
-
* Caption / commentary / message for the post.
|
|
7496
|
-
*/
|
|
7497
|
-
body?: string;
|
|
7498
|
-
/**
|
|
7499
|
-
* Ordered media references; the count drives the post-type rules.
|
|
7500
|
-
*/
|
|
7501
|
-
media?: Array<{
|
|
7502
|
-
media_id: string;
|
|
7503
|
-
/**
|
|
7504
|
-
* Per-variant crop applied at publish; omit for none.
|
|
7505
|
-
*/
|
|
7506
|
-
crop_box?: {
|
|
7507
|
-
[key: string]: unknown;
|
|
7508
|
-
} | null;
|
|
7509
|
-
/**
|
|
7510
|
-
* Per-variant alt text; falls back to the asset's.
|
|
7511
|
-
*/
|
|
7512
|
-
alt_text_override?: string | null;
|
|
7513
|
-
}>;
|
|
7514
9202
|
/**
|
|
7515
9203
|
* X (Twitter) organic post settings.
|
|
7516
9204
|
*/
|
|
@@ -7580,9 +9268,6 @@ type PostsValidateData = {
|
|
|
7580
9268
|
*/
|
|
7581
9269
|
media_tagged_user_ids?: Array<string>;
|
|
7582
9270
|
};
|
|
7583
|
-
} | {
|
|
7584
|
-
platform: 'linkedin';
|
|
7585
|
-
post_type: 'text' | 'single_image' | 'multi_image' | 'video';
|
|
7586
9271
|
/**
|
|
7587
9272
|
* The connected account this variant publishes to.
|
|
7588
9273
|
*/
|
|
@@ -7607,6 +9292,9 @@ type PostsValidateData = {
|
|
|
7607
9292
|
*/
|
|
7608
9293
|
alt_text_override?: string | null;
|
|
7609
9294
|
}>;
|
|
9295
|
+
} | {
|
|
9296
|
+
platform: 'linkedin';
|
|
9297
|
+
post_type: 'text' | 'single_image' | 'multi_image' | 'video';
|
|
7610
9298
|
/**
|
|
7611
9299
|
* LinkedIn personal member post settings.
|
|
7612
9300
|
*/
|
|
@@ -7688,9 +9376,6 @@ type PostsValidateData = {
|
|
|
7688
9376
|
urn: string;
|
|
7689
9377
|
}>;
|
|
7690
9378
|
};
|
|
7691
|
-
} | {
|
|
7692
|
-
platform: 'instagram';
|
|
7693
|
-
post_type: 'single_image' | 'carousel' | 'reel';
|
|
7694
9379
|
/**
|
|
7695
9380
|
* The connected account this variant publishes to.
|
|
7696
9381
|
*/
|
|
@@ -7715,6 +9400,9 @@ type PostsValidateData = {
|
|
|
7715
9400
|
*/
|
|
7716
9401
|
alt_text_override?: string | null;
|
|
7717
9402
|
}>;
|
|
9403
|
+
} | {
|
|
9404
|
+
platform: 'instagram';
|
|
9405
|
+
post_type: 'single_image' | 'carousel' | 'reel';
|
|
7718
9406
|
/**
|
|
7719
9407
|
* Instagram organic post settings (feed image/carousel + reels).
|
|
7720
9408
|
*/
|
|
@@ -7765,9 +9453,6 @@ type PostsValidateData = {
|
|
|
7765
9453
|
*/
|
|
7766
9454
|
audio_name?: string;
|
|
7767
9455
|
};
|
|
7768
|
-
} | {
|
|
7769
|
-
platform: 'facebook_page';
|
|
7770
|
-
post_type: 'text' | 'single_image' | 'multi_image' | 'reel';
|
|
7771
9456
|
/**
|
|
7772
9457
|
* The connected account this variant publishes to.
|
|
7773
9458
|
*/
|
|
@@ -7792,6 +9477,9 @@ type PostsValidateData = {
|
|
|
7792
9477
|
*/
|
|
7793
9478
|
alt_text_override?: string | null;
|
|
7794
9479
|
}>;
|
|
9480
|
+
} | {
|
|
9481
|
+
platform: 'facebook_page';
|
|
9482
|
+
post_type: 'text' | 'single_image' | 'multi_image' | 'reel';
|
|
7795
9483
|
/**
|
|
7796
9484
|
* Facebook Page organic post settings.
|
|
7797
9485
|
*/
|
|
@@ -7801,9 +9489,6 @@ type PostsValidateData = {
|
|
|
7801
9489
|
*/
|
|
7802
9490
|
link?: string;
|
|
7803
9491
|
};
|
|
7804
|
-
} | {
|
|
7805
|
-
platform: 'tiktok';
|
|
7806
|
-
post_type: 'video' | 'single_image' | 'carousel';
|
|
7807
9492
|
/**
|
|
7808
9493
|
* The connected account this variant publishes to.
|
|
7809
9494
|
*/
|
|
@@ -7828,6 +9513,9 @@ type PostsValidateData = {
|
|
|
7828
9513
|
*/
|
|
7829
9514
|
alt_text_override?: string | null;
|
|
7830
9515
|
}>;
|
|
9516
|
+
} | {
|
|
9517
|
+
platform: 'tiktok';
|
|
9518
|
+
post_type: 'video' | 'single_image' | 'carousel';
|
|
7831
9519
|
/**
|
|
7832
9520
|
* TikTok organic post settings (Direct Post: video + photo).
|
|
7833
9521
|
*/
|
|
@@ -7873,6 +9561,30 @@ type PostsValidateData = {
|
|
|
7873
9561
|
*/
|
|
7874
9562
|
is_aigc?: boolean;
|
|
7875
9563
|
};
|
|
9564
|
+
/**
|
|
9565
|
+
* The connected account this variant publishes to.
|
|
9566
|
+
*/
|
|
9567
|
+
connection_id: string;
|
|
9568
|
+
/**
|
|
9569
|
+
* Caption / commentary / message for the post.
|
|
9570
|
+
*/
|
|
9571
|
+
body?: string;
|
|
9572
|
+
/**
|
|
9573
|
+
* Ordered media references; the count drives the post-type rules.
|
|
9574
|
+
*/
|
|
9575
|
+
media?: Array<{
|
|
9576
|
+
media_id: string;
|
|
9577
|
+
/**
|
|
9578
|
+
* Per-variant crop applied at publish; omit for none.
|
|
9579
|
+
*/
|
|
9580
|
+
crop_box?: {
|
|
9581
|
+
[key: string]: unknown;
|
|
9582
|
+
} | null;
|
|
9583
|
+
/**
|
|
9584
|
+
* Per-variant alt text; falls back to the asset's.
|
|
9585
|
+
*/
|
|
9586
|
+
alt_text_override?: string | null;
|
|
9587
|
+
}>;
|
|
7876
9588
|
}>;
|
|
7877
9589
|
};
|
|
7878
9590
|
path?: never;
|