RODEO

Beats Resource

Beat management within scenes

Beats are created via scenes.create() or the scene builder. These methods manage beats on draft scenes individually.

Access

const scene = await rodeo.scenes.get("scene-uuid");
const beats = scene.beats;

Input

interface BeatInput {
  sequence: number;
  channel_id: string;
  content: Record<string, unknown>;
  agent_proxy?: string;
  tone: {
    warmth: "cool" | "warm" | "familiar" | "intimate";
    urgency: "none" | "gentle" | "present" | "pressing";
    ask: "none" | "implicit" | "soft" | "direct";
  };
  timing: {
    mode: "absolute" | "relative" | "conditional";
    at?: string;
    after?: string;
    anchor?: string;
    condition?: Record<string, unknown>;
  };
  tolerance?: string;
  window?: string;
  prerequisites?: Record<string, unknown>[];
  fallback?: {
    action?: "skip" | "retry" | "substitute" | "abort_scene";
    retries?: number;
    backoff?: string;
    substitute_id?: string;
  };
  casting_override?: Record<string, unknown>;
  sensors_config?: Record<string, unknown>[];
}

Response

interface Beat {
  id: string;
  sceneId: string;
  sequence: number;
  channelId: string;
  content: Record<string, unknown>;
  toneWarmth: string;
  toneUrgency: string;
  toneAsk: string;
  timingMode: string;
  targetTime: string | null;
  status: "pending" | "scheduled" | "firing" | "fired" | "skipped" | "bounds_blocked" | "failed";
  firedAt: string | null;
  driftMs: number | null;
  createdAt: string;
}

REST endpoints

POST   /scenes/:sceneId/beats
PATCH  /scenes/:sceneId/beats/:beatId
DELETE /scenes/:sceneId/beats/:beatId

Draft scenes only. See Beats API.