ai

POST /v1/ai/recipes

Create an AI posting recipe.

Alle ai-eindpunten

Authenticatie

Stuur een API-sleutel mee als bearer token. De sleutel moet over de permissie links.edit beschikken; een sleutel zonder deze permissie wordt geweigerd met een 403 in plaats van een 404.

Waar je organisatie-id komt te staan

Dit eindpunt verwacht org_id als een veld in de JSON-body.

Uw organisatie-id staat op het scherm met API-sleutels in uw dashboard, naast de sleutel zelf. Dit is in elke aanroep die u doet dezelfde id.

Probeer het

Vervang alles tussen punthaakjes door uw eigen waarden en de sleutelplaatsvervanger door een sleutel uit uw dashboard.

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

Ingelogd? De API-console in je dashboard vult je echte organisatie-id en je eigen sleutel in, en voert het verzoek uit tegen de live API zodat je de daadwerkelijke respons kunt zien. Open dit eindpunt in de API-console

Details

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

Aanvraaglichaam

NaamTypeVerplichtWat dit is
namestringJa
is_enabledbooleanNee
briefstringNee
tonestringNee
word_countintegerNee
languagestringNee
posts_per_runintegerNee
providerstringNee
model_idstringNee
model_familystringNee
anchorsAiAnchor[]Nee
anchor_policystring<none, every_post, rotate>Nee
link_set_idstringNeeThe 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>Nee
cadence_hour_utcintegerNee
cadence_dowintegerNee
cadence_domintegerNee
target_kindstring<none, sites, site_group, cms_targets>Nee
target_sitesstring[]Nee
target_site_group_idobjectNee
target_cms_target_idsstring[]Nee
target_categorystringNee
requires_capabilitiesstring[]Nee
capability_policystring<refuse, degrade, ask>Nee
image_providerstringNee
image_modelstringNee
featured_imagebooleanNee
inline_image_countintegerNee
inline_placementstring<after_intro, between_sections, end>Nee
image_stylestringNee
publish_modestring<draft, schedule, publish>Nee
schedule_offset_hoursintegerNee
schedule_stagger_minutesintegerNee
org_idUuidNeeUUIDv7 identifier — sortable by creation time (docs/02 §8).

Reactie

NaamTypeVerplichtWat dit is
idUuidJaUUIDv7 identifier — sortable by creation time (docs/02 §8).
namestringJa
is_enabledbooleanJa
briefstringNee
tonestringNee
word_countintegerNee
languagestringNeeBCP-47, or empty for "the language the brief is written in".
posts_per_runintegerNee⛔ 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.
providerstringNeeBlank = whatever the funding route resolves to.
model_idstringNeeBlank = the newest verified model in the family.
model_familystringNee
anchorsAiAnchor[]Nee
anchor_policystring<none, every_post, rotate>Nee
link_set_idstringNeeThe 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>Ja
cadence_hour_utcintegerNee
cadence_dowintegerNee0 = Monday.
cadence_domintegerNee⛔ 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_atobjectNee
last_run_atobjectNee
target_kindstring<none, sites, site_group, cms_targets>Nee
target_sitesstring[]Nee
target_site_group_idobjectNee
target_cms_target_idsstring[]Nee
target_categorystringNee
requires_capabilitiesstring[]NeeCapability 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>NeeWhat 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_providerstringNee
image_modelstringNee
featured_imagebooleanNee
inline_image_countintegerNee
inline_placementstring<after_intro, between_sections, end>Nee
image_stylestringNee
publish_modestring<draft, schedule, publish>Ja⚖️ 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_hoursintegerNee
schedule_stagger_minutesintegerNeeMinutes between consecutive posts in one run. ⛔ Not cosmetic: a network whose articles all appear in the same minute is a footprint.
blocking_providersstring[]NeeProviders 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_atstringJa
updated_atstringNee

Fouten die dit eindpunt kan retourneren

401 · 403 · 422 · 429