REFERENCE / REST API
REST API
Studio is a Spring Boot application that exposes the backend over HTTP. The same endpoints back the CLI, the Studio frontend, and third-party integrations. They’re grouped into four controllers.
Base paths
| Base path | Controller |
|---|---|
|
|
|
|
|
|
|
|
Selected endpoints
A non-exhaustive tour — the OpenAPI artifact below is the source of truth for every operation.
| Method + path | Purpose |
|---|---|
|
List prompt specs in the active store. |
|
Read a single spec by id. |
|
Create a prompt draft. |
|
Update an existing spec. |
|
Default prompt template used when creating drafts. |
|
Release by id. Returns the spec carrying its |
|
Complete a two-phase release. |
|
Execute a free-form prompt (no spec on disk). |
|
Execute a stored prompt. |
|
Retry a failed execution. |
|
Retry a failed push to the remote store. |
|
Retire a prompt. |
|
List revisions for a spec. |
|
Older executions for a prompt. |
|
Server-sent events stream for live execution updates. |
|
Aggregate prompt statistics. |
|
Distinct prompt groups in the active store. |
| Method + path | Purpose |
|---|---|
|
Active project, or 404 if none. |
|
Create a new prompt store. |
|
Clone an existing remote store. |
|
List all projects. |
|
Repository owners visible on the remote host. |
|
Connect to an existing repository. |
|
Switch the active project. |
|
SSE stream for a long-running store operation. |
| Method + path | Purpose |
|---|---|
|
Vendor + model catalog used to populate dropdowns. |
|
Feature-flag style description of this Studio instance. |
OpenAPI
A full OpenAPI 3.1 document is generated as part of the webapp build at
apps/promptlm-webapp/target/generated/openapi/promptlm-webapp-openapi.json.
That artifact is the authoritative reference for request and response
schemas, including operation IDs and OpenAPI tags.
The same spec also drives the generated API client at
components/promptlm-api-client/, used by the Studio frontend and the
CLI.
Server-sent events
Two SSE endpoints stream long-running operations rather than blocking on HTTP responses:
-
GET /api/prompts/{promptSpecId}/execution/events— execution lifecycle and partial responses while a prompt runs. -
GET /api/store/events/{operationId}— store operations (create, clone, switch) that may span several seconds.
Both produce text/event-stream.