links
POST /v1/content/campaigns/plan
Price and preview a campaign without creating it.
身份验证
请将 API 密钥作为 bearer 令牌发送。此端点在规范中未指明具体的权限,因此请为您的密钥赋予所需的最小权限,并通过检查响应来确认,而不是盲目假设。
您的组织 ID 应填在此处
此端点将 org_id 作为查询参数。不填则调用涵盖您的整个租户子树;发送该参数则将调用范围缩小到一个组织。
您的组织ID位于控制面板的API密钥屏幕上,就在密钥本身的旁边。这是您在每次调用时使用的相同ID。
免费试用
将尖括号中的内容替换为您自己的值,并将键占位符替换为您仪表板中的一个键。
curl -X POST https://api.zinndigital.com/v1/content/campaigns/plan \
-H "Authorization: Bearer zdk_live_…" \
-H "Content-Type: application/json" \
-d '{ "brief": <string>, "posts": <integer> }'已登录?您仪表板中的 API 控制台会自动填入您真实的组织 ID 和您自己的密钥,并针对实时 API 运行请求,以便您查看实际的响应。 在 API 控制台中打开此端点
详细信息
Resolves the target sites — named ones, or a site group expanded at this moment rather than remembered — lays the articles out across the drip window, and returns the whole schedule with the number of articles and publications it will produce. Creates nothing. Gated on links.edit. ⚖️ The customer sees this before every campaign, not only above a spending threshold (owner ruling, 2026-09-08). total_placements is the honest size: twelve articles across twenty sites is two hundred and forty publications, and quoting total_articles alone understates the work and the spend by the number of sites. targets.skipped_not_publishable is always present, including at zero — "12 sites" and "12 of your 40 sites" need different actions from the customer.
参数
| 名称 | 类型 | 必填 | 内容简介 |
|---|---|---|---|
org_id (query) | string | 否 | Narrow to one organisation. A reseller managing several client organisations reads the wrong one without it — and on a footprint-free network, another operator's posting schedule… |
请求正文
| 名称 | 类型 | 必填 | 内容简介 |
|---|---|---|---|
brief | string | 是 | The standing instruction — voice, audience, what the sites are about. |
posts | integer | 是 | How many ARTICLES to write. Each is placed on every target site, so the number of publications is this times the site count. |
topics | string[] | 否 | One subject per article, so N articles are N articles rather than N paraphrases. A shorter list cycles; an empty one means the brief alone. |
site_ids | string[] | 否 | — |
site_group_id | string | 否 | A site group, resolved when the campaign is created rather than copied. A recurring schedule pointed at a group re-resolves it on every firing, so sites added later are… |
drip_days | integer | 否 | Spread the articles across this many days. 0 publishes them together. |
drip_jitter_minutes | integer | 否 | Randomise each moment by up to this many minutes either way. Perfectly even spacing is more detectable than posting all at once — nothing a person does is that regular — so this… |
anchors | ContentRunAnchor[] | 否 | — |
category | string | 否 | — |
publish_policy | ContentRunPublishPolicy | 否 | How far a run may go on its own. draft_only is the default and puts nothing live. |
recipe_id | string | 否 | — |
响应
| 名称 | 类型 | 必填 | 内容简介 |
|---|---|---|---|
campaign_id | string | 是 | — |
targets | ContentCampaignTargets | 是 | — |
posts | ContentCampaignPlannedPost[] | 是 | — |
total_articles | integer | 是 | Articles written. One per topic. |
total_placements | integer | 是 | Individual publications — articles times sites. The number that reads as "how much am I about to do", and the one the spend estimate is built on. |
first_at | string | 否 | — |
last_at | string | 否 | — |
此端点可能返回的错误
401 · 403 · 404 · 422