---
title: 스케줄 만들기
description: 대시보드에서 주기적으로 실행되는 Agents 자동화를 만들고 주기를 고르는 방법을 살펴보세요.
---

스케줄은 Agents 대시보드에서 만듭니다. Developer API에는 생성·수정 엔드포인트가
없으므로 이 플로가 유일한 작성 방법입니다.

## 1. Scheduled 열기

`https://www.sume.com/agents/scheduled`으로 이동해 헤더의 Create 컨트롤을
사용하세요.

## 2. 지시문 작성하고 모델 고르기

지시문은 Agent가 매 실행마다 수행하는 내용입니다. 프롬프트라고 생각하세요.
실행 사이에 계속 유지되며, 호출자가 보내는 데이터는 따로 도착합니다
([고급: API로 스케줄 실행하기](/agents/actions/api-trigger) 참고).

지시문이 비어 있으면 실행할 수 없습니다. 실행 요청이 `400`으로 실패합니다.

## 3. 주기 설정하기

주기가 기본값이라 따로 고를 것은 없습니다. 얼마나 자주 실행할지만 정하세요.
**Scheduled**는 5필드 cron 표현식과 IANA 타임존을 받습니다. 시간별, 일별, 주별
프리셋은 표현식을 대신 써 주고, 커스텀은 원본 표현식을 받습니다.

**Advanced**에서 트리거를 **API call**로 바꿀 수 있습니다. 그러면
`trigger_type: "api"`가 저장되고 주기가 완전히 사라집니다. 스케줄은 서비스가
Sume를 호출할 때만 실행됩니다. 시계가 아니라 외부 시스템이 작업 시점을 정할 때
선택하세요.

`trigger_type`은 한 번 만들면 고정됩니다. API 전용 스케줄은 주기를 가질 수 없고,
cron 스케줄은 API 전용으로 내려갈 수 없습니다. 다만 cron 스케줄은 API 트리거도
함께 켜서 둘 다 받을 수 있습니다.

## 4. 지출 상한 설정하기

생성 지출 상한은 한 번의 실행이 생성에 쓸 수 있는 금액을 제한합니다. 설정하지
않으면 실행당 $1.00이 기본값입니다.

호출자는 `generation_spend_cap_usd`로 특정 실행의 상한을 낮출 수 있지만,
스케줄의 상한보다 높일 수는 없습니다.

## 5. 출력 스키마 바인딩하기 (선택)

기본적으로 실행의 `output`은 `sume/action-run-output/v1`에 투영됩니다.
`{ text, images[], videos[], audio[], files[] }` 형태입니다. **Output schema**
섹션에서 직접 만든 형태를 대신 바인딩할 수 있습니다. JSON Schema를 붙여 넣고,
이름을 정하고, `primary_output_key`를 지정하세요.

커스텀 스키마는 엄격한 부분집합을 따라야 합니다(OpenAI Structured Outputs가
강제하는 것과 같은 규칙입니다).

- 루트는 객체입니다.
- 모든 객체에 `"additionalProperties": false`를 설정합니다.
- 모든 속성이 `required`에 나타나야 합니다. 선택 속성은
  `"type": ["string", "null"]` 같은 nullable 유니온으로 표현합니다.
- 중첩은 최대 10단계, 속성은 5000개, enum 값은 1000개까지입니다.
- `$ref`는 `#/$defs/<name>` 또는 등록된 `SumeMediaFile#`만 가리킬 수 있습니다.

부분집합을 벗어난 스키마는 저장할 때 거부되며 위반한 규칙이 함께 표시됩니다.
**Load image example**을 누르면 동작하는 이미지 스키마가 채워집니다.

```json
{
  "type": "object",
  "additionalProperties": false,
  "required": ["caption", "image"],
  "properties": {
    "caption": { "type": ["string", "null"] },
    "image": { "$ref": "SumeMediaFile#" }
  }
}
```

이름을 `sume/action-image-v1`로 하고 primary output key를 `image`로
설정하세요. 그러면 실행이 `output.image.url`을 내구성 있는 `media.sume.com`
URL로 반환합니다. 두 필드를 비우면 기본 스키마로 돌아갑니다.

스키마 이름에는 `A-Z a-z 0-9 . _ / -`를 최대 64자까지 쓸 수 있습니다. Sume는
구조화 모델을 호출할 때 `A-Z a-z 0-9 _ -` 밖의 문자를 바꿔 씁니다. 그 프로바이더가
더 좁은 집합만 받기 때문입니다. 저장되고 영수증에 보고되는 것은 입력한
이름입니다. `sume/action-image-v1`은 `output_schema.name`에서도
`sume/action-image-v1` 그대로입니다.

`strict: false`도 받아서 영수증에 그대로 표시하지만, 부분집합 제약을 느슨하게
만들지는 않습니다. Sume는 기계적으로 충족할 수 있는 스키마만 채웁니다.

## 6. 활성화하기

스케줄을 Active로 설정하세요. Inactive인 동안 API 실행은
`409 action_inactive`로 거부됩니다.

## 7. 실행 엔드포인트 복사하기

API 트리거를 켜면 트리거 카드에 실행 엔드포인트, 필요한 스코프, 그리고 그대로
복사해 쓸 수 있는 요청이 표시됩니다.

```bash
curl -sS -X POST "https://api.sume.com/v1/actions/$ACTION_ID/runs" \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{}'
```

엔드포인트 호스트는 복사한 대시보드를 따릅니다. `*.dev.sume.com` 호스트에서
제공된 대시보드는 `https://api.dev.sume.com`을, 그 외에는
`https://api.sume.com`을 내놓습니다. 복사한 명령어를 프로덕션 코드에 붙여 넣기
전에 호스트를 확인하세요.

## 8. 실행 기록 확인하기

각 실행은 트리거 출처와 함께 나열됩니다. API로 시작한 실행에는 `API`,
스케줄 실행에는 `Cron` 라벨이 붙습니다.

## 다음

- [실행과 결과](/agents/actions/runs)
- [고급: API로 스케줄 실행하기](/agents/actions/api-trigger)
