ai

POST /v1/ai/recipes

Create an AI posting recipe.

Tutti gli endpoint ai

Autenticazione

Invia una chiave API come token di tipo bearer. La chiave deve disporre dell'autorizzazione links.edit; una chiave sprovvista di tale autorizzazione viene rifiutata con 403 anziché 404.

L'ID della tua organizzazione va qui

Questo endpoint accetta org_id come campo nel corpo JSON.

L'identificativo della tua organizzazione si trova nella schermata delle chiavi API nella tua dashboard, accanto alla chiave stessa. È lo stesso identificativo in ogni chiamata che effettui.

Provalo

Sostituisci qualsiasi elemento tra parentesi angolari con i tuoi valori e il segnaposto key con una chiave dalla tua dashboard.

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

Hai effettuato l'accesso? La console API nella tua dashboard inserisce il tuo ID organizzazione reale e la tua chiave personale, ed esegue la richiesta sull'API live in modo da poter vedere la risposta effettiva. Apri questo endpoint nella console API

Dettagli

⛔ 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.

Corpo della richiesta

NomeTipoObbligatorioChe cos'è
namestring
is_enabledbooleanNo
briefstringNo
tonestringNo
word_countintegerNo
languagestringNo
posts_per_runintegerNo
providerstringNo
model_idstringNo
model_familystringNo
anchorsAiAnchor[]No
anchor_policystring<none, every_post, rotate>No
link_set_idstringNoThe 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>No
cadence_hour_utcintegerNo
cadence_dowintegerNo
cadence_domintegerNo
target_kindstring<none, sites, site_group, cms_targets>No
target_sitesstring[]No
target_site_group_idobjectNo
target_cms_target_idsstring[]No
target_categorystringNo
requires_capabilitiesstring[]No
capability_policystring<refuse, degrade, ask>No
image_providerstringNo
image_modelstringNo
featured_imagebooleanNo
inline_image_countintegerNo
inline_placementstring<after_intro, between_sections, end>No
image_stylestringNo
publish_modestring<draft, schedule, publish>No
schedule_offset_hoursintegerNo
schedule_stagger_minutesintegerNo
org_idUuidNoUUIDv7 identifier — sortable by creation time (docs/02 §8).

Risposta

NomeTipoObbligatorioChe cos'è
idUuidUUIDv7 identifier — sortable by creation time (docs/02 §8).
namestring
is_enabledboolean
briefstringNo
tonestringNo
word_countintegerNo
languagestringNoBCP-47, or empty for "the language the brief is written in".
posts_per_runintegerNo⛔ 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.
providerstringNoBlank = whatever the funding route resolves to.
model_idstringNoBlank = the newest verified model in the family.
model_familystringNo
anchorsAiAnchor[]No
anchor_policystring<none, every_post, rotate>No
link_set_idstringNoThe 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_utcintegerNo
cadence_dowintegerNo0 = Monday.
cadence_domintegerNo⛔ 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_atobjectNo
last_run_atobjectNo
target_kindstring<none, sites, site_group, cms_targets>No
target_sitesstring[]No
target_site_group_idobjectNo
target_cms_target_idsstring[]No
target_categorystringNo
requires_capabilitiesstring[]NoCapability 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>NoWhat 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_providerstringNo
image_modelstringNo
featured_imagebooleanNo
inline_image_countintegerNo
inline_placementstring<after_intro, between_sections, end>No
image_stylestringNo
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_hoursintegerNo
schedule_stagger_minutesintegerNoMinutes between consecutive posts in one run. ⛔ Not cosmetic: a network whose articles all appear in the same minute is a footprint.
blocking_providersstring[]NoProviders 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_atstringNo

Errori che questo endpoint può restituire

401 · 403 · 422 · 429