POST /api/v1/vibe/stream is the primary endpoint. It creates or continues a build session and returns an SSE (Server-Sent Events) stream of progress events.

Request
Create a new project
Continue an existing project
Fields
Field names are snake_case. The full schema isVibeRequestSchema in src/routes/vibe.ts.
Answering a question from the agent
Answers do not go to this endpoint. When the stream emitsask_user_question, reply on its own endpoint:
POST /api/v1/vibe/plan/approve with { project_id, approved, feedback?, edited_plan? }.
Response
The response is an SSE stream (text/event-stream). Each event is a JSON object with a type field.
Event types
Each event’stype is a member of StreamChunkType (src/types/index.ts). The common ones:
The V1 stream then closes with a literal
data: [DONE]\n\n. POST /api/v1/vibe/stream_v2 carries the same type on the SSE event: line and closes with event: done instead.
Error event
Completion event
Non-stream responses
If the backend can’t open a stream (queued, or answering a pending question), it returns a JSON response instead:202 with code: "message_queued" means the build was accepted and will start when a worker is available. Reconnect to the same endpoint to receive the stream.