ai

POST /v1/ai/recipes

Create an AI posting recipe.

Усі кінцеві точки ai

Автентифікація

Надішліть ключ API як маркер носія (bearer token). Ключ повинен мати дозвіл links.edit; ключ без нього відхиляється з кодом 403, а не 404.

Де вказується ідентифікатор вашої організації

Цей ендпоінт приймає org_id як поле в тілі JSON.

Ідентифікатор вашої організації знаходиться на екрані API-ключів у вашій панелі керування, поруч із самим ключем. Це той самий ідентифікатор у кожному вашому запиті.

Спробувати

Замініть усе в кутових дужках власними значеннями, а заповнювач ключа — ключем із вашої панелі керування.

curl -X POST https://api.zinndigital.com/v1/ai/recipes \
  -H "Authorization: Bearer zdk_live_…" \
  -H "Content-Type: application/json" \
  -d '{ "name": <string> }'

Увійшли в систему? Консоль API у вашій панелі керування автоматично підставляє ваш реальний ідентифікатор організації та ваш власний ключ, а також виконує запит до робочого API, щоб ви могли побачити справжню відповідь. Відкрийте цю кінцеву точку в консолі API

Деталі

⛔ Bounds are enforced at **authoring** time, not at run time: more than five anchors or more than ten posts per run would be refused on every run, so a recipe saved with them would look fine, sit on a schedule, and fail silently every night. Requires `links.edit` — the same key as writing a post by hand, because that is what this is.

Тіло запиту

НазваТипОбов'язковеЩо це таке
namestringТак
is_enabledbooleanНі
briefstringНі
tonestringНі
word_countintegerНі
languagestringНі
posts_per_runintegerНі
providerstringНі
model_idstringНі
model_familystringНі
anchorsAiAnchor[]Ні
anchor_policystring<none, every_post, rotate>Ні
link_set_idstringНіThe reusable link set this recipe draws its links from, or `null` to use the recipe's own `anchors`. When set it **replaces** `anchors` rather than adding to them — two sources…
cadencestring<manual, daily, weekly, monthly>Ні
cadence_hour_utcintegerНі
cadence_dowintegerНі
cadence_domintegerНі
target_kindstring<none, sites, site_group, cms_targets>Ні
target_sitesstring[]Ні
target_site_group_idobjectНі
target_cms_target_idsstring[]Ні
target_categorystringНі
requires_capabilitiesstring[]Ні
capability_policystring<refuse, degrade, ask>Ні
image_providerstringНі
image_modelstringНі
featured_imagebooleanНі
inline_image_countintegerНі
inline_placementstring<after_intro, between_sections, end>Ні
image_stylestringНі
publish_modestring<draft, schedule, publish>Ні
schedule_offset_hoursintegerНі
schedule_stagger_minutesintegerНі
org_idUuidНіUUIDv7 identifier — sortable by creation time (docs/02 §8).

Відповідь

НазваТипОбов'язковеЩо це таке
idUuidТакUUIDv7 identifier — sortable by creation time (docs/02 §8).
namestringТак
is_enabledbooleanТак
briefstringНі
tonestringНі
word_countintegerНі
languagestringНіBCP-47, or empty for "the language the brief is written in".
posts_per_runintegerНі⛔ Capped at 10. Two hundred articles from one brief are two hundred near-identical articles, which is a **footprint** — the exact thing the Footprint-Free line is sold to avoid.
providerstringНіBlank = whatever the funding route resolves to.
model_idstringНіBlank = the newest verified model in the family.
model_familystringНі
anchorsAiAnchor[]Ні
anchor_policystring<none, every_post, rotate>Ні
link_set_idstringНіThe reusable link set this recipe draws its links from, or `null` to use the recipe's own `anchors`. When set it **replaces** `anchors` rather than adding to them — two sources…
cadencestring<manual, daily, weekly, monthly>Так
cadence_hour_utcintegerНі
cadence_dowintegerНі0 = Monday.
cadence_domintegerНі⛔ Never 29-31: a monthly recipe set to the 31st would skip February silently, and a schedule that stops without an error is the failure this feature prevents.
next_run_atobjectНі
last_run_atobjectНі
target_kindstring<none, sites, site_group, cms_targets>Ні
target_sitesstring[]Ні
target_site_group_idobjectНі
target_cms_target_idsstring[]Ні
target_categorystringНі
requires_capabilitiesstring[]НіCapability ids the target must support, e.g. `cms_target:featured_image`. Enforced on every run: each site's capabilities are read from its CMS target and any shortfall is handl…
capability_policystring<refuse, degrade, ask>НіWhat to do when a target cannot do something the recipe requires. Default `refuse` — silently dropping a requested field is the failure this exists to stop. `refuse` skips that…
image_providerstringНі
image_modelstringНі
featured_imagebooleanНі
inline_image_countintegerНі
inline_placementstring<after_intro, between_sections, end>Ні
image_stylestringНі
publish_modestring<draft, schedule, publish>Так⚖️ Owner ruling 2026-08-20: a **per-recipe** switch defaulting to `draft`. `draft` writes into the library and schedules nothing; `schedule` queues placements the customer can s…
schedule_offset_hoursintegerНі
schedule_stagger_minutesintegerНіMinutes between consecutive posts in one run. ⛔ Not cosmetic: a network whose articles all appear in the same minute is a footprint.
blocking_providersstring[]НіProviders this recipe needs a working key for and does not have. Empty means it can run now. ⚖️ A recipe naming no provider is never blocked — credits are the default route and…
created_atstringТак
updated_atstringНі

Помилки, які може повертати ця кінцева точка

401 · 403 · 422 · 429