POST /rpc. There is no REST routing — every call goes to the same URL with the procedure name encoded in the request.
Base URL
Available procedures
| Procedure | Description |
|---|---|
healthCheck | Returns "OK" — use to verify the server is reachable |
slideshowLoad | Load slideshows from the filesystem, optionally filtered by dataset ID |
slideshowSave | Save slideshows back to the filesystem with optional staleness protection |
slideshowAssistant | Send a natural language request to the AI assistant to modify slides |
Other server endpoints
In addition to ORPC procedures, the server exposes these HTTP endpoints:| Endpoint | Description |
|---|---|
GET /img/* | Serves image files from the img/ subdirectory inside the data directory. Used by image blocks in slideshows. |
GET /api-reference | OpenAPI 3.x specification auto-generated from procedure contracts. |
Calling the API
You can call procedures in two ways: using the typed ORPC client (recommended for TypeScript projects), or via raw HTTP.TypeScript client
Import theAppRouter type from @slides/api/routers/index to get full end-to-end type safety. You never need to write the procedure name as a string — the client infers it from the type.
Raw HTTP
Every procedure is aPOST request to /rpc/{procedureName} with a JSON body.
The ORPC wire format wraps the input in a JSON object. The
input key is not required for raw HTTP — post the input fields directly as the JSON body.OpenAPI specification
ORPC auto-generates an OpenAPI 3.x specification from the procedure contracts. You can access it at:Procedure reference
slideshowLoad
Load slideshows from the filesystem.
slideshowSave
Save slideshows back to the filesystem.
slideshowAssistant
Send a natural language request to the AI assistant.
Type reference
Slideshow
The top-level slideshow object with title, concepts, and slides.
Slide
A single slide with ordered blocks and a concept reference.
Blocks
All 13 content block types that can appear on a slide.