Skip to main content

CLI & REST API

CLI Installation

The RailPush CLI lets you manage services, deployments, databases, and more from your terminal.

terminal
# macOS (Apple Silicon)
curl -fsSL https://railpush.com/dl/railpush-darwin-arm64 -o railpush && chmod +x railpush && sudo mv railpush /usr/local/bin/

# macOS (Intel)
curl -fsSL https://railpush.com/dl/railpush-darwin-amd64 -o railpush && chmod +x railpush && sudo mv railpush /usr/local/bin/

# Linux (amd64)
curl -fsSL https://railpush.com/dl/railpush-linux-amd64 -o railpush && chmod +x railpush && sudo mv railpush /usr/local/bin/

# Linux (arm64)
curl -fsSL https://railpush.com/dl/railpush-linux-arm64 -o railpush && chmod +x railpush && sudo mv railpush /usr/local/bin/

CLI Quick Start

terminal
# Login
railpush login --host railpush.com

# List your services
railpush services list

# Trigger a deploy
railpush deploy <service-id>

# View logs
railpush logs <service-id> --tail 100

# Manage environment variables
railpush env list <service-id>
railpush env set <service-id> DATABASE_URL=postgres://... NODE_ENV=production

# Blueprint operations
railpush blueprints list
railpush blueprints sync <blueprint-id>

# Database management
railpush databases list
railpush databases create --name mydb --engine postgresql --plan s

CLI Commands

CommandDescription
railpush loginAuthenticate and store credentials
railpush logoutRemove stored credentials
railpush whoamiShow current user info
railpush services listList all services
railpush services get <id>Show service details (JSON)
railpush services createCreate a service (--name, --type, --repo)
railpush services delete <id>Delete a service
railpush services restart <id>Restart a running service
railpush deploy <service-id>Trigger a new deploy
railpush deploys list <service-id>List deploy history
railpush logs <service-id>View service logs (--tail N)
railpush env list <service-id>List environment variables
railpush env set <service-id> K=VSet environment variables
railpush blueprints listList all blueprints
railpush blueprints sync <id>Trigger blueprint sync
railpush databases listList all databases
railpush databases createCreate a database (--name, --plan)
railpush domains list <service-id>List custom domains
railpush domains add <sid> <domain>Add a custom domain

REST API

The RailPush API is a RESTful JSON API. Authenticate with a Bearer token from /api/v1/auth/login (JWT) or a scoped API key from /api/v1/auth/api-keys.

Authentication

terminal
# Login and get a token
curl -X POST https://railpush.com/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "you@example.com", "password": "your-password"}'

# Use the token in subsequent requests
curl https://railpush.com/api/v1/services \
-H "Authorization: Bearer YOUR_TOKEN"

Endpoints

All endpoints are under /api/v1 and require a Bearer token unless noted.

Resource endpoints accept either full UUIDs or unique short UUID prefixes (for example 34a927ba). If a resource is not found, error responses include error_code, message, optional suggestion, and docs_url.

Destructive deletes use a confirmation-token flow and default to soft-delete with a 72-hour recovery window before hard delete is allowed.

List endpoints support optional cursor pagination via limit and cursor. When either is provided, responses use { data, pagination }.

error-response.json
{
"error_code": "SERVICE_NOT_FOUND",
"message": "no service with ID 34a927ba",
"error": "no service with ID 34a927ba",
"suggestion": "Did you mean 34a927ba-9c3b-4004-8a35-e7db26b12a81?",
"docs_url": "https://docs.railpush.com/api/errors#SERVICE_NOT_FOUND"
}

Services

MethodEndpointDescription
GET/servicesList services (filters: type,status,runtime,plan,name,repo_url,project_id,query,suspended; pagination: limit,cursor)
POST/servicesCreate a service
POST/services/:id/cloneClone a service with optional field overrides and optional env-var copy
POST/services/bulk-updateApply a partial update payload to multiple services (supports dry_run, transaction_mode)
POST/services/bulk-restartRestart multiple services in one request (supports dry_run, transaction_mode)
GET/services/:idGet service details
GET/services/:id/event-webhookGet deploy event webhook config
PUT/services/:id/event-webhookSet deploy event webhook config
POST/services/:id/event-webhook/testSend deploy.test webhook payload
PATCH/services/:idUpdate a service (supports deletion_protection)
GET/services/:id/retentionGet service log retention policy
PUT/services/:id/retentionSet service log retention policy
GET/services/:id/mtlsGet service mTLS policy (enabled/mode/allowed services)
PUT/services/:id/mtlsSet service mTLS policy (strict/permissive + allowed services)
GET/services/:id/access-controlGet service ingress access-control policy (IP allowlist/blocklist + active CIDRs)
PUT/services/:id/access-controlSet service ingress access-control policy (mode, CIDR rules, optional deny response)
GET/services/:id/access-control/logList recent access-control policy change events for the service
GET/services/:id/disksList persistent disk attachment
PUT/services/:id/disksCreate/replace persistent disk attachment
DELETE/services/:id/disksDelete persistent disk attachment
DELETE/services/:idDelete flow (token challenge -> soft-delete; optional hard_delete after recovery window)
POST/services/:id/restoreRestore a soft-deleted service
POST/services/:id/restartRestart a service
POST/services/:id/suspendSuspend a service
POST/services/:id/resumeResume a suspended service
GET/services/:id/dependenciesList service dependencies (databases, key-value, and service references)

Deploys

MethodEndpointDescription
POST/services/bulk-deployTrigger deploys for multiple services (supports dry_run, transaction_mode)
POST/services/:id/deploysTrigger a deploy
GET/services/:id/deploysList deploys (filters: status,branch,since,until; pagination: limit,cursor)
GET/services/:id/deploys/:deployIdGet deploy details
GET/services/:id/deploys/:deployId/queueGet queue position and estimated wait time for a deploy
POST/services/:id/deploys/:deployId/waitWait for deploy completion (timeout query param)
POST/services/:id/deploys/:deployId/rollbackRollback to a deploy
GET/services/:id/ai-fix/diagnosisGet a plain-English AI diagnosis for the latest failed deploy (optional deploy_id query)
POST/services/:id/ai-fixStart AI auto-fix for a failed deploy (supports hint and preview_only mode for proposed diff)
GET/services/:id/ai-fix/statusGet AI auto-fix session status

Env Vars & Domains

MethodEndpointDescription
POST/services/bulk-set-envSet env vars for multiple services (merge/replace + dry_run + transaction_mode)
GET/services/:id/env-varsList env vars (pagination: limit,cursor)
PUT/services/:id/env-varsBulk replace all env vars (confirm required for removals)
PATCH/services/:id/env-varsUpsert env vars (additive)
GET/services/:id/custom-domainsList custom domains (pagination: limit,cursor)
POST/services/:id/custom-domainsAdd custom domain (with optional redirect_target)
DELETE/services/:id/custom-domains/:domainRemove custom domain
GET/services/:id/rewrite-rulesList rewrite/proxy rules
POST/services/:id/rewrite-rulesAdd rewrite/proxy rule
DELETE/services/:id/rewrite-rules/:ruleIdRemove rewrite rule

Logs & Metrics

MethodEndpointDescription
GET/services/:id/logsQuery service logs (supports type,search,regex,since,until,level,filter for structured fields)
GET/services/:id/log-drainsList configured external log forwarding drains for a service
POST/services/:id/log-drainsCreate a log drain (destination, config, filters, and delivery controls)
DELETE/services/:id/log-drains/:drainIdDelete a configured log drain
GET/services/:id/log-drains/:drainId/statsGet log drain delivery stats (sent, failed, lag, last error)
POST/services/:id/log-drains/:drainId/testSend a synthetic test log entry through a drain
GET/services/:id/log-alertsList log-based alert rules for a service
POST/services/:id/log-alertsCreate a log-based alert rule (filter/pattern + threshold/window + channels/cooldown)
PATCH/services/:id/log-alerts/:alertIdUpdate a log-based alert rule
DELETE/services/:id/log-alerts/:alertIdDelete a log-based alert rule
GET/services/:id/metricsGet current resource usage
GET/services/:id/metrics/historyGet Prometheus-backed usage history (period=1h

Autoscaling & Jobs

MethodEndpointDescription
GET/services/:id/autoscalingGet autoscaling policy
PUT/services/:id/autoscalingSet autoscaling policy
POST/services/:id/execExecute a command in the running service container (synchronous)
POST/services/:id/shellCreate persistent shell session for a service container
POST/shell/:sessionId/execExecute command inside an existing shell session
DELETE/shell/:sessionIdClose shell session
GET/services/:id/fsList files/directories in service container (read-only)
GET/services/:id/fs/readRead file content from service container (read-only, size-limited)
GET/services/:id/fs/searchSearch files in service container by glob pattern
GET/services/:id/jobsList one-off jobs (pagination: limit,cursor)
POST/services/:id/jobsRun a one-off job
GET/jobs/:jobIdGet job details

Databases (PostgreSQL)

MethodEndpointDescription
GET/databasesList databases (filters: plan,status,pg_version,name,query; pagination: limit,cursor)
POST/databasesCreate a database
POST/databases/bulk-updateApply a partial update payload to multiple databases (supports dry_run, transaction_mode)
GET/databases/:idGet database details (credentials redacted by default)
POST/databases/:id/credentials/revealReveal plaintext credentials (explicit acknowledgement required)
POST/databases/:id/rotate-passwordRotate database password and sync linked service references
POST/databases/:id/queryExecute SQL (default read-only; optional write mode requires explicit acknowledgement)
GET/databases/:id/retentionGet database backup retention policy
PUT/databases/:id/retentionSet database backup retention policy
GET/databases/:id/recovery-windowGet available point-in-time recovery window
PATCH/databases/:idUpdate a database (supports deletion_protection)
DELETE/databases/:idDelete flow (token challenge -> soft-delete; optional confirm_linked_services and hard_delete after recovery window)
POST/databases/:id/restoreRestore a soft-deleted database, restore from backup_id, or perform time-targeted restore with target_time (new database by default, optional in-place)
POST/databases/:id/cloneClone a database from latest backup, backup_id, or target_time; supports optional plan override and sanitization rules
GET/databases/:id/clone-statusGet clone progress/status for a cloned database
GET/databases/:id/restoresList database restore jobs and statuses
GET/databases/:id/backupsList backups (pagination: limit,cursor)
POST/databases/:id/backupsTrigger a backup
GET/databases/:id/connected-servicesList services connected to this database
GET/databases/:id/impactShow blast radius / affected services for this database
GET/databases/:id/replicasList read replicas
POST/databases/:id/replicasCreate a read replica
POST/databases/:id/replicas/:rid/promotePromote replica
POST/databases/:id/ha/enableEnable high availability

Key-Value (Redis)

MethodEndpointDescription
GET/keyvalueList key-value stores (filters: plan,status,name,query; pagination: limit,cursor)
POST/keyvalueCreate a key-value store
GET/keyvalue/:idGet key-value details (credentials redacted by default)
POST/keyvalue/:id/credentials/revealReveal plaintext credentials (explicit acknowledgement required)
PATCH/keyvalue/:idUpdate plan, eviction policy, or deletion_protection
DELETE/keyvalue/:idDelete flow (token challenge -> soft-delete; optional hard_delete after recovery window)
POST/keyvalue/:id/restoreRestore a soft-deleted key-value store

MySQL

MethodEndpointDescription
GET/mysqlList MySQL instances
POST/mysqlCreate a MySQL instance
GET/mysql/:idGet MySQL details
POST/mysql/:id/credentials/revealReveal credentials
PATCH/mysql/:idUpdate MySQL instance
DELETE/mysql/:idSoft-delete with 72h recovery window
POST/mysql/:id/restoreRestore a soft-deleted instance

MongoDB

MethodEndpointDescription
GET/mongodbList MongoDB instances
POST/mongodbCreate a MongoDB instance
GET/mongodb/:idGet MongoDB details
POST/mongodb/:id/credentials/revealReveal credentials
PATCH/mongodb/:idUpdate MongoDB instance
DELETE/mongodb/:idSoft-delete with 72h recovery window
POST/mongodb/:id/restoreRestore a soft-deleted instance

Meilisearch

MethodEndpointDescription
GET/meilisearchList Meilisearch instances
POST/meilisearchCreate a Meilisearch instance
GET/meilisearch/:idGet Meilisearch details
POST/meilisearch/:id/credentials/revealReveal API key
PATCH/meilisearch/:idUpdate Meilisearch instance
DELETE/meilisearch/:idSoft-delete with 72h recovery window
POST/meilisearch/:id/restoreRestore a soft-deleted instance

Object Storage (MinIO)

MethodEndpointDescription
GET/object-storageList object storage instances
POST/object-storageCreate an object storage instance
GET/object-storage/:idGet object storage details
POST/object-storage/:id/credentials/revealReveal access/secret keys
PATCH/object-storage/:idUpdate object storage instance
DELETE/object-storage/:idSoft-delete with 72h recovery window
POST/object-storage/:id/restoreRestore a soft-deleted instance

Blueprints

MethodEndpointDescription
GET/blueprintsList blueprints
POST/blueprintsCreate a blueprint (auto-syncs)
GET/blueprints/:idGet blueprint details
PATCH/blueprints/:idUpdate blueprint (move to folder)
DELETE/blueprints/:idDelete a blueprint
POST/blueprints/:id/syncTrigger blueprint sync

Env Groups

MethodEndpointDescription
GET/env-groupsList env groups
POST/env-groupsCreate an env group
GET/env-groups/:idGet env group details
PATCH/env-groups/:idUpdate an env group
DELETE/env-groups/:idDelete an env group
GET/env-groups/:id/varsList group variables
PUT/env-groups/:id/varsBulk update group variables
POST/env-groups/:id/linkLink a service
DELETE/env-groups/:id/link/:serviceIdUnlink a service
GET/env-groups/:id/servicesList linked services (set include_usage=true for used/missing key analysis)

Projects & Environments

MethodEndpointDescription
GET/projectsList projects
POST/projectsCreate a project
GET/projects/:idGet project details
PATCH/projects/:idUpdate a project
DELETE/projects/:idDelete a project
GET/projects/:id/environmentsList environments
POST/projects/:id/environmentsCreate an environment
PATCH/environments/:idUpdate an environment
DELETE/environments/:idDelete an environment
GET/project-foldersList project folders
POST/project-foldersCreate a project folder
PATCH/project-folders/:idUpdate or move a folder
DELETE/project-folders/:idDelete a folder
GET/preview-environmentsList preview environments
POST/preview-environmentsCreate or upsert a preview environment manually
PATCH/preview-environments/:idUpdate preview metadata/service overrides and optionally redeploy
DELETE/preview-environments/:idClose preview and delete preview service resources

Registered Domains & DNS

MethodEndpointDescription
GET/domainsList registered domains
POST/domainsRegister a domain
GET/domains/:idGet domain details
DELETE/domains/:idDelete a registered domain
GET/domains/:id/dnsList DNS records
POST/domains/:id/dnsCreate a DNS record
PUT/domains/:id/dns/:recordIdUpdate a DNS record
DELETE/domains/:id/dns/:recordIdDelete a DNS record

Workspace & Billing

MethodEndpointDescription
GET/searchWorkspace search across services, databases, and key-value stores (?q=...)
GET/workspace/topologyGet dependency graph for default workspace
GET/workspaces/:id/topologyGet dependency graph for a specific workspace
GET/rate-limitCurrent API rate-limit state (limit, remaining, reset_at, window)
GET/workspaces/:id/membersList workspace members
POST/workspaces/:id/membersInvite a member
PATCH/workspaces/:id/members/:userIdUpdate member role
DELETE/workspaces/:id/members/:userIdRemove a member
GET/workspaces/:id/complianceGet workspace compliance guardrails (phase 1)
PUT/workspaces/:id/complianceSet workspace compliance guardrails (phase 1)
GET/workspaces/:id/compliance/reportGenerate SOC2/HIPAA/GDPR policy readiness report (phase 1)
GET/workspaces/:id/retentionGet workspace retention policy (audit/deploy/metrics)
PUT/workspaces/:id/retentionSet workspace retention policy (audit/deploy/metrics)
GET/workspaces/:id/audit-logsList audit logs (pagination: limit,cursor)
GET/billingGet billing overview

Support

MethodEndpointDescription
GET/support/ticketsList support tickets (status/category/component/tags/query filters)
POST/support/ticketsCreate a ticket (category/component/tags supported)
GET/support/tickets/:idGet ticket details
PATCH/support/tickets/:id/tagsReplace ticket tags
POST/support/tickets/:id/messagesReply to a ticket