API
REST API reference
Every tRPC procedure is also a REST endpoint. The same surface powers the dashboard, Swagger UI, @nixploy/cli, and MCP.
Authentication
Create a key under Settings → Profile on your panel. Send it on every request:
x-api-key: nxlp_...
URL conventions
- Queries →
GET /api/<router>.<procedure> - Mutations →
POST /api/<router>.<procedure> - Nested input → URL-encoded JSON
?input=...on GET - No /api/v1 prefix
# List projects
curl -sS -H "x-api-key: $NIXPLOY_API_KEY" \
"https://panel.example.com/api/project.all"
# Create a project
curl -sS -X POST \
-H "x-api-key: $NIXPLOY_API_KEY" \
-H "content-type: application/json" \
-d '{"name":"my-app"}' \
"https://panel.example.com/api/project.create"Interactive docs on your panel
Live OpenAPI lives on the installed panel (not mirrored here):
- UI:
https://<panel>/swagger - Spec:
https://<panel>/api/openapi.json
Use the Authorize button with your x-api-key.
CLI
npm i -g @nixploy/cli nixploy auth login --url https://panel.example.com --api-key nxlp_... nixploy doctor nixploy app list --project-id <id>
Endpoint catalog
High-traffic procedures. Full schemas and every mutation are on panel Swagger.
Projects
Top-level project CRUD and environment variable inheritance.
router: project
| Method | Path | Summary |
|---|---|---|
| GET | /api/project.all | List projects |
| GET | /api/project.one | Get one project |
| GET | /api/project.overview | Dashboard overview |
| GET | /api/project.search | Search projects/services |
| POST | /api/project.create | Create project |
| POST | /api/project.update | Update project |
| POST | /api/project.delete | Delete project |
| POST | /api/project.saveEnvironment | Save project env vars |
Environments
Per-project environments (e.g. production / staging).
router: environment
| Method | Path | Summary |
|---|---|---|
| GET | /api/environment.byProject | List environments |
| POST | /api/environment.create | Create environment |
| POST | /api/environment.update | Rename / update |
| POST | /api/environment.duplicate | Duplicate environment |
| POST | /api/environment.clone | Clone services into env |
| POST | /api/environment.delete | Delete environment |
Applications
Git/image apps — deploy, env, source, Swarm options.
router: application
| Method | Path | Summary |
|---|---|---|
| GET | /api/application.all | List applications |
| GET | /api/application.one | Get application |
| POST | /api/application.create | Create application |
| POST | /api/application.update | Update application |
| POST | /api/application.deploy | Deploy |
| POST | /api/application.redeploy | Redeploy |
| POST | /api/application.start | Start |
| POST | /api/application.stop | Stop |
| POST | /api/application.saveEnvironment | Save env vars |
| POST | /api/application.saveSource | Save git/source |
| POST | /api/application.rollback | Rollback deploy |
| POST | /api/application.delete | Delete application |
Compose
Docker Compose / Swarm stacks.
router: compose
| Method | Path | Summary |
|---|---|---|
| GET | /api/compose.all | List compose services |
| GET | /api/compose.one | Get compose service |
| POST | /api/compose.create | Create |
| POST | /api/compose.deploy | Deploy |
| POST | /api/compose.saveComposeFile | Save compose YAML |
| POST | /api/compose.saveEnvironment | Save env vars |
| POST | /api/compose.start | Start |
| POST | /api/compose.stop | Stop |
Templates
One-click catalog deploy.
router: template
| Method | Path | Summary |
|---|---|---|
| GET | /api/template.all | List templates |
| GET | /api/template.one | Template details |
| POST | /api/template.deploy | Deploy template |
Domains
Traefik hosts, TLS, and free smoke domains.
router: domain
| Method | Path | Summary |
|---|---|---|
| GET | /api/domain.byApplication | Domains for an app |
| GET | /api/domain.byCompose | Domains for compose |
| POST | /api/domain.create | Create domain |
| POST | /api/domain.update | Update domain |
| POST | /api/domain.delete | Delete domain |
| GET | /api/domain.generateDomain | Generate traefik.me host |
Deployments
History, logs, and stats.
router: deployment
| Method | Path | Summary |
|---|---|---|
| GET | /api/deployment.byApplication | App deployments |
| GET | /api/deployment.byCompose | Compose deployments |
| GET | /api/deployment.getLogs | Deployment log text |
| GET | /api/deployment.recent | Recent across org |
Preview deployments
PR previews — create, approve fork gates, delete.
router: previewDeployment
| Method | Path | Summary |
|---|---|---|
| GET | /api/previewDeployment.byApplication | List previews |
| POST | /api/previewDeployment.create | Create preview |
| POST | /api/previewDeployment.approve | Approve fork PR |
| POST | /api/previewDeployment.deny | Deny fork PR |
| POST | /api/previewDeployment.delete | Delete preview |
Databases
Same CRUD pattern per engine: *.all, *.one, *.create, *.update, *.delete, start/stop, saveEnvironment.
router: postgres / mysql / mariadb / mongo / redis
| Method | Path | Summary |
|---|---|---|
| GET | /api/postgres.all | List Postgres (same for mysql, …) |
| POST | /api/postgres.create | Create database service |
| POST | /api/postgres.deploy | Deploy / start service |
Backups
DB dumps, volume archives, S3 destinations, instance backup via webServer schedules.
router: backup / volumeBackup / destination
| Method | Path | Summary |
|---|---|---|
| GET | /api/backup.all | List DB backup schedules |
| POST | /api/backup.runManually | Run backup now |
| POST | /api/backup.restore | Restore from key |
| GET | /api/volumeBackup.all | Volume backup schedules |
| GET | /api/destination.all | S3 destinations |
| POST | /api/destination.testConnection | Test destination |
GitOps
Export / plan / apply nixploy.yaml.
router: gitops
| Method | Path | Summary |
|---|---|---|
| POST | /api/gitops.exportStack | Export YAML |
| POST | /api/gitops.plan | Plan changes |
| POST | /api/gitops.runApply | Apply plan |
| POST | /api/gitops.syncFromUrl | Sync from HTTPS URL |
Infra & observe
Remote servers, Docker control center, metrics, alerts.
router: server / docker / monitoring / observability
| Method | Path | Summary |
|---|---|---|
| GET | /api/server.all | List servers |
| POST | /api/server.setup | Join Swarm |
| GET | /api/docker.containers | List containers |
| GET | /api/monitoring.history | Metrics history |
| GET | /api/observability.incidents | Incidents |
| POST | /api/observability.upsertAlertRule | Upsert alert rule |
Org & platform
Members, capabilities, notifications, Copilot, tags, cron schedules.
router: organization / notification / ai / tag / schedule
| Method | Path | Summary |
|---|---|---|
| GET | /api/organization.settings | Org settings |
| POST | /api/organization.inviteMember | Invite member |
| GET | /api/organization.capabilityCatalog | Capability list |
| GET | /api/notification.all | Notification channels |
| POST | /api/ai.explainDeployment | Explain failed deploy |
| POST | /api/ai.generateCompose | Generate compose YAML |
| GET | /api/schedule.all | Schedules |
| GET | /api/tag.all | Tags |
Git providers
Connect providers, list repos/branches, webhook secrets.
router: github / gitlab / gitea / bitbucket
| Method | Path | Summary |
|---|---|---|
| GET | /api/github.all | List GitHub apps |
| POST | /api/github.listRepositories | List repos |
| GET | /api/gitlab.all | List GitLab providers |
| GET | /api/gitea.all | List Gitea providers |
| GET | /api/bitbucket.all | List Bitbucket providers |
Repository guide: docs/api.md · All docs