워크플로우 실행 읽기
실행을 종료 상태까지 추적하고 해당 자산을 수집합니다.
GET {base_url}/workflow-runs/{run_id}
GET {base_url}/workflow-runs/{run_id}?wait=45runs:read 권한이 필요합니다.
wait는 응답을 최대 그만큼의 초 동안 열어 두고, 상태가 바뀌는 즉시 반환합니다 — 폴링보다 저렴하고, 완료 소식을 더 빨리 알 수 있습니다. 상한은 45초이며, 없으면 호출은 즉시 반환됩니다.
응답
{
"run": {
"id": "0192f3d0-6c31-7a52-b4e8-3f9d1a7c5e20",
"status": "succeeded",
"created_at": "2026-09-22T04:10:00Z",
"completed_at": "2026-09-22T04:17:12Z",
"credits_used": 1792,
"chat_id": "0192f3c6-2e75-7b14-9a63-7c4e2d8f1b09",
"assets": [
{
"id": "0192f3e1-8b52-7c03-a41d-6e2f9b7c1d44",
"kind": "image",
"mime_type": "image/png",
"width": 1920,
"height": 1080,
"size_bytes": 2841233,
"url": "https://storage.googleapis.com/…",
"url_expires_at": "2026-09-22T05:17:12Z"
}
],
"error": null,
"poll_after_seconds": 60
}
}상태
status | 의미 | 다시 폴링할까요? |
|---|---|---|
queued | 수락됨, 아직 시작 안 됨 | 예 |
running | 워크플로가 실행 중입니다 | 예 |
succeeded | 완료됨; assets에 출력이 담김 | 아니요 |
failed | 중지됨; error 가 그 이유를 설명합니다 | 아니요 |
needs_input | 워크플로가 질문을 했고 답변을 기다리는 중입니다 | 아래 참조 |
expired | expires_at 전에 완료되지 않음 | 아니요 |
알아보지 못한 상태는 모두 비종료 상태로 간주하고 계속 폴링하세요 — 새 상태는 버전 변경 없이도 추가될 수 있습니다.
credits_used는 환불을 제외하고 실행이 지금까지 사용한 금액입니다 — 첫 청구 시점부터 존재하며, 완료된 뒤에만 나타나는 것이 아닙니다. 특정 워크플로에만 제한된 키는 다른 워크플로의 실행을 찾을 수 없음으로 읽습니다.
needs_input
일부 워크플로는 실행 중간에 질문을 합니다. 실행은 Morphic Studio의 누군가가 답변할 때까지 기다립니다; 답변하려면 chat_id를 여세요. 답변이 들어오면 실행은 자동으로 재개되며, expires_at 전에 아무도 답하지 않으면 만료됩니다.
에셋
assets에는 워크플로가 출력으로 선언한 자산만 담깁니다 — 단계들이 생성한 중간 파일 전체가 아닙니다. 여기에 들어오는 내용은 작성자가 Studio에서 내리는 결정입니다.
| 자산 필드 | 의미 |
|---|---|
id | Morphic에서 자산의 안정적인 ID; 저장해도 안전 |
kind | image, video, audio 또는 document |
width, height | 픽셀, image 및 video에 해당 |
duration_seconds | video 및 audio에 해당 |
url | 서명이 포함된, 짧게 유효한 다운로드 링크 |
url_expires_at | 해당 링크가 작동을 멈추는 시점 |
url은 만료됩니다. 받은 바이트를 자신의 저장소로 다운로드하세요; 나중에 필요하면 실행을 다시 읽어 새 링크를 받으세요. url을 영구적인 것처럼 저장하지 마세요.
assets 배열이 비어 있는 succeeded 실행은 워크플로가 최종 출력을 선언하지 않는다는 뜻입니다. 이는 워크플로 작성상의 공백이지 API 실패가 아닙니다 — Studio에서 작성자에게 어떤 단계의 출력이 산출물인지 표시해 달라고 요청하세요.