원클릭으로
automation
Create and manage OpenHands automations - scheduled tasks that run in sandboxes. Use for cron-scheduled automations.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Create and manage OpenHands automations - scheduled tasks that run in sandboxes. Use for cron-scheduled automations.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Parse email newsletters into individual stories. Use when structural/heuristic parsing fails and LLM extraction is needed.
Deduplication strategy for identifying when multiple newsletters cover the same story. Use when reviewing or improving dedup logic.
Run the DailyMe newsletter processing pipeline. Handles email ingestion, parsing, dedup, ranking, and optional digest delivery.
| name | automation |
| description | Create and manage OpenHands automations - scheduled tasks that run in sandboxes. Use for cron-scheduled automations. |
| triggers | ["automation","automations","scheduled task","cron job","cron schedule"] |
This skill provides documentation for creating and managing OpenHands automations - scheduled tasks that run in sandboxes on a cron schedule.
Quick Start: Use the prompt endpoint to create automations with a simple natural language prompt.
All automation endpoints use the OpenHands Cloud API. Replace {host} with your API host (e.g., staging.all-hands.dev or app.all-hands.dev).
| Endpoint | Method | Description |
|---|---|---|
{host}/api/automation/v1/preset/prompt | POST | Create automation from a prompt (recommended) |
{host}/api/automation/v1 | POST | Create custom automation |
{host}/api/automation/v1 | GET | List automations |
{host}/api/automation/v1/{id} | GET | Get automation details |
{host}/api/automation/v1/{id} | PATCH | Update automation |
{host}/api/automation/v1/{id} | DELETE | Delete automation |
{host}/api/automation/v1/{id}/dispatch | POST | Trigger a run manually |
{host}/api/automation/v1/{id}/runs | GET | List automation runs |
{host}/api/automation/v1/uploads | POST | Upload a tarball |
All requests require Bearer authentication with your OpenHands API key:
-H "Authorization: Bearer ${OPENHANDS_API_KEY}"
The OPENHANDS_API_KEY environment variable should be available in your session.
Use the preset/prompt endpoint to create automations with a simple natural language prompt. This is the recommended approach for most use cases.
curl -X POST "https://{host}/api/automation/v1/preset/prompt" \
-H "Authorization: Bearer ${OPENHANDS_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"name": "My Automation Name",
"prompt": "What you want the automation to do",
"trigger": {
"type": "cron",
"schedule": "0 9 * * *",
"timezone": "UTC"
}
}'
| Field | Required | Description |
|---|---|---|
name | Yes | Name of the automation (1-500 characters) |
prompt | Yes | Natural language instructions for what the automation should do |
trigger.schedule | Yes | Cron expression (5 fields: min hour day month weekday) |
trigger.timezone | No | IANA timezone (default: "UTC") |
| Field | Values | Description |
|---|---|---|
| Minute | 0-59 | Minute of the hour |
| Hour | 0-23 | Hour of the day (24-hour) |
| Day | 1-31 | Day of the month |
| Month | 1-12 | Month of the year |
| Weekday | 0-6 | Day of week (0=Sun, 6=Sat) |
| Schedule | Description |
|---|---|
0 9 * * * | Every day at 9:00 AM |
0 9 * * 1-5 | Weekdays at 9:00 AM |
0 9 * * 1 | Every Monday at 9:00 AM |
0 0 1 * * | First day of month at midnight |
*/15 * * * * | Every 15 minutes |
0 */6 * * * | Every 6 hours |
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "My Automation Name",
"trigger": {
"type": "cron",
"schedule": "0 9 * * *",
"timezone": "UTC"
},
"enabled": true,
"created_at": "2025-03-25T10:00:00Z"
}
curl -X POST "https://staging.all-hands.dev/api/automation/v1/preset/prompt" \
-H "Authorization: Bearer ${OPENHANDS_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"name": "Daily Report",
"prompt": "generate a daily status report and save it to a file in the workspace",
"trigger": {
"type": "cron",
"schedule": "0 9 * * 1",
"timezone": "UTC"
}
}'
curl "https://{host}/api/automation/v1?limit=20" \
-H "Authorization: Bearer ${OPENHANDS_API_KEY}"
curl "https://{host}/api/automation/v1/{automation_id}" \
-H "Authorization: Bearer ${OPENHANDS_API_KEY}"
curl -X PATCH "https://{host}/api/automation/v1/{automation_id}" \
-H "Authorization: Bearer ${OPENHANDS_API_KEY}" \
-H "Content-Type: application/json" \
-d '{"enabled": false}'
curl -X DELETE "https://{host}/api/automation/v1/{automation_id}" \
-H "Authorization: Bearer ${OPENHANDS_API_KEY}"
curl -X POST "https://{host}/api/automation/v1/{automation_id}/dispatch" \
-H "Authorization: Bearer ${OPENHANDS_API_KEY}"
curl "https://{host}/api/automation/v1/{automation_id}/runs?limit=20" \
-H "Authorization: Bearer ${OPENHANDS_API_KEY}"
Run Status Values:
| Status | Description |
|---|---|
PENDING | Run scheduled, waiting for dispatch |
RUNNING | Execution in progress |
COMPLETED | Run finished successfully |
FAILED | Run failed, check error_detail |
For advanced use cases where you need full control over your automation code, you may need to create a custom automation with your own tarball and entrypoint.
When to use custom automation:
See CUSTOM.md for:
Automation code uses the OpenHands Software Agent SDK. See https://docs.openhands.dev/sdk for complete API reference.
pip install openhands-sdk openhands-workspace openhands-tools