Add many posts
add_postsAdd up to 30 posts to a campaign in one call: each item is add_post's (date, time, caption, hashtags, link_url, media_asset_id, angle) on one lane or several (lanes: the same post on each, one post per lane). Answers with each new post's post_id and whether it is ready to schedule, not the whole post. Use it instead of add_post when there is more than one. With schedule true (only when the artist has allowed this connection to schedule) they are scheduled in the same call: dry_run first for the cost, tell the artist, then call with confirm_cost_credits; a TikTok post also needs tiktok, the artist's own choice of who can see it. Posts the schedule refuses stay drafts, each with the reason.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"campaign_id": "<campaign_id>",
"posts": "<posts>"
},
"name": "add_posts"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| posts | Yes | The posts, at most 30 counting one per lane. | |
| artist | No | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. | |
| tiktok | No | The artist's choice for every TikTok post in this call, as schedule_posts' choices.tiktok. Required when scheduling a TikTok post. | |
| dry_run | No | True to check the call and see what it would do, without writing anything. | |
| schedule | No | Schedule them in the same call. Needs the schedule permission and confirm_cost_credits. | |
| campaign_id | Yes | From list_campaigns. | |
| idempotency_key | No | Send the same key if you retry, and the change happens once. | |
| confirm_cost_credits | No | With schedule: the credits a dry run quoted and you told the artist. |