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/:beatIdDraft scenes only. See Beats API.