Launchpad API

Deploy apps from container images with a single API call. Auto-scaling, custom domains, zero-downtime deploys, and built-in metrics for your applications.

← All APIs · VPS Co-Stream · Auth Pay

Base URL

https://api.railscloud.co/v1

Authentication

Include your API key or JWT token in the Authorization header. All Launchpad endpoints require authentication and project membership.

# API key (programmatic access)
Authorization: Bearer dk_live_your_api_key

# JWT token (dashboard sessions)
Authorization: Bearer <jwt_token>

How It Works

Launchpad deploys containerized applications on our K3s infrastructure. Push a container image to Rails Cloud Hub, create an app, and we handle networking, TLS, load balancing, and scaling.

1 Create a Registry in your project and set up a robot account for push access
2 Login to hub.railscloud.co with your robot account and push your container image
3 Create a Launchpad app in the dashboard or via API — your app gets a URL and is live in seconds
4 Push new image versions and redeploy — zero-downtime rolling updates

Getting Started: Full Walkthrough

Follow these steps to go from a local app to a live deployment on Rails Cloud.

1

Create a Registry & Robot Account

Go to Dashboard → Registry → Create in your project. Once the registry is provisioned, create a Robot Account in the "Robot Accounts" tab. Copy the generated secret — it will not be shown again.

# Robot account credentials format
Username: robot$project-name+robot-name
Password: <generated secret>
2

Login to Rails Cloud Hub

Authenticate with Podman (or Docker) using your robot account credentials.

# Login with robot account
podman login hub.railscloud.co
Username: robot$my-project+ci-deploy
Password: <robot secret>
Login Succeeded!
3

Build & Push Your Container Image

Build your app as a container, tag it with your Hub URL, and push. Your container must listen on port 8080.

# Build your image (ensure EXPOSE 8080 in your Containerfile)
podman build -t hub.railscloud.co/my-project/my-api:latest .

# Push to Rails Cloud Hub
podman push hub.railscloud.co/my-project/my-api:latest
Tip: If building on Apple Silicon (M1/M2/M3), ensure your Containerfile includes GOARCH=amd64 or use --platform linux/amd64 so the image runs on our x86_64 infrastructure.
4

Create a Launchpad App

Go to Dashboard → Launchpad → Create or use the API. Select your project, image URL, plan size, and optional database/Redis add-ons. Your app will be provisioned with SSL and available at your-app.app.railscloud.co.

# Via API
curl -X POST https://api.railscloud.co/v1/projects/my-project/apps \
  -H "Authorization: Bearer dk_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "my-api",
    "size": "app-xs",
    "image_url": "hub.railscloud.co/my-project/my-api:latest"
  }'
5

Redeploy & Iterate

Push a new image version and trigger a redeploy from the dashboard or API. Rolling updates ensure zero downtime.

# Push new version
podman build -t hub.railscloud.co/my-project/my-api:v2 .
podman push hub.railscloud.co/my-project/my-api:v2

# Redeploy via API
curl -X POST https://api.railscloud.co/v1/apps/APP_ID/deploy \
  -H "Authorization: Bearer dk_live_your_key" \
  -d '{"image": "hub.railscloud.co/my-project/my-api:v2"}'

Quick Start

# Create an app
curl -X POST https://api.railscloud.co/v1/projects/my-project/apps \
  -H "Authorization: Bearer dk_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "my-api",
    "size": "app-xs"
  }'

# Response: {"data": {"id": "...", "name": "my-api", "status": "provisioning", ...}}

# Deploy a container image
curl -X POST https://api.railscloud.co/v1/apps/APP_ID/deploy \
  -H "Authorization: Bearer dk_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{"image": "hub.railscloud.co/my-org/my-api:v1.0.0"}'

# Response: {"data": {"status": "deploying", "version": "v1.0.0", ...}}

Endpoints

App Management

POST /projects/{slug}/apps Create a new app
GET /projects/{slug}/apps List all apps in a project
GET /apps/{id} Get app details
DELETE /apps/{id} Permanently delete an app

Deployments

POST /apps/{id}/deploy Deploy a new version from a container image

Metrics

GET /apps/{id}/metrics CPU, memory, request count, and response times

Example: CI/CD Deployment

Add this to your CI pipeline to deploy on every push to main.

# Build and push your image to Rails Cloud Registry
podman build -t hub.railscloud.co/my-org/my-api:$GIT_SHA .
podman push hub.railscloud.co/my-org/my-api:$GIT_SHA

# Deploy the new version
curl -X POST https://api.railscloud.co/v1/apps/APP_ID/deploy \
  -H "Authorization: Bearer dk_live_your_key" \
  -H "Content-Type: application/json" \
  -d "{\"image\": \"hub.railscloud.co/my-org/my-api:$GIT_SHA\"}"

Example: Using the CLI

# Create an app
rc app create --name my-api --size app-xs --project my-project

# Deploy
rc app deploy --app my-api --image hub.railscloud.co/my-org/my-api:latest

# Check metrics
rc app metrics --app my-api

# Delete an app
rc app delete --app my-api

Rate Limits

Create / delete 10 per minute
Deploy 30 per hour
Read operations 120 per minute

Error Responses

All errors follow a standard format.

{
  "error": "image_not_found",
  "message": "The container image could not be pulled from the registry"
}
400 Invalid request body or missing fields
401 Invalid or missing authentication
403 Insufficient permissions for this project
404 App or project not found
422 Validation error (invalid image URL, duplicate name)
429 Rate limit exceeded
Deploy Your First App