Docs

Manage Environments with the Public API

Here are examples to help you manage your environments using the Public API.

List Environments

Get all environments for a project:

Required
query environments($projectId: String!) {
  environments(projectId: $projectId) {
    edges {
      node {
        id
        name
        createdAt
      }
    }
  }
}
Variables
{
  "projectId": "project-id"
}

Exclude Ephemeral Environments

Filter out PR/preview environments:

Required
query environments($projectId: String!, $isEphemeral: Boolean) {
  environments(projectId: $projectId, isEphemeral: $isEphemeral) {
    edges {
      node {
        id
        name
        createdAt
      }
    }
  }
}
Variables
{
  "projectId": "project-id",
  "isEphemeral": "false"
}

Get a Single Environment

Fetch an environment by ID with its service instances:

Required
query environment($id: String!) {
  environment(id: $id) {
    id
    name
    createdAt
    serviceInstances {
      edges {
        node {
          id
          serviceName
          latestDeployment {
            id
            status
          }
        }
      }
    }
  }
}
Variables
{
  "id": "environment-id"
}

Create an Environment

Create a new environment:

Required
mutation environmentCreate($input: EnvironmentCreateInput!) {
  environmentCreate(input: $input) {
    id
    name
  }
}
Variables
{
  "input": {
    "projectId": "project-id",
    "name": "staging"
  }
}

Rename an Environment

Required
mutation environmentRename($id: String!, $input: EnvironmentRenameInput!) {
  environmentRename(id: $id, input: $input)
}
Variables
{
  "id": "environment-id",
  "input": {
    "name": "new-name"
  }
}

Delete an Environment

Required
mutation environmentDelete($id: String!) {
  environmentDelete(id: $id)
}
Variables
{
  "id": "environment-id"
}

Get Environment Logs

Fetch logs from all services in an environment:

Required
query environmentLogs($environmentId: String!, $filter: String) {
  environmentLogs(environmentId: $environmentId, filter: $filter) {
    timestamp
    message
    severity
    tags {
      serviceId
      deploymentId
    }
  }
}
Variables
{
  "environmentId": "environment-id"
}

Staged Changes

Railway supports staging variable changes before deploying them.

Get Staged Changes

Required
query environmentStagedChanges($environmentId: String!) {
  environmentStagedChanges(environmentId: $environmentId)
}
Variables
{
  "environmentId": "environment-id"
}

Commit Staged Changes

Required
mutation environmentPatchCommitStaged($environmentId: String!) {
  environmentPatchCommitStaged(environmentId: $environmentId)
}
Variables
{
  "environmentId": "environment-id"
}
Edit this file on GitHubLast updated Feb 3, 2026