Scheduled Jobs
Scheduled Jobs
toothfairyai@latest…Manager for scheduled jobs (cron jobs) operations.
This manager provides methods to create, update, and manage scheduled jobs.
Example:
>>> client = ToothFairyClient(api_key="...", workspace_id="...")
>>> scheduled_job = client.scheduled_jobs.create(
... name="Daily Report",
... agent_id="agent-123",
... schedule={"frequency": "DAILY", "hour": 9, "minute": 0},
... timezone="UTC",
... )
Accessed via client.scheduledJobs.
Methods
| Method | HTTP | Endpoint |
|---|---|---|
create | POST | POST /scheduled_job/create |
update | POST | POST /scheduled_job/update |
delete | DELETE | DELETE /scheduled_job/delete/{scheduled_job_id} |
get | GET | GET /scheduled_job/get/{scheduled_job_id} |
list | GET | GET /scheduled_job/list |
get_active | — | derived |
get_by_status | — | derived |
get_by_agent | — | derived |
pause | — | derived |
resume | — | derived |
search | — | derived |
create
Create a new scheduled job.
def create(
name: str,
agent_id: str,
custom_prompt_id: str,
timezone: str = 'UTC',
description: Optional[str] = None,
forced_prompt: Optional[str] = None,
schedule: Optional[Union[CronSchedule, Dict[str, Any]]] = None,
frequency: CronJobFrequency = 'DAILY',
interval: Optional[int] = None,
cron_expression: Optional[str] = None,
day_of_week: Optional[int] = None,
day_of_month: Optional[int] = None,
hour: Optional[int] = None,
minute: Optional[int] = None,
is_active: bool = True,
start_date: Optional[str] = None,
end_date: Optional[str] = None,
status: Optional[CronJobStatusRequest] = None,
execution_config: Optional[Union[CronExecutionConfig, Dict[str, Any]]] = None,
notification_config: Optional[Union[CronNotificationConfig, Dict[str, Any]]] = None,
retry_config: Optional[Union[CronRetryConfig, Dict[str, Any]]] = None,
metadata: Optional[Dict[str, Any]] = None,
cron_type: Optional[str] = None,
routine_config: Optional[Union[Dict[str, Any], Any]] = None
) -> ScheduledJob
Endpoint: POST /scheduled_job/create · API service
Request fields
| Field | Type | Required | Description |
|---|---|---|---|
id | string | no | Unique identifier |
workspaceid | string | yes | Unique workspace identifier (UUID v4) |
name | string | yes | Name of the resource |
description | string | no | Detailed description of purpose and capabilities |
forcedPrompt | string | no | Forced prompt text to use for the job (max 1024 chars) |
agentID | string | yes | ID of the agent associated with this resource |
type | string | no | Type classification (free-form string identifier) |
routineConfig | string | no | Configuration for routine jobs (maxPlannedActions) |
customPromptID | string | no | ID of a custom prompt to use |
schedule | string | no | Schedule configuration object (frequency, interval, cronExpression, etc.) |
timezone | string | no | Timezone for the schedule (e.g. UTC, America/New_York) |
isActive | boolean | no | Whether the job is currently active |
status | string | no | Current status of the resource |
Allowed: ACTIVE, PAUSED, PENDING, RUNNING, FAILED, COMPLETED |
| lastRunAt | string | no | Timestamp of the last execution |
| nextRunAt | string | no | Timestamp of the next scheduled execution |
| startDate | string | no | Start date for the schedule |
| endDate | string | no | End date for the schedule |
| executionConfig | string | no | JSON-encoded execution configuration |
| notificationConfig | string | no | JSON-encoded notification configuration |
| retryConfig | string | no | JSON-encoded retry policy configuration |
| metadata | string | no | Arbitrary metadata key-value pairs (JSON) |
| createdBy | string | no | ID of the user who created this resource |
| updatedBy | string | no | ID of the user who last updated this resource |
| createdAt | string | no | Timestamp when this resource was created |
| updatedAt | string | no | Timestamp when this resource was last updated |
The Python SDK accepts
snake_casekeyword arguments and converts them to thecamelCasewire fields shown above.
Response fields
| Field | Type | Description |
|---|---|---|
id | string | Unique identifier for the scheduled job |
name | string | Name of the resource |
description | string | Detailed description of purpose and capabilities |
forcedPrompt | string | Forced prompt override |
type | string | Type classification (free-form string identifier) |
Allowed: TASK, ROUTINE |
| routineConfig | object | Configuration for routine jobs (maxPlannedActions) |
| agentID | string | Agent to execute |
| customPromptID | string | Custom prompt to use |
| workspaceID | string | Unique workspace identifier (UUID v4) |
| schedule | object | Schedule configuration |
| timezone | string | Timezone for scheduling |
| isActive | boolean | Whether the job is active |
| lastRunAt | string | Timestamp of the last execution |
| nextRunAt | string | Timestamp of the next scheduled execution |
| status | string | Current job status
Allowed: ACTIVE, PAUSED, DISABLED, RUNNING, SENSING, PLANNING, ACTING, COMPLETED, FAILED, PENDING |
| executionConfig | object | JSON-encoded execution configuration |
| notificationConfig | object | JSON-encoded notification configuration |
| retryConfig | object | JSON-encoded retry policy configuration |
| metadata | object | Arbitrary metadata key-value pairs (JSON) |
| startDate | string | Start date for the schedule |
| endDate | string | End date for the schedule |
| createdBy | string | ID of the user who created this resource |
| updatedBy | string | ID of the user who last updated this resource |
| createdAt | string | Timestamp when this resource was created |
| updatedAt | string | Timestamp when this resource was last updated |
Example
client.scheduledJobs.create(name="…", agent_id="agent-id", custom_prompt_id="agent-id")
update
Update a scheduled_job.
def update(scheduled_job_id: str) -> ScheduledJob
Endpoint: POST /scheduled_job/update · API service
Request fields
| Field | Type | Required | Description |
|---|---|---|---|
id | string | yes | Unique identifier |
workspaceid | string | no | Unique workspace identifier (UUID v4) |
name | string | no | Name of the resource |
description | string | no | Detailed description of purpose and capabilities |
forcedPrompt | string | no | Forced prompt text to use for the job (max 1024 chars) |
agentID | string | no | ID of the agent associated with this resource |
type | string | no | Type classification (free-form string identifier) |
routineConfig | string | no | Configuration for routine jobs (maxPlannedActions) |
customPromptID | string | no | ID of a custom prompt to use |
schedule | string | no | Schedule configuration object (frequency, interval, cronExpression, etc.) |
timezone | string | no | Timezone for the schedule (e.g. UTC, America/New_York) |
isActive | boolean | no | Whether the job is currently active |
status | string | no | Current status of the resource |
Allowed: ACTIVE, PAUSED, PENDING, RUNNING, FAILED, COMPLETED |
| lastRunAt | string | no | Timestamp of the last execution |
| nextRunAt | string | no | Timestamp of the next scheduled execution |
| startDate | string | no | Start date for the schedule |
| endDate | string | no | End date for the schedule |
| executionConfig | string | no | JSON-encoded execution configuration |
| notificationConfig | string | no | JSON-encoded notification configuration |
| retryConfig | string | no | JSON-encoded retry policy configuration |
| metadata | string | no | Arbitrary metadata key-value pairs (JSON) |
| createdBy | string | no | ID of the user who created this resource |
| updatedBy | string | no | ID of the user who last updated this resource |
| createdAt | string | no | Timestamp when this resource was created |
| updatedAt | string | no | Timestamp when this resource was last updated |
The Python SDK accepts
snake_casekeyword arguments and converts them to thecamelCasewire fields shown above.
Response
Returns the ScheduledJob object — fields documented in the create section above.
Example
client.scheduledJobs.update(scheduled_job_id="agent-id")
delete
Delete a scheduled_job.
def delete(scheduled_job_id: str) -> Dict[str, bool]
Endpoint: DELETE /scheduled_job/delete/{scheduled_job_id} · API service
Example
client.scheduledJobs.delete(scheduled_job_id="agent-id")
get
Get a scheduled_job by ID.
def get(scheduled_job_id: str) -> ScheduledJob
Endpoint: GET /scheduled_job/get/{scheduled_job_id} · API service
Response
Returns the ScheduledJob object — fields documented in the create section above.
Example
client.scheduledJobs.get(scheduled_job_id="agent-id")
list
List all scheduled jobs.
def list(
limit: Optional[int] = None,
offset: Optional[int] = None
) -> ListResponse
Endpoint: GET /scheduled_job/list · API service
Example
client.scheduledJobs.list()
get_active
Get all active scheduled jobs.
def get_active() -> List[ScheduledJob]
Derived method — delegates to another SDK call and performs no direct HTTP request.
Example
client.scheduledJobs.get_active()
get_by_status
Get scheduled jobs by status.
def get_by_status(status: CronJobStatus) -> List[ScheduledJob]
Derived method — delegates to another SDK call and performs no direct HTTP request.
Example
client.scheduledJobs.get_by_status(status=…)
get_by_agent
Get scheduled jobs by agent ID.
def get_by_agent(agent_id: str) -> List[ScheduledJob]
Derived method — delegates to another SDK call and performs no direct HTTP request.
Example
client.scheduledJobs.get_by_agent(agent_id="agent-id")
pause
Pause a scheduled job.
def pause(scheduled_job_id: str) -> ScheduledJob
Derived method — delegates to another SDK call and performs no direct HTTP request.
Example
client.scheduledJobs.pause(scheduled_job_id="agent-id")
resume
Resume a paused scheduled job.
def resume(scheduled_job_id: str) -> ScheduledJob
Derived method — delegates to another SDK call and performs no direct HTTP request.
Example
client.scheduledJobs.resume(scheduled_job_id="agent-id")
search
Search scheduled jobs by name.
def search(search_term: str) -> List[ScheduledJob]
Derived method — delegates to another SDK call and performs no direct HTTP request.
Example
client.scheduledJobs.search(search_term="…")