API Overview
The Studio server exposes the same REST API that the web UI uses. This document is intended for integration developers who want to call that API directly.
Base URL
The Studio API is /api/v1.
https://<studio-host>/api/v1/...
The legacy path /api/... is also still supported (as an alias). Examples in this document that still use /api/... can be used as-is, but for new code, use /api/v1.
v5These are not two versions of the same API, but different products with different listeners.
| What | Path | |
|---|---|---|
| Studio API | Studio's own API (this document) | /api/v1 |
| Platform API | A proxy that apps created by Studio call from their own origin | /api/v5 |
Authentication
Send the session token as a header.
Authorization: Bearer <token>
If the token is missing or expired, the server returns 401. When the web UI receives a 401, it clears the stored token and returns to the login screen. We recommend the same handling when calling the API directly — a 401 will not be resolved by retrying.
Response Format
Successful responses come wrapped in a data envelope.
{
"data": { "id": "prj_01H...", "name": "라인 모니터" }
}
Error responses contain a errors array. The message of the first item is the human-readable message.
{
"errors": [
{ "code": "project_not_found", "message": "프로젝트를 찾을 수 없습니다." }
]
}
It is safest for a client to check both the HTTP status and errors[0].message. There are cases where the server does not provide a message, and the web UI uses its own fallback text only in those cases.
Streaming Events
Progress while the agent is working is delivered via streaming. This applies to chat (/api/session/{id}/message, /api/ask) and notifications (/api/notifications/stream).
There are seven types of events.
type | Payload | Meaning |
|---|---|---|
assistant_text | text | Text fragment written by the agent |
tool_call | name, input | A tool was invoked |
tool_result | name, ok, summary | Tool result. ok indicates success |
file_change | path | A file changed |
commit | hash, message | Changes were committed |
done | — | This turn ended |
error | message | Error during processing |
Read until you receive done or error.
Attachments
Attachments such as images are sent inline as base64.
{
"name": "설비사진.png",
"mime": "image/png",
"dataBase64": "iVBORw0KGgo..."
}
Document Structure
| Document | What it covers |
|---|---|
| Session | Work session lifecycle, files, history, undo |
| Projects and Deployment | App creation, deployment, rollback, runtime |
| Chat | Conversations with the agent, query history |
| Skills | Field skill registration, extraction, import |
| Platform Integration | PlantPulse platform data exploration, semantic search |
| Administration | Configuration, users, watchers, audit, alarms |