Skip to content

Control API

The daemon exposes a localhost control API that the desktop app uses to manage the system. It’s also scriptable, so you can automate Lattis without the GUI. These endpoints live alongside the Public API on 127.0.0.1:1234.

Method & pathPurpose
GET /control/statusFull daemon snapshot.
POST /control/download/{id}Start a catalogue download.
POST /control/download/{id}/cancelCancel a download.
POST /control/modelsAdd a custom model.
DELETE /control/models/{id}Delete a downloaded model.
POST /control/loadLoad a model into the router.
POST /control/unloadUnload a model.
POST /control/remote/{provider}/keySet / clear a provider API key.
POST /control/remote/{provider}/enabledToggle the provider’s manual switch.
POST /control/remote/{provider}/connectBegin an OAuth connection.
POST /control/remote/{provider}/completeFinish a paste-code OAuth flow.
POST /control/remote/{provider}/disconnectDisconnect a provider.
POST /control/shutdownStop the daemon.
Terminal window
# Snapshot of everything: models, downloads, providers, usage
curl http://127.0.0.1:1234/control/status
# Start and cancel a download
curl -X POST http://127.0.0.1:1234/control/download/qwen3-4b-instruct-2507
curl -X POST http://127.0.0.1:1234/control/download/qwen3-4b-instruct-2507/cancel
# Load / unload a model into the router
curl -X POST http://127.0.0.1:1234/control/load \
-H 'Content-Type: application/json' -d '{"id":"qwen3-4b-instruct-2507"}'
curl -X POST http://127.0.0.1:1234/control/unload \
-H 'Content-Type: application/json' -d '{"id":"qwen3-4b-instruct-2507"}'
# Stop the daemon
curl -X POST http://127.0.0.1:1234/control/shutdown

{provider} is anthropic or openai. See Cloud Providers for the full connection flows.

Like the public API, the control API assumes a loopback bind and is unauthenticated. Keep it bound to 127.0.0.1.