Skip to main content

Public URLs

By default, services are only accessible internally within your project. To expose a service to the internet with HTTPS, set public: true.

Enabling public access

{
"api": {
"source": { "repo": "github.com/you/api.git", "ref": "main" },
"type": "app",
"runtime": "node",
"port": 3000,
"public": true
}
}

URL format

Public services are assigned a URL based on the service name and project slug:

https://{service-name}-{project-slug}.swisblade.com

Example: If your project slug is a1b2c3d4-my-app and the service is called api:

https://api-a1b2c3d4-my-app.swisblade.com

You can find your project slug in the dashboard on the project overview page.

SSL certificates

SSL certificates are provisioned automatically via Let's Encrypt. There's nothing to configure — your public URL is available over HTTPS immediately after deploy.

Rate limiting

Public services have rate limiting enabled to protect your application:

TierRequests/secondBurst
Free100200

If a client exceeds the rate limit, they receive an HTTP 429 Too Many Requests response.

Multiple public services

You can expose multiple services from the same project:

{
"services": {
"api": {
"type": "app",
"port": 3000,
"public": true
},
"docs": {
"type": "app",
"port": 8080,
"public": true
},
"worker": {
"type": "app",
"port": 9000
}
}
}

This creates:

  • https://api-{slug}.swisblade.com — public
  • https://docs-{slug}.swisblade.com — public
  • worker — internal only, accessible by other services via WORKER_URL

Private services

Services without public: true are only accessible:

  • By other services in the same project via connects_to
  • Over Docker's internal network using the service name as hostname

They are not accessible from the internet.