ConceptsPlatform API v1

Content Loops

Repeat a useful Project workflow on a daily, weekly, or monthly schedule without inventing a second generation model.

One persistent request

A Loop stores a Project, input, Asset requests, schedule, and per-run maximum. A scheduled or manual Run resolves fresh qualified input, then creates an ordinary Generation under the frozen Loop configuration.

Create a weekly Loop
ts
const loop = await client.contentLoops.create({
  project_id: project.id,
  input: {
    type: 'trend',
    lookback_days: 7,
  },
  assets: [{ asset_type: 'podcast_episode' }],
  schedule: {
    frequency: 'weekly',
    day_of_week: 'monday',
    local_time: '09:00',
    timezone: 'Europe/Madrid',
  },
  max_cost_per_run_usd: '10.00',
  max_cost_per_month_usd: '40.00',
})

Budgets and blocked Runs

per_run_max_cost_usd is a hard ceiling. The service previews each Run before acceptance. Budget, billing, configuration, and no-qualified-input outcomes are represented as Run states; they do not produce partial hidden work.

Operate safely

  • Pause and resume by updating status.
  • Trigger an immediate Run with its own Idempotency-Key.
  • Inspect Run history and the linked Generation.
  • Archive the Loop when it should never schedule again.
  • Send topic feedback so future qualification can avoid repetition.