# Schedules ## List schedules **get** `/v1/workspaces/{workspaceId}/agents/{agentId}/schedules` Lists all schedules for an agent ### Path Parameters - `workspaceId: string` - `agentId: string` ### Query Parameters - `bundleKey: optional string` Filter by bundle_key — return only resources owned by this bundle. - `cursor: optional string` Pagination cursor from previous response. - `includeInfo: optional boolean` When true, the `info` field on each returned schedule is populated. Requests with this flag count more against your rate limit. - `limit: optional number` Maximum number of results to return. - `prefix: optional string` Filter expression (query param: prefix). - `query: optional string` Free-form search query. - `sortOrder: optional string` Sort order for results (asc or desc by creation time). ### Returns - `items: optional array of AgentSchedule` - `metadata: ResourceMetadata` Standard metadata for persistent, named resources (e.g., agents, tools, prompts) - `id: string` Unique identifier for the resource (prefixed ULID, e.g., "agent_01HXK...") - `accountId: string` Account this resource belongs to for multi-tenant isolation (prefixed ULID) - `createdAt: string` Timestamp when this resource was created - `name: string` Human-readable name for the resource (e.g., "Customer Support Agent", "Email Tool") Required for resources that users interact with directly - `profileId: string` ID of the actor (user or service account) that created this resource - `workspaceId: string` Workspace this resource belongs to for organizational grouping (prefixed ULID) - `bundleKey: optional string` Optional bundle ownership key. When set, indicates the resource is managed by a configuration bundle identified by this key. Used by BulkWorkspaceResources.Apply to track which resources belong to which bundle for reconciliation / soft-delete on re-apply. - `externalId: optional string` External ID for the resource (e.g., a workflow ID from an external system) - `labels: optional map[string]` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `spec: AgentScheduleSpec` AgentScheduleSpec is the user-provided configuration for a schedule. - `initialMessage: string` The initial message passed to CreateObjective on each fire. Becomes the first user message in the objective's chat history. - `schedule: AgentScheduleSpecSchedule` Schedule defines WHEN the schedule fires. Temporal-style structured form: a list of calendar rules (wall-clock) and/or interval rules (duration), OR'd together. At least one rule is required. - `calendars: optional array of ScheduleCalendar` Wall-clock rules. May be empty if `intervals` is non-empty. - `comment: optional string` - `dayOfMonth: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `dayOfWeek: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `hour: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `minute: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `month: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `second: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `intervals: optional array of ScheduleInterval` Duration-based rules. May be empty if `calendars` is non-empty. - `every: optional string` - `offset: optional string` Phase shift within `every`. Must be < `every` (enforced at runtime). - `timezone: optional string` IANA tz name (e.g. "America/New_York"). Required. Applies to calendars; intervals fire on wall-clock cadence anchored in this zone. - `data: optional unknown` Optional input data passed to the objective. If the agent has an input_data_schema, this must satisfy it. - `overlapPolicy: optional "OVERLAP_POLICY_UNSPECIFIED" or "OVERLAP_POLICY_ALLOW" or "OVERLAP_POLICY_SKIP"` What to do when the previous run is still in flight. Defaults to SKIP. - `"OVERLAP_POLICY_UNSPECIFIED"` - `"OVERLAP_POLICY_ALLOW"` - `"OVERLAP_POLICY_SKIP"` - `status: optional "AGENT_SCHEDULE_STATUS_UNSPECIFIED" or "AGENT_SCHEDULE_STATUS_ACTIVE" or "AGENT_SCHEDULE_STATUS_PAUSED" or "AGENT_SCHEDULE_STATUS_ARCHIVED"` Lifecycle. Defaults to ACTIVE on create when unspecified. - `"AGENT_SCHEDULE_STATUS_UNSPECIFIED"` - `"AGENT_SCHEDULE_STATUS_ACTIVE"` - `"AGENT_SCHEDULE_STATUS_PAUSED"` - `"AGENT_SCHEDULE_STATUS_ARCHIVED"` - `variationId: optional string` Optional explicit variation. When unset, the agent's variation_selection_mode chooses per fire. - `info: optional AgentScheduleInfo` AgentScheduleInfo provides read-only runtime data about a schedule. - `createdBy: optional Profile` A profile identifies a user or non-human principal (such as an API key) at the account level. Profiles are account-scoped and can be granted access to multiple workspaces. - `metadata: AccountResourceMetadata` AccountResourceMetadata is used to represent a resource that is associated to an account but not to a workspace. - `id: string` Unique identifier for the resource (prefixed ULID, e.g., "apikey_01HXK...") - `accountId: string` Account this resource belongs to for multi-tenant isolation (prefixed ULID) - `name: string` Human-readable name for the resource (e.g., "Customer Support Agent", "Email Tool") Required for resources that users interact with directly - `profileId: string` - `externalId: optional string` External ID for the resource (e.g., a workflow ID from an external system) - `labels: optional map[string]` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `spec: ProfileSpec` Configuration for a profile. - `type: "PROFILE_TYPE_UNSPECIFIED" or "PROFILE_TYPE_USER" or "PROFILE_TYPE_API_KEY" or "PROFILE_TYPE_SYSTEM"` Whether this profile represents a human user, an API key, or a system principal. - `"PROFILE_TYPE_UNSPECIFIED"` - `"PROFILE_TYPE_USER"` - `"PROFILE_TYPE_API_KEY"` - `"PROFILE_TYPE_SYSTEM"` - `email: optional string` Email address of the profile. Required and unique within an account for user profiles. - `name: optional string` Display name (e.g., "Bobby Tables"). - `lastFireAt: optional string` When the schedule last fired (regardless of objective outcome). - `lastObjectiveId: optional string` ID of the most recent objective the schedule created. - `lastSkippedAt: optional string` When the schedule most recently skipped a fire (SKIP policy + prior in flight). - `lastSkipReason: optional string` Reason for the most recent skip (e.g. "previous objective still running"). - `nextFireAt: optional string` When the schedule will next fire. Computed from the spec; absent when the schedule is PAUSED/ARCHIVED or has no future fire times. - `totalFires: optional number` Lifetime count of objectives created by this schedule. - `pagination: optional Page` - `nextCursor: optional string` - `total: optional number` ### Example ```http curl https://api.cadenya.com/v1/workspaces/$WORKSPACE_ID/agents/$AGENT_ID/schedules \ -H "Authorization: Bearer $CADENYA_API_KEY" ``` #### Response ```json { "items": [ { "metadata": { "id": "id", "accountId": "accountId", "createdAt": "2019-12-27T18:11:19.117Z", "name": "name", "profileId": "profileId", "workspaceId": "workspaceId", "bundleKey": "bundleKey", "externalId": "externalId", "labels": { "foo": "string" } }, "spec": { "initialMessage": "initialMessage", "schedule": { "calendars": [ { "comment": "comment", "dayOfMonth": [ { "end": 0, "start": 0, "step": 0 } ], "dayOfWeek": [ { "end": 0, "start": 0, "step": 0 } ], "hour": [ { "end": 0, "start": 0, "step": 0 } ], "minute": [ { "end": 0, "start": 0, "step": 0 } ], "month": [ { "end": 0, "start": 0, "step": 0 } ], "second": [ { "end": 0, "start": 0, "step": 0 } ] } ], "intervals": [ { "every": "-160513s", "offset": "-160513s" } ], "timezone": "timezone" }, "data": {}, "overlapPolicy": "OVERLAP_POLICY_UNSPECIFIED", "status": "AGENT_SCHEDULE_STATUS_UNSPECIFIED", "variationId": "variationId" }, "info": { "createdBy": { "metadata": { "id": "id", "accountId": "accountId", "name": "name", "profileId": "profileId", "externalId": "externalId", "labels": { "foo": "string" } }, "spec": { "type": "PROFILE_TYPE_UNSPECIFIED", "email": "email", "name": "name" } }, "lastFireAt": "2019-12-27T18:11:19.117Z", "lastObjectiveId": "lastObjectiveId", "lastSkippedAt": "2019-12-27T18:11:19.117Z", "lastSkipReason": "lastSkipReason", "nextFireAt": "2019-12-27T18:11:19.117Z", "totalFires": 0 } } ], "pagination": { "nextCursor": "nextCursor", "total": 0 } } ``` ## Create a new schedule **post** `/v1/workspaces/{workspaceId}/agents/{agentId}/schedules` Creates a new schedule for an agent ### Path Parameters - `workspaceId: string` - `agentId: string` ### Body Parameters - `metadata: CreateResourceMetadata` CreateResourceMetadata contains the user-provided fields for creating a workspace-scoped resource. Read-only fields (id, account_id, workspace_id, profile_id, created_at) are excluded since they are set by the server. - `name: string` Human-readable name for the resource (e.g., "Customer Support Agent", "Email Tool") - `bundleKey: optional string` Optional bundle ownership key. See ResourceMetadata.bundle_key. - `externalId: optional string` External ID for the resource (e.g., a workflow ID from an external system) - `labels: optional map[string]` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `spec: AgentScheduleSpec` AgentScheduleSpec is the user-provided configuration for a schedule. - `initialMessage: string` The initial message passed to CreateObjective on each fire. Becomes the first user message in the objective's chat history. - `schedule: AgentScheduleSpecSchedule` Schedule defines WHEN the schedule fires. Temporal-style structured form: a list of calendar rules (wall-clock) and/or interval rules (duration), OR'd together. At least one rule is required. - `calendars: optional array of ScheduleCalendar` Wall-clock rules. May be empty if `intervals` is non-empty. - `comment: optional string` - `dayOfMonth: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `dayOfWeek: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `hour: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `minute: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `month: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `second: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `intervals: optional array of ScheduleInterval` Duration-based rules. May be empty if `calendars` is non-empty. - `every: optional string` - `offset: optional string` Phase shift within `every`. Must be < `every` (enforced at runtime). - `timezone: optional string` IANA tz name (e.g. "America/New_York"). Required. Applies to calendars; intervals fire on wall-clock cadence anchored in this zone. - `data: optional unknown` Optional input data passed to the objective. If the agent has an input_data_schema, this must satisfy it. - `overlapPolicy: optional "OVERLAP_POLICY_UNSPECIFIED" or "OVERLAP_POLICY_ALLOW" or "OVERLAP_POLICY_SKIP"` What to do when the previous run is still in flight. Defaults to SKIP. - `"OVERLAP_POLICY_UNSPECIFIED"` - `"OVERLAP_POLICY_ALLOW"` - `"OVERLAP_POLICY_SKIP"` - `status: optional "AGENT_SCHEDULE_STATUS_UNSPECIFIED" or "AGENT_SCHEDULE_STATUS_ACTIVE" or "AGENT_SCHEDULE_STATUS_PAUSED" or "AGENT_SCHEDULE_STATUS_ARCHIVED"` Lifecycle. Defaults to ACTIVE on create when unspecified. - `"AGENT_SCHEDULE_STATUS_UNSPECIFIED"` - `"AGENT_SCHEDULE_STATUS_ACTIVE"` - `"AGENT_SCHEDULE_STATUS_PAUSED"` - `"AGENT_SCHEDULE_STATUS_ARCHIVED"` - `variationId: optional string` Optional explicit variation. When unset, the agent's variation_selection_mode chooses per fire. ### Returns - `AgentSchedule object { metadata, spec, info }` AgentSchedule resource — a recurring trigger attached to an agent that creates objectives on its cadence. - `metadata: ResourceMetadata` Standard metadata for persistent, named resources (e.g., agents, tools, prompts) - `id: string` Unique identifier for the resource (prefixed ULID, e.g., "agent_01HXK...") - `accountId: string` Account this resource belongs to for multi-tenant isolation (prefixed ULID) - `createdAt: string` Timestamp when this resource was created - `name: string` Human-readable name for the resource (e.g., "Customer Support Agent", "Email Tool") Required for resources that users interact with directly - `profileId: string` ID of the actor (user or service account) that created this resource - `workspaceId: string` Workspace this resource belongs to for organizational grouping (prefixed ULID) - `bundleKey: optional string` Optional bundle ownership key. When set, indicates the resource is managed by a configuration bundle identified by this key. Used by BulkWorkspaceResources.Apply to track which resources belong to which bundle for reconciliation / soft-delete on re-apply. - `externalId: optional string` External ID for the resource (e.g., a workflow ID from an external system) - `labels: optional map[string]` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `spec: AgentScheduleSpec` AgentScheduleSpec is the user-provided configuration for a schedule. - `initialMessage: string` The initial message passed to CreateObjective on each fire. Becomes the first user message in the objective's chat history. - `schedule: AgentScheduleSpecSchedule` Schedule defines WHEN the schedule fires. Temporal-style structured form: a list of calendar rules (wall-clock) and/or interval rules (duration), OR'd together. At least one rule is required. - `calendars: optional array of ScheduleCalendar` Wall-clock rules. May be empty if `intervals` is non-empty. - `comment: optional string` - `dayOfMonth: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `dayOfWeek: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `hour: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `minute: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `month: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `second: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `intervals: optional array of ScheduleInterval` Duration-based rules. May be empty if `calendars` is non-empty. - `every: optional string` - `offset: optional string` Phase shift within `every`. Must be < `every` (enforced at runtime). - `timezone: optional string` IANA tz name (e.g. "America/New_York"). Required. Applies to calendars; intervals fire on wall-clock cadence anchored in this zone. - `data: optional unknown` Optional input data passed to the objective. If the agent has an input_data_schema, this must satisfy it. - `overlapPolicy: optional "OVERLAP_POLICY_UNSPECIFIED" or "OVERLAP_POLICY_ALLOW" or "OVERLAP_POLICY_SKIP"` What to do when the previous run is still in flight. Defaults to SKIP. - `"OVERLAP_POLICY_UNSPECIFIED"` - `"OVERLAP_POLICY_ALLOW"` - `"OVERLAP_POLICY_SKIP"` - `status: optional "AGENT_SCHEDULE_STATUS_UNSPECIFIED" or "AGENT_SCHEDULE_STATUS_ACTIVE" or "AGENT_SCHEDULE_STATUS_PAUSED" or "AGENT_SCHEDULE_STATUS_ARCHIVED"` Lifecycle. Defaults to ACTIVE on create when unspecified. - `"AGENT_SCHEDULE_STATUS_UNSPECIFIED"` - `"AGENT_SCHEDULE_STATUS_ACTIVE"` - `"AGENT_SCHEDULE_STATUS_PAUSED"` - `"AGENT_SCHEDULE_STATUS_ARCHIVED"` - `variationId: optional string` Optional explicit variation. When unset, the agent's variation_selection_mode chooses per fire. - `info: optional AgentScheduleInfo` AgentScheduleInfo provides read-only runtime data about a schedule. - `createdBy: optional Profile` A profile identifies a user or non-human principal (such as an API key) at the account level. Profiles are account-scoped and can be granted access to multiple workspaces. - `metadata: AccountResourceMetadata` AccountResourceMetadata is used to represent a resource that is associated to an account but not to a workspace. - `id: string` Unique identifier for the resource (prefixed ULID, e.g., "apikey_01HXK...") - `accountId: string` Account this resource belongs to for multi-tenant isolation (prefixed ULID) - `name: string` Human-readable name for the resource (e.g., "Customer Support Agent", "Email Tool") Required for resources that users interact with directly - `profileId: string` - `externalId: optional string` External ID for the resource (e.g., a workflow ID from an external system) - `labels: optional map[string]` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `spec: ProfileSpec` Configuration for a profile. - `type: "PROFILE_TYPE_UNSPECIFIED" or "PROFILE_TYPE_USER" or "PROFILE_TYPE_API_KEY" or "PROFILE_TYPE_SYSTEM"` Whether this profile represents a human user, an API key, or a system principal. - `"PROFILE_TYPE_UNSPECIFIED"` - `"PROFILE_TYPE_USER"` - `"PROFILE_TYPE_API_KEY"` - `"PROFILE_TYPE_SYSTEM"` - `email: optional string` Email address of the profile. Required and unique within an account for user profiles. - `name: optional string` Display name (e.g., "Bobby Tables"). - `lastFireAt: optional string` When the schedule last fired (regardless of objective outcome). - `lastObjectiveId: optional string` ID of the most recent objective the schedule created. - `lastSkippedAt: optional string` When the schedule most recently skipped a fire (SKIP policy + prior in flight). - `lastSkipReason: optional string` Reason for the most recent skip (e.g. "previous objective still running"). - `nextFireAt: optional string` When the schedule will next fire. Computed from the spec; absent when the schedule is PAUSED/ARCHIVED or has no future fire times. - `totalFires: optional number` Lifetime count of objectives created by this schedule. ### Example ```http curl https://api.cadenya.com/v1/workspaces/$WORKSPACE_ID/agents/$AGENT_ID/schedules \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer $CADENYA_API_KEY" \ -d '{ "metadata": { "name": "name" }, "spec": { "initialMessage": "initialMessage", "schedule": {} } }' ``` #### Response ```json { "metadata": { "id": "id", "accountId": "accountId", "createdAt": "2019-12-27T18:11:19.117Z", "name": "name", "profileId": "profileId", "workspaceId": "workspaceId", "bundleKey": "bundleKey", "externalId": "externalId", "labels": { "foo": "string" } }, "spec": { "initialMessage": "initialMessage", "schedule": { "calendars": [ { "comment": "comment", "dayOfMonth": [ { "end": 0, "start": 0, "step": 0 } ], "dayOfWeek": [ { "end": 0, "start": 0, "step": 0 } ], "hour": [ { "end": 0, "start": 0, "step": 0 } ], "minute": [ { "end": 0, "start": 0, "step": 0 } ], "month": [ { "end": 0, "start": 0, "step": 0 } ], "second": [ { "end": 0, "start": 0, "step": 0 } ] } ], "intervals": [ { "every": "-160513s", "offset": "-160513s" } ], "timezone": "timezone" }, "data": {}, "overlapPolicy": "OVERLAP_POLICY_UNSPECIFIED", "status": "AGENT_SCHEDULE_STATUS_UNSPECIFIED", "variationId": "variationId" }, "info": { "createdBy": { "metadata": { "id": "id", "accountId": "accountId", "name": "name", "profileId": "profileId", "externalId": "externalId", "labels": { "foo": "string" } }, "spec": { "type": "PROFILE_TYPE_UNSPECIFIED", "email": "email", "name": "name" } }, "lastFireAt": "2019-12-27T18:11:19.117Z", "lastObjectiveId": "lastObjectiveId", "lastSkippedAt": "2019-12-27T18:11:19.117Z", "lastSkipReason": "lastSkipReason", "nextFireAt": "2019-12-27T18:11:19.117Z", "totalFires": 0 } } ``` ## Get a schedule by ID **get** `/v1/workspaces/{workspaceId}/agents/{agentId}/schedules/{id}` Retrieves a schedule by ID from an agent ### Path Parameters - `workspaceId: string` - `agentId: string` - `id: string` ### Returns - `AgentSchedule object { metadata, spec, info }` AgentSchedule resource — a recurring trigger attached to an agent that creates objectives on its cadence. - `metadata: ResourceMetadata` Standard metadata for persistent, named resources (e.g., agents, tools, prompts) - `id: string` Unique identifier for the resource (prefixed ULID, e.g., "agent_01HXK...") - `accountId: string` Account this resource belongs to for multi-tenant isolation (prefixed ULID) - `createdAt: string` Timestamp when this resource was created - `name: string` Human-readable name for the resource (e.g., "Customer Support Agent", "Email Tool") Required for resources that users interact with directly - `profileId: string` ID of the actor (user or service account) that created this resource - `workspaceId: string` Workspace this resource belongs to for organizational grouping (prefixed ULID) - `bundleKey: optional string` Optional bundle ownership key. When set, indicates the resource is managed by a configuration bundle identified by this key. Used by BulkWorkspaceResources.Apply to track which resources belong to which bundle for reconciliation / soft-delete on re-apply. - `externalId: optional string` External ID for the resource (e.g., a workflow ID from an external system) - `labels: optional map[string]` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `spec: AgentScheduleSpec` AgentScheduleSpec is the user-provided configuration for a schedule. - `initialMessage: string` The initial message passed to CreateObjective on each fire. Becomes the first user message in the objective's chat history. - `schedule: AgentScheduleSpecSchedule` Schedule defines WHEN the schedule fires. Temporal-style structured form: a list of calendar rules (wall-clock) and/or interval rules (duration), OR'd together. At least one rule is required. - `calendars: optional array of ScheduleCalendar` Wall-clock rules. May be empty if `intervals` is non-empty. - `comment: optional string` - `dayOfMonth: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `dayOfWeek: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `hour: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `minute: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `month: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `second: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `intervals: optional array of ScheduleInterval` Duration-based rules. May be empty if `calendars` is non-empty. - `every: optional string` - `offset: optional string` Phase shift within `every`. Must be < `every` (enforced at runtime). - `timezone: optional string` IANA tz name (e.g. "America/New_York"). Required. Applies to calendars; intervals fire on wall-clock cadence anchored in this zone. - `data: optional unknown` Optional input data passed to the objective. If the agent has an input_data_schema, this must satisfy it. - `overlapPolicy: optional "OVERLAP_POLICY_UNSPECIFIED" or "OVERLAP_POLICY_ALLOW" or "OVERLAP_POLICY_SKIP"` What to do when the previous run is still in flight. Defaults to SKIP. - `"OVERLAP_POLICY_UNSPECIFIED"` - `"OVERLAP_POLICY_ALLOW"` - `"OVERLAP_POLICY_SKIP"` - `status: optional "AGENT_SCHEDULE_STATUS_UNSPECIFIED" or "AGENT_SCHEDULE_STATUS_ACTIVE" or "AGENT_SCHEDULE_STATUS_PAUSED" or "AGENT_SCHEDULE_STATUS_ARCHIVED"` Lifecycle. Defaults to ACTIVE on create when unspecified. - `"AGENT_SCHEDULE_STATUS_UNSPECIFIED"` - `"AGENT_SCHEDULE_STATUS_ACTIVE"` - `"AGENT_SCHEDULE_STATUS_PAUSED"` - `"AGENT_SCHEDULE_STATUS_ARCHIVED"` - `variationId: optional string` Optional explicit variation. When unset, the agent's variation_selection_mode chooses per fire. - `info: optional AgentScheduleInfo` AgentScheduleInfo provides read-only runtime data about a schedule. - `createdBy: optional Profile` A profile identifies a user or non-human principal (such as an API key) at the account level. Profiles are account-scoped and can be granted access to multiple workspaces. - `metadata: AccountResourceMetadata` AccountResourceMetadata is used to represent a resource that is associated to an account but not to a workspace. - `id: string` Unique identifier for the resource (prefixed ULID, e.g., "apikey_01HXK...") - `accountId: string` Account this resource belongs to for multi-tenant isolation (prefixed ULID) - `name: string` Human-readable name for the resource (e.g., "Customer Support Agent", "Email Tool") Required for resources that users interact with directly - `profileId: string` - `externalId: optional string` External ID for the resource (e.g., a workflow ID from an external system) - `labels: optional map[string]` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `spec: ProfileSpec` Configuration for a profile. - `type: "PROFILE_TYPE_UNSPECIFIED" or "PROFILE_TYPE_USER" or "PROFILE_TYPE_API_KEY" or "PROFILE_TYPE_SYSTEM"` Whether this profile represents a human user, an API key, or a system principal. - `"PROFILE_TYPE_UNSPECIFIED"` - `"PROFILE_TYPE_USER"` - `"PROFILE_TYPE_API_KEY"` - `"PROFILE_TYPE_SYSTEM"` - `email: optional string` Email address of the profile. Required and unique within an account for user profiles. - `name: optional string` Display name (e.g., "Bobby Tables"). - `lastFireAt: optional string` When the schedule last fired (regardless of objective outcome). - `lastObjectiveId: optional string` ID of the most recent objective the schedule created. - `lastSkippedAt: optional string` When the schedule most recently skipped a fire (SKIP policy + prior in flight). - `lastSkipReason: optional string` Reason for the most recent skip (e.g. "previous objective still running"). - `nextFireAt: optional string` When the schedule will next fire. Computed from the spec; absent when the schedule is PAUSED/ARCHIVED or has no future fire times. - `totalFires: optional number` Lifetime count of objectives created by this schedule. ### Example ```http curl https://api.cadenya.com/v1/workspaces/$WORKSPACE_ID/agents/$AGENT_ID/schedules/$ID \ -H "Authorization: Bearer $CADENYA_API_KEY" ``` #### Response ```json { "metadata": { "id": "id", "accountId": "accountId", "createdAt": "2019-12-27T18:11:19.117Z", "name": "name", "profileId": "profileId", "workspaceId": "workspaceId", "bundleKey": "bundleKey", "externalId": "externalId", "labels": { "foo": "string" } }, "spec": { "initialMessage": "initialMessage", "schedule": { "calendars": [ { "comment": "comment", "dayOfMonth": [ { "end": 0, "start": 0, "step": 0 } ], "dayOfWeek": [ { "end": 0, "start": 0, "step": 0 } ], "hour": [ { "end": 0, "start": 0, "step": 0 } ], "minute": [ { "end": 0, "start": 0, "step": 0 } ], "month": [ { "end": 0, "start": 0, "step": 0 } ], "second": [ { "end": 0, "start": 0, "step": 0 } ] } ], "intervals": [ { "every": "-160513s", "offset": "-160513s" } ], "timezone": "timezone" }, "data": {}, "overlapPolicy": "OVERLAP_POLICY_UNSPECIFIED", "status": "AGENT_SCHEDULE_STATUS_UNSPECIFIED", "variationId": "variationId" }, "info": { "createdBy": { "metadata": { "id": "id", "accountId": "accountId", "name": "name", "profileId": "profileId", "externalId": "externalId", "labels": { "foo": "string" } }, "spec": { "type": "PROFILE_TYPE_UNSPECIFIED", "email": "email", "name": "name" } }, "lastFireAt": "2019-12-27T18:11:19.117Z", "lastObjectiveId": "lastObjectiveId", "lastSkippedAt": "2019-12-27T18:11:19.117Z", "lastSkipReason": "lastSkipReason", "nextFireAt": "2019-12-27T18:11:19.117Z", "totalFires": 0 } } ``` ## Delete a schedule **delete** `/v1/workspaces/{workspaceId}/agents/{agentId}/schedules/{id}` Deletes a schedule from an agent ### Path Parameters - `workspaceId: string` - `agentId: string` - `id: string` ### Example ```http curl https://api.cadenya.com/v1/workspaces/$WORKSPACE_ID/agents/$AGENT_ID/schedules/$ID \ -X DELETE \ -H "Authorization: Bearer $CADENYA_API_KEY" ``` ## Update a schedule **patch** `/v1/workspaces/{workspaceId}/agents/{agentId}/schedules/{id}` Updates a schedule for an agent ### Path Parameters - `workspaceId: string` - `agentId: string` - `id: string` ### Body Parameters - `metadata: optional UpdateResourceMetadata` UpdateResourceMetadata contains the user-provided fields for updating a workspace-scoped resource. Read-only fields (id, account_id, workspace_id, profile_id, created_at) are excluded since they are set by the server. - `name: string` Human-readable name for the resource (e.g., "Customer Support Agent", "Email Tool") - `bundleKey: optional string` Optional bundle ownership key. See ResourceMetadata.bundle_key. - `externalId: optional string` External ID for the resource (e.g., a workflow ID from an external system) - `labels: optional map[string]` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `spec: optional AgentScheduleSpec` AgentScheduleSpec is the user-provided configuration for a schedule. - `initialMessage: string` The initial message passed to CreateObjective on each fire. Becomes the first user message in the objective's chat history. - `schedule: AgentScheduleSpecSchedule` Schedule defines WHEN the schedule fires. Temporal-style structured form: a list of calendar rules (wall-clock) and/or interval rules (duration), OR'd together. At least one rule is required. - `calendars: optional array of ScheduleCalendar` Wall-clock rules. May be empty if `intervals` is non-empty. - `comment: optional string` - `dayOfMonth: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `dayOfWeek: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `hour: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `minute: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `month: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `second: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `intervals: optional array of ScheduleInterval` Duration-based rules. May be empty if `calendars` is non-empty. - `every: optional string` - `offset: optional string` Phase shift within `every`. Must be < `every` (enforced at runtime). - `timezone: optional string` IANA tz name (e.g. "America/New_York"). Required. Applies to calendars; intervals fire on wall-clock cadence anchored in this zone. - `data: optional unknown` Optional input data passed to the objective. If the agent has an input_data_schema, this must satisfy it. - `overlapPolicy: optional "OVERLAP_POLICY_UNSPECIFIED" or "OVERLAP_POLICY_ALLOW" or "OVERLAP_POLICY_SKIP"` What to do when the previous run is still in flight. Defaults to SKIP. - `"OVERLAP_POLICY_UNSPECIFIED"` - `"OVERLAP_POLICY_ALLOW"` - `"OVERLAP_POLICY_SKIP"` - `status: optional "AGENT_SCHEDULE_STATUS_UNSPECIFIED" or "AGENT_SCHEDULE_STATUS_ACTIVE" or "AGENT_SCHEDULE_STATUS_PAUSED" or "AGENT_SCHEDULE_STATUS_ARCHIVED"` Lifecycle. Defaults to ACTIVE on create when unspecified. - `"AGENT_SCHEDULE_STATUS_UNSPECIFIED"` - `"AGENT_SCHEDULE_STATUS_ACTIVE"` - `"AGENT_SCHEDULE_STATUS_PAUSED"` - `"AGENT_SCHEDULE_STATUS_ARCHIVED"` - `variationId: optional string` Optional explicit variation. When unset, the agent's variation_selection_mode chooses per fire. - `updateMask: optional string` Fields to update. ### Returns - `AgentSchedule object { metadata, spec, info }` AgentSchedule resource — a recurring trigger attached to an agent that creates objectives on its cadence. - `metadata: ResourceMetadata` Standard metadata for persistent, named resources (e.g., agents, tools, prompts) - `id: string` Unique identifier for the resource (prefixed ULID, e.g., "agent_01HXK...") - `accountId: string` Account this resource belongs to for multi-tenant isolation (prefixed ULID) - `createdAt: string` Timestamp when this resource was created - `name: string` Human-readable name for the resource (e.g., "Customer Support Agent", "Email Tool") Required for resources that users interact with directly - `profileId: string` ID of the actor (user or service account) that created this resource - `workspaceId: string` Workspace this resource belongs to for organizational grouping (prefixed ULID) - `bundleKey: optional string` Optional bundle ownership key. When set, indicates the resource is managed by a configuration bundle identified by this key. Used by BulkWorkspaceResources.Apply to track which resources belong to which bundle for reconciliation / soft-delete on re-apply. - `externalId: optional string` External ID for the resource (e.g., a workflow ID from an external system) - `labels: optional map[string]` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `spec: AgentScheduleSpec` AgentScheduleSpec is the user-provided configuration for a schedule. - `initialMessage: string` The initial message passed to CreateObjective on each fire. Becomes the first user message in the objective's chat history. - `schedule: AgentScheduleSpecSchedule` Schedule defines WHEN the schedule fires. Temporal-style structured form: a list of calendar rules (wall-clock) and/or interval rules (duration), OR'd together. At least one rule is required. - `calendars: optional array of ScheduleCalendar` Wall-clock rules. May be empty if `intervals` is non-empty. - `comment: optional string` - `dayOfMonth: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `dayOfWeek: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `hour: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `minute: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `month: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `second: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `intervals: optional array of ScheduleInterval` Duration-based rules. May be empty if `calendars` is non-empty. - `every: optional string` - `offset: optional string` Phase shift within `every`. Must be < `every` (enforced at runtime). - `timezone: optional string` IANA tz name (e.g. "America/New_York"). Required. Applies to calendars; intervals fire on wall-clock cadence anchored in this zone. - `data: optional unknown` Optional input data passed to the objective. If the agent has an input_data_schema, this must satisfy it. - `overlapPolicy: optional "OVERLAP_POLICY_UNSPECIFIED" or "OVERLAP_POLICY_ALLOW" or "OVERLAP_POLICY_SKIP"` What to do when the previous run is still in flight. Defaults to SKIP. - `"OVERLAP_POLICY_UNSPECIFIED"` - `"OVERLAP_POLICY_ALLOW"` - `"OVERLAP_POLICY_SKIP"` - `status: optional "AGENT_SCHEDULE_STATUS_UNSPECIFIED" or "AGENT_SCHEDULE_STATUS_ACTIVE" or "AGENT_SCHEDULE_STATUS_PAUSED" or "AGENT_SCHEDULE_STATUS_ARCHIVED"` Lifecycle. Defaults to ACTIVE on create when unspecified. - `"AGENT_SCHEDULE_STATUS_UNSPECIFIED"` - `"AGENT_SCHEDULE_STATUS_ACTIVE"` - `"AGENT_SCHEDULE_STATUS_PAUSED"` - `"AGENT_SCHEDULE_STATUS_ARCHIVED"` - `variationId: optional string` Optional explicit variation. When unset, the agent's variation_selection_mode chooses per fire. - `info: optional AgentScheduleInfo` AgentScheduleInfo provides read-only runtime data about a schedule. - `createdBy: optional Profile` A profile identifies a user or non-human principal (such as an API key) at the account level. Profiles are account-scoped and can be granted access to multiple workspaces. - `metadata: AccountResourceMetadata` AccountResourceMetadata is used to represent a resource that is associated to an account but not to a workspace. - `id: string` Unique identifier for the resource (prefixed ULID, e.g., "apikey_01HXK...") - `accountId: string` Account this resource belongs to for multi-tenant isolation (prefixed ULID) - `name: string` Human-readable name for the resource (e.g., "Customer Support Agent", "Email Tool") Required for resources that users interact with directly - `profileId: string` - `externalId: optional string` External ID for the resource (e.g., a workflow ID from an external system) - `labels: optional map[string]` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `spec: ProfileSpec` Configuration for a profile. - `type: "PROFILE_TYPE_UNSPECIFIED" or "PROFILE_TYPE_USER" or "PROFILE_TYPE_API_KEY" or "PROFILE_TYPE_SYSTEM"` Whether this profile represents a human user, an API key, or a system principal. - `"PROFILE_TYPE_UNSPECIFIED"` - `"PROFILE_TYPE_USER"` - `"PROFILE_TYPE_API_KEY"` - `"PROFILE_TYPE_SYSTEM"` - `email: optional string` Email address of the profile. Required and unique within an account for user profiles. - `name: optional string` Display name (e.g., "Bobby Tables"). - `lastFireAt: optional string` When the schedule last fired (regardless of objective outcome). - `lastObjectiveId: optional string` ID of the most recent objective the schedule created. - `lastSkippedAt: optional string` When the schedule most recently skipped a fire (SKIP policy + prior in flight). - `lastSkipReason: optional string` Reason for the most recent skip (e.g. "previous objective still running"). - `nextFireAt: optional string` When the schedule will next fire. Computed from the spec; absent when the schedule is PAUSED/ARCHIVED or has no future fire times. - `totalFires: optional number` Lifetime count of objectives created by this schedule. ### Example ```http curl https://api.cadenya.com/v1/workspaces/$WORKSPACE_ID/agents/$AGENT_ID/schedules/$ID \ -X PATCH \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer $CADENYA_API_KEY" \ -d '{}' ``` #### Response ```json { "metadata": { "id": "id", "accountId": "accountId", "createdAt": "2019-12-27T18:11:19.117Z", "name": "name", "profileId": "profileId", "workspaceId": "workspaceId", "bundleKey": "bundleKey", "externalId": "externalId", "labels": { "foo": "string" } }, "spec": { "initialMessage": "initialMessage", "schedule": { "calendars": [ { "comment": "comment", "dayOfMonth": [ { "end": 0, "start": 0, "step": 0 } ], "dayOfWeek": [ { "end": 0, "start": 0, "step": 0 } ], "hour": [ { "end": 0, "start": 0, "step": 0 } ], "minute": [ { "end": 0, "start": 0, "step": 0 } ], "month": [ { "end": 0, "start": 0, "step": 0 } ], "second": [ { "end": 0, "start": 0, "step": 0 } ] } ], "intervals": [ { "every": "-160513s", "offset": "-160513s" } ], "timezone": "timezone" }, "data": {}, "overlapPolicy": "OVERLAP_POLICY_UNSPECIFIED", "status": "AGENT_SCHEDULE_STATUS_UNSPECIFIED", "variationId": "variationId" }, "info": { "createdBy": { "metadata": { "id": "id", "accountId": "accountId", "name": "name", "profileId": "profileId", "externalId": "externalId", "labels": { "foo": "string" } }, "spec": { "type": "PROFILE_TYPE_UNSPECIFIED", "email": "email", "name": "name" } }, "lastFireAt": "2019-12-27T18:11:19.117Z", "lastObjectiveId": "lastObjectiveId", "lastSkippedAt": "2019-12-27T18:11:19.117Z", "lastSkipReason": "lastSkipReason", "nextFireAt": "2019-12-27T18:11:19.117Z", "totalFires": 0 } } ``` ## Domain Types ### Agent Schedule - `AgentSchedule object { metadata, spec, info }` AgentSchedule resource — a recurring trigger attached to an agent that creates objectives on its cadence. - `metadata: ResourceMetadata` Standard metadata for persistent, named resources (e.g., agents, tools, prompts) - `id: string` Unique identifier for the resource (prefixed ULID, e.g., "agent_01HXK...") - `accountId: string` Account this resource belongs to for multi-tenant isolation (prefixed ULID) - `createdAt: string` Timestamp when this resource was created - `name: string` Human-readable name for the resource (e.g., "Customer Support Agent", "Email Tool") Required for resources that users interact with directly - `profileId: string` ID of the actor (user or service account) that created this resource - `workspaceId: string` Workspace this resource belongs to for organizational grouping (prefixed ULID) - `bundleKey: optional string` Optional bundle ownership key. When set, indicates the resource is managed by a configuration bundle identified by this key. Used by BulkWorkspaceResources.Apply to track which resources belong to which bundle for reconciliation / soft-delete on re-apply. - `externalId: optional string` External ID for the resource (e.g., a workflow ID from an external system) - `labels: optional map[string]` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `spec: AgentScheduleSpec` AgentScheduleSpec is the user-provided configuration for a schedule. - `initialMessage: string` The initial message passed to CreateObjective on each fire. Becomes the first user message in the objective's chat history. - `schedule: AgentScheduleSpecSchedule` Schedule defines WHEN the schedule fires. Temporal-style structured form: a list of calendar rules (wall-clock) and/or interval rules (duration), OR'd together. At least one rule is required. - `calendars: optional array of ScheduleCalendar` Wall-clock rules. May be empty if `intervals` is non-empty. - `comment: optional string` - `dayOfMonth: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `dayOfWeek: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `hour: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `minute: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `month: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `second: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `intervals: optional array of ScheduleInterval` Duration-based rules. May be empty if `calendars` is non-empty. - `every: optional string` - `offset: optional string` Phase shift within `every`. Must be < `every` (enforced at runtime). - `timezone: optional string` IANA tz name (e.g. "America/New_York"). Required. Applies to calendars; intervals fire on wall-clock cadence anchored in this zone. - `data: optional unknown` Optional input data passed to the objective. If the agent has an input_data_schema, this must satisfy it. - `overlapPolicy: optional "OVERLAP_POLICY_UNSPECIFIED" or "OVERLAP_POLICY_ALLOW" or "OVERLAP_POLICY_SKIP"` What to do when the previous run is still in flight. Defaults to SKIP. - `"OVERLAP_POLICY_UNSPECIFIED"` - `"OVERLAP_POLICY_ALLOW"` - `"OVERLAP_POLICY_SKIP"` - `status: optional "AGENT_SCHEDULE_STATUS_UNSPECIFIED" or "AGENT_SCHEDULE_STATUS_ACTIVE" or "AGENT_SCHEDULE_STATUS_PAUSED" or "AGENT_SCHEDULE_STATUS_ARCHIVED"` Lifecycle. Defaults to ACTIVE on create when unspecified. - `"AGENT_SCHEDULE_STATUS_UNSPECIFIED"` - `"AGENT_SCHEDULE_STATUS_ACTIVE"` - `"AGENT_SCHEDULE_STATUS_PAUSED"` - `"AGENT_SCHEDULE_STATUS_ARCHIVED"` - `variationId: optional string` Optional explicit variation. When unset, the agent's variation_selection_mode chooses per fire. - `info: optional AgentScheduleInfo` AgentScheduleInfo provides read-only runtime data about a schedule. - `createdBy: optional Profile` A profile identifies a user or non-human principal (such as an API key) at the account level. Profiles are account-scoped and can be granted access to multiple workspaces. - `metadata: AccountResourceMetadata` AccountResourceMetadata is used to represent a resource that is associated to an account but not to a workspace. - `id: string` Unique identifier for the resource (prefixed ULID, e.g., "apikey_01HXK...") - `accountId: string` Account this resource belongs to for multi-tenant isolation (prefixed ULID) - `name: string` Human-readable name for the resource (e.g., "Customer Support Agent", "Email Tool") Required for resources that users interact with directly - `profileId: string` - `externalId: optional string` External ID for the resource (e.g., a workflow ID from an external system) - `labels: optional map[string]` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `spec: ProfileSpec` Configuration for a profile. - `type: "PROFILE_TYPE_UNSPECIFIED" or "PROFILE_TYPE_USER" or "PROFILE_TYPE_API_KEY" or "PROFILE_TYPE_SYSTEM"` Whether this profile represents a human user, an API key, or a system principal. - `"PROFILE_TYPE_UNSPECIFIED"` - `"PROFILE_TYPE_USER"` - `"PROFILE_TYPE_API_KEY"` - `"PROFILE_TYPE_SYSTEM"` - `email: optional string` Email address of the profile. Required and unique within an account for user profiles. - `name: optional string` Display name (e.g., "Bobby Tables"). - `lastFireAt: optional string` When the schedule last fired (regardless of objective outcome). - `lastObjectiveId: optional string` ID of the most recent objective the schedule created. - `lastSkippedAt: optional string` When the schedule most recently skipped a fire (SKIP policy + prior in flight). - `lastSkipReason: optional string` Reason for the most recent skip (e.g. "previous objective still running"). - `nextFireAt: optional string` When the schedule will next fire. Computed from the spec; absent when the schedule is PAUSED/ARCHIVED or has no future fire times. - `totalFires: optional number` Lifetime count of objectives created by this schedule. ### Agent Schedule Info - `AgentScheduleInfo object { createdBy, lastFireAt, lastObjectiveId, 4 more }` AgentScheduleInfo provides read-only runtime data about a schedule. - `createdBy: optional Profile` A profile identifies a user or non-human principal (such as an API key) at the account level. Profiles are account-scoped and can be granted access to multiple workspaces. - `metadata: AccountResourceMetadata` AccountResourceMetadata is used to represent a resource that is associated to an account but not to a workspace. - `id: string` Unique identifier for the resource (prefixed ULID, e.g., "apikey_01HXK...") - `accountId: string` Account this resource belongs to for multi-tenant isolation (prefixed ULID) - `name: string` Human-readable name for the resource (e.g., "Customer Support Agent", "Email Tool") Required for resources that users interact with directly - `profileId: string` - `externalId: optional string` External ID for the resource (e.g., a workflow ID from an external system) - `labels: optional map[string]` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `spec: ProfileSpec` Configuration for a profile. - `type: "PROFILE_TYPE_UNSPECIFIED" or "PROFILE_TYPE_USER" or "PROFILE_TYPE_API_KEY" or "PROFILE_TYPE_SYSTEM"` Whether this profile represents a human user, an API key, or a system principal. - `"PROFILE_TYPE_UNSPECIFIED"` - `"PROFILE_TYPE_USER"` - `"PROFILE_TYPE_API_KEY"` - `"PROFILE_TYPE_SYSTEM"` - `email: optional string` Email address of the profile. Required and unique within an account for user profiles. - `name: optional string` Display name (e.g., "Bobby Tables"). - `lastFireAt: optional string` When the schedule last fired (regardless of objective outcome). - `lastObjectiveId: optional string` ID of the most recent objective the schedule created. - `lastSkippedAt: optional string` When the schedule most recently skipped a fire (SKIP policy + prior in flight). - `lastSkipReason: optional string` Reason for the most recent skip (e.g. "previous objective still running"). - `nextFireAt: optional string` When the schedule will next fire. Computed from the spec; absent when the schedule is PAUSED/ARCHIVED or has no future fire times. - `totalFires: optional number` Lifetime count of objectives created by this schedule. ### Agent Schedule Spec - `AgentScheduleSpec object { initialMessage, schedule, data, 3 more }` AgentScheduleSpec is the user-provided configuration for a schedule. - `initialMessage: string` The initial message passed to CreateObjective on each fire. Becomes the first user message in the objective's chat history. - `schedule: AgentScheduleSpecSchedule` Schedule defines WHEN the schedule fires. Temporal-style structured form: a list of calendar rules (wall-clock) and/or interval rules (duration), OR'd together. At least one rule is required. - `calendars: optional array of ScheduleCalendar` Wall-clock rules. May be empty if `intervals` is non-empty. - `comment: optional string` - `dayOfMonth: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `dayOfWeek: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `hour: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `minute: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `month: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `second: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `intervals: optional array of ScheduleInterval` Duration-based rules. May be empty if `calendars` is non-empty. - `every: optional string` - `offset: optional string` Phase shift within `every`. Must be < `every` (enforced at runtime). - `timezone: optional string` IANA tz name (e.g. "America/New_York"). Required. Applies to calendars; intervals fire on wall-clock cadence anchored in this zone. - `data: optional unknown` Optional input data passed to the objective. If the agent has an input_data_schema, this must satisfy it. - `overlapPolicy: optional "OVERLAP_POLICY_UNSPECIFIED" or "OVERLAP_POLICY_ALLOW" or "OVERLAP_POLICY_SKIP"` What to do when the previous run is still in flight. Defaults to SKIP. - `"OVERLAP_POLICY_UNSPECIFIED"` - `"OVERLAP_POLICY_ALLOW"` - `"OVERLAP_POLICY_SKIP"` - `status: optional "AGENT_SCHEDULE_STATUS_UNSPECIFIED" or "AGENT_SCHEDULE_STATUS_ACTIVE" or "AGENT_SCHEDULE_STATUS_PAUSED" or "AGENT_SCHEDULE_STATUS_ARCHIVED"` Lifecycle. Defaults to ACTIVE on create when unspecified. - `"AGENT_SCHEDULE_STATUS_UNSPECIFIED"` - `"AGENT_SCHEDULE_STATUS_ACTIVE"` - `"AGENT_SCHEDULE_STATUS_PAUSED"` - `"AGENT_SCHEDULE_STATUS_ARCHIVED"` - `variationId: optional string` Optional explicit variation. When unset, the agent's variation_selection_mode chooses per fire. ### Agent Schedule Spec Schedule - `AgentScheduleSpecSchedule object { calendars, intervals, timezone }` Schedule defines WHEN the schedule fires. Temporal-style structured form: a list of calendar rules (wall-clock) and/or interval rules (duration), OR'd together. At least one rule is required. - `calendars: optional array of ScheduleCalendar` Wall-clock rules. May be empty if `intervals` is non-empty. - `comment: optional string` - `dayOfMonth: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `dayOfWeek: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `hour: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `minute: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `month: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `second: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `intervals: optional array of ScheduleInterval` Duration-based rules. May be empty if `calendars` is non-empty. - `every: optional string` - `offset: optional string` Phase shift within `every`. Must be < `every` (enforced at runtime). - `timezone: optional string` IANA tz name (e.g. "America/New_York"). Required. Applies to calendars; intervals fire on wall-clock cadence anchored in this zone. ### Schedule Calendar - `ScheduleCalendar object { comment, dayOfMonth, dayOfWeek, 4 more }` Calendar is a wall-clock rule. Empty field-list semantics: - second/minute/hour: empty means [{start: 0}] (top of the unit) - day_of_month/month/day_of_week: empty means "any value" Fire times = cartesian product across all fields. - `comment: optional string` - `dayOfMonth: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `dayOfWeek: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `hour: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `minute: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `month: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` - `second: optional array of ScheduleRange` - `end: optional number` - `start: optional number` - `step: optional number` ### Schedule Interval - `ScheduleInterval object { every, offset }` Interval is a duration-based rule. Fires every `every` from a stable anchor (workspace epoch), optionally phase-shifted by `offset`. - `every: optional string` - `offset: optional string` Phase shift within `every`. Must be < `every` (enforced at runtime). ### Schedule Range - `ScheduleRange object { end, start, step }` Inclusive numeric range with optional step. {start: 9} → 9 {start: 9, end: 17} → 9..17 {start: 0, end: 59, step: 15} → 0,15,30,45 `end` defaults to `start`; `step` defaults to 1. - `end: optional number` - `start: optional number` - `step: optional number`