# Railway Domain Management
Add, view, or remove domains for Railway services.
## When to Use
- User asks to "add a domain", "generate a domain", "get a URL"
- User wants to add a custom domain
- User asks "what's the URL for my service"
- User wants to remove a domain
## Add Railway Domain
Generate a railway-provided domain (max 1 per service):
```bash
railway domain --json
```
For a specific service:
```bash
railway domain --json --service backend
```
### Response
Returns the generated domain URL. Service must have a deployment.
## Add Custom Domain
```bash
railway domain example.com --json
```
### Response
Returns required DNS records:
```json
{
"domain": "example.com",
"dnsRecords": [
{ "type": "CNAME", "host": "@", "value": "..." }
]
}
```
Tell user to add these records to their DNS provider.
## Read Current Domains
Use railway-environment skill to see configured domains, or query directly:
```graphql
query domains($envId: String!) {
environment(id: $envId) {
config(decryptVariables: false)
}
}
```
Domains are in `config.services..networking`:
- `serviceDomains` - Railway-provided domains
- `customDomains` - User-provided domains
## Remove Domain
Use railway-environment skill to remove domains:
### Remove custom domain
```json
{
"services": {
"": {
"networking": {
"customDomains": { "": null }
}
}
}
}
```
### Remove railway domain
```json
{
"services": {
"": {
"networking": {
"serviceDomains": { "": null }
}
}
}
}
```
Then use railway-environment skill to apply and commit the change.
## CLI Options
| Flag | Description |
|------|-------------|
| `[DOMAIN]` | Custom domain to add (omit for railway domain) |
| `-p, --port ` | Port to connect |
| `-s, --service ` | Target service (defaults to linked) |
| `--json` | JSON output |
## Composability
- **Read domains**: Use railway-environment skill
- **Remove domains**: Use railway-environment skill
- **Apply removal**: Use railway-environment skill
- **Check service**: Use railway-service skill
## Error Handling
### No Service Linked
```
No service linked. Use --service flag or run `railway service` to select one.
```
### Domain Already Exists
```
Service already has a railway-provided domain. Maximum 1 per service.
```
### No Deployment
```
Service has no deployment. Deploy first with `railway up`.
```
### Invalid Domain
```
Invalid domain format. Use a valid domain like "example.com" or "api.example.com".
```
Source: claude-code-templates (MIT). See About Us for full credits.