엔드포인트
앱 수정
에디터와 같은 방식으로, 지시문으로 앱을 수정해요.
https://www.setherion.com/api/v1/projects/{id}/edit요금제: 모든 요금제
Setherion 에디터에서 지시문을 쓸 때와 같은 수정을 실행해요. 에디터의 입력창 뒤에 있는 것과 같은 경로라서 같은 크레딧, 같은 요금제 규칙, 같은 안전 점검이 적용돼요. 결과는 저장되고, 다른 수정과 마찬가지로 앱의 기록에 추가돼요.
앱을 수정할 수 있어야 해요. 내 앱이거나, 그 워크스페이스의 Editor 또는 관리자이거나, Editor로 공유받은 앱이어야 해요.
크레딧은 앱의 비용을 내는 계정에서 차감돼요. 그 계정은 앱을 만든 사람이며, 꼭 여러분은 아니에요. 앱의 워크스페이스가 여러분이 쓸 수 있는 금액을 제한하고 있다면 그 한도도 적용돼요.
변경 내용은 저장되지만, 앱을 게시하기 전에는 온라인에 올라가지 않아요. 준비가 되면 앱 게시를 호출하세요.
요청
curl -X POST https://www.setherion.com/api/v1/projects/7c1e4a52-9b0d-4f3e-8a61-2d5f0c9e7b14/edit \
-H "Authorization: Bearer $SETHERION_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "prompt": "Make the buttons green and add an opening hours section" }'| 필드 | 타입 | 의미 |
|---|---|---|
prompt | string, 필수 | 무엇을 바꿀지, 어떤 언어로든 적어요. 앞뒤 공백은 무시돼요. 최대 4,000자예요. |
model | string, 선택 | 비워 두면 auto예요. 에디터에서처럼 Setherion이 요금제 안에서 골라요. 요금제에 포함되지 않은 모델은 거부되지 않고, 포함된 모델 중 가장 좋은 것으로 바뀌어요. |
앱에는 이미 코드가 있어야 해요. 한 번도 만들어진 적 없는 앱은 409로 응답해요.
수정이 끝나면 응답해요
수정에는 1분에서 몇 분이 걸리고, 끝날 때까지 요청은 열린 채로 있어요. 약 13분을 넘기는 수정은 서버가 중단해요.
작업하는 동안 Setherion은 10초마다 공백을 하나 보내요. 여러분과 우리 사이의 어떤 것도 조용한 연결을 닫지 않게 하려는 거예요. JSON 앞의 공백도 여전히 올바른 JSON이에요. 본문 전체를 읽은 다음에 파싱하세요.
수정이 시작되면 무슨 일이 일어나든 상태는 200이고, 결과가 어땠는지는 ok가 알려 줘요. 응답의 X-Setherion-Run 헤더에는 본문보다 앞서, 처음부터 그 수정의 runId가 들어 있어요.
연결을 닫아도 수정은 멈추지 않아요
클라이언트가 포기하거나 연결이 끊어져도 수정은 계속 진행되어, 기다렸을 때와 똑같이 앱에 반영되고 크레딧도 사용돼요. X-Setherion-Run 헤더를 보관해 두고 수정 진행 상황 확인으로 수정이 어디까지 왔는지 물어보세요. 수정을 중간에 멈추려면 Setherion 에디터에서, 수정이 실행 중임을 보여 주는 카드의 Stop을 누르세요.
응답
완료된 수정:
{
"ok": true,
"runId": "b3f0e2d1-6a47-4c8e-9d15-0f2b7a3c8e61",
"projectId": "7c1e4a52-9b0d-4f3e-8a61-2d5f0c9e7b14",
"changed": {
"added": ["src/components/OpeningHours.tsx"],
"modified": ["src/App.tsx", "src/index.css"],
"removed": []
}
}| 필드 | 타입 | 의미 |
|---|---|---|
ok | boolean | 수정이 끝나서 저장되면 true예요. |
runId | string | 수정의 id예요. Setherion이 알 수 없을 때는 빠져요. |
projectId | string | 수정한 앱이에요. Setherion이 알 수 없을 때는 빠져요. |
changed | object | 수정이 추가하고, 바꾸고, 삭제한 파일이에요. 각각 정렬된 경로 목록이에요. Setherion이 알 수 없을 때는 빠지는데, 이것은 아무것도 바뀌지 않았다는 뜻과는 달라요. |
builds | false | 수정된 앱이 더 이상 빌드되지 않을 때만 있어요. 수정은 기록됐고, 크레딧은 돌아와요. 이 값이 없다고 해서 앱이 빌드된다는 약속은 아니에요. |
refundedCredits | number | 크레딧이 돌아온 경우, 돌아온 크레딧의 양이에요. |
앱의 빌드를 망가뜨린 수정:
{
"ok": true,
"runId": "b3f0e2d1-6a47-4c8e-9d15-0f2b7a3c8e61",
"projectId": "7c1e4a52-9b0d-4f3e-8a61-2d5f0c9e7b14",
"changed": { "added": [], "modified": ["src/App.tsx"], "removed": [] },
"builds": false,
"refundedCredits": 10
}실행되지 않은 수정:
{ "ok": false, "error": "This edit costs 10 credits and you have 3.", "outOfCredits": true }outOfCredits는 수정 비용을 내는 계정에 크레딧이 남아 있지 않을 때만 있고, 그때 값은 true예요. 그 밖의 모든 거부 응답에는 ok: false와 error만 있고, 다른 것은 없어요.
수정이 ok: false로 응답하는 이유
수정이 이미 시작됐기 때문에 이 응답들은 상태 200으로 돌아와요.
This edit costs 10 credits and you have 3.이 문장에는outOfCredits: true가 함께 와요. 숫자는 그 수정의 가격과 여러분의 잔액이에요. 다른 사람의 앱에서는 다음 문장이 나오고, 그 사람의 잔액은 절대 밝히지 않아요:This app's owner has no credits left this month, so this edit cannot run.You have used 40 of the 100 credits a month this workspace allows you on its owner's plan. Ask an admin to raise it.이 문장은outOfCredits: true와 함께, 워크스페이스 소유자가 여러분이 쓸 수 있는 금액을 제한했을 때 나와요.You're working faster than our safety limit allows (120 an hour). You can carry on in about 12 minutes.수정과 빌드는 계정당 한 시간에 120번으로 속도가 조절돼요.The edit stopped before it finished. Nothing was charged for it.실행이 끝나지 못하고 종료됐어요.The edit could not start.또는The edit failed: ...이 두 문장은 우리 쪽에서 무언가 실패했을 때 나와요. 다시 시도해 보세요.
수정 진행 상황 확인
https://www.setherion.com/api/v1/projects/{id}/edit?run={runId}요금제: 모든 요금제
수정이 어디까지 왔는지 알려 줘요. 기다리기를 멈췄거나 처음부터 기다리지 않은 클라이언트를 위한 거예요. 무료이고, 1분쯤마다 물어봐도 안전해요.
curl "https://www.setherion.com/api/v1/projects/7c1e4a52-9b0d-4f3e-8a61-2d5f0c9e7b14/edit?run=b3f0e2d1-6a47-4c8e-9d15-0f2b7a3c8e61" \
-H "Authorization: Bearer $SETHERION_API_KEY"{
"ok": true,
"status": "done",
"runId": "b3f0e2d1-6a47-4c8e-9d15-0f2b7a3c8e61",
"projectId": "7c1e4a52-9b0d-4f3e-8a61-2d5f0c9e7b14",
"startedAt": "2026-10-16T15:13:02.118Z"
}status | ok | 의미 |
|---|---|---|
running | true | 아직 작업 중이에요. 1분쯤 뒤에 다시 물어보세요. |
done | true | 끝나서 앱에 저장됐어요. 준비가 되면 게시하세요. cutShort: true가 함께 오면 코드가 작성되자마자, 마무리 작업 없이 저장된 거예요. |
stopped | false | 끝나기 전에 멈췄어요. 앱은 아무것도 바뀌지 않았어요. |
failed | false | 실패했어요. 앱은 아무것도 바뀌지 않았어요. |
stalled | false | 몇 분 동안 움직이지 않아서 아마 멈춘 것 같아요. Setherion에서 앱을 열어 어디까지 갔는지 확인하세요. |
false인 것에는 error 문장도 함께 와요. 그 수정은 다시 보내도 돼요. 이 응답에는 바뀐 파일 목록이 없어요. 그 목록은 수정 자체의 응답에만 있어요.
| 상태 | error |
|---|---|
400 | Say which edit, in "run": the runId its POST answered. |
404 | No such app on this account. 또는 No such edit on this app. |
수정이 시작되기 전의 오류
| 상태 | 발생하는 경우 |
|---|---|
400 | prompt가 없거나, 비어 있거나, 4,000자보다 길어요. |
401 | 키가 없거나, 잘못됐거나, 취소됐어요. |
404 | 그런 앱이 없거나, 여러분의 키로는 수정할 수 없어요. 볼 수만 있는 앱도 여기에 포함돼요. |
409 | 앱에 아직 코드가 없어요. 먼저 Setherion에서 만드세요. |
정확한 문장
| 상태 | error |
|---|---|
400 | Say what to change, in "prompt". |
400 | Keep "prompt" under 4,000 characters. |
404 | No such app on this account. |
409 | This app has no code yet. Build it in Setherion first, then edit it here. |
이 페이지가 도움이 됐나요?
