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:
| Tier | Requests/second | Burst |
|---|---|---|
| Free | 100 | 200 |
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— publichttps://docs-{slug}.swisblade.com— publicworker— internal only, accessible by other services viaWORKER_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.