## 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 } } ```