2 months ago
Railway Support,
Please investigate a server-side rejection of EnvironmentCreate and confirm when environment creation is healthy again.
Failure details:
- UTC timestamp: 2026-07-25T05:29:00.281Z
-
- Operation: EnvironmentCreate
-
- GraphQL path: environmentCreate
-
- API version: Railway GraphQL API v2
-
- Installed Railway CLI version: 5.23.3
-
- Request method: direct GraphQL API call; the CLI did not perform the failing create operation
-
- HTTP status: 200
-
- GraphQL extensions.code: INTERNAL_SERVER_ERROR
-
- Sanitized message classification: unknown
-
- Local diagnostic classification: network
-
- Diagnostic code: environment_create_rejected
-
- Request ID: not present in the response
-
- Response body SHA-256: 7d02db84dc96fa3d6b3c7ecb2ecc044a948ee8409b5c1d3acca658d37b77466a
The request used EnvironmentCreateInput for an existing Hobby project and a new, uniquely named nonproduction environment. No environment ID was returned, no staging or service operation began, and post-failure exact-name inventory confirmed that no environment existed or remained.
No project or environment identifiers are included in this public post. If Railway staff need the project ID, please request it through a private channel.
Please inspect the server-side EnvironmentCreate rejection and confirm when environment creation is healthy again.
Thank you.
3 Replies
Status changed to Awaiting Railway Response Railway • about 2 months ago
a month ago
The error you received was a server-side failure, not a validation rejection. Could you share a generalized example of the GraphQL request you sent (the mutation shape and the EnvironmentCreateInput fields you included, with any project-specific identifiers redacted)? That would help us determine whether a specific input combination triggered an unhandled code path.
Status changed to Awaiting User Response Railway • about 1 month ago
a month ago
Here is the generalized request, with project-specific identifiers redacted.
Endpoint: POST https://backboard.railway.com/graphql/v2
Headers: authorization: Bearer [account token]; content-type: application/json
Mutation: mutation EnvironmentCreate($input: EnvironmentCreateInput!) { environmentCreate(input: $input) { id name } }
Variables: { "input": { "projectId": "[UUID of existing Hobby project]", "name": "[new unique name]" } }
The EnvironmentCreateInput intentionally contained only projectId and name. This was an empty canary designed to exercise Railway's no-source-environment path and isolate environment creation from application provisioning. No sourceEnvironmentId, ephemeral, stageInitialChanges, service overrides, or variable overrides were sent.
If creation had succeeded, the next operation would have staged only the environment-level configuration { "privateNetworkDisabled": true } using merge: true, then verified that the environment still contained zero services. EnvironmentCreate failed first, so that staging operation was never reached.
The generated name matched ^[a-z0-9][a-z0-9-]*$, was 30 characters, and did not collide with an existing environment. The client timeout was 30 seconds. The response arrived within that window with HTTP 200 and extensions.code: INTERNAL_SERVER_ERROR.
If the creation handler assumes sourceEnvironmentId is present, this request would have exercised the unhandled no-source branch.
Status changed to Awaiting Railway Response Railway • about 1 month ago
a month ago
The request was turned away at the authorization layer, not by a server fault. It came back "Not Authorized" in about three milliseconds, before it reached the environment creation logic.
The token didn't resolve to an account with access to the project. Your CLI authenticated successfully in the same window, so the account itself is healthy. Check what your script sends. An expired account token or a project token scoped to another project would both land here.
The request shape is fine. sourceEnvironmentId is optional, and the path without it is supported. You'd successfully used that path a few hours earlier that morning to create an environment, stage changes, commit, and delete it.
The confusing part is the code. Auth rejections currently return extensions.code INTERNAL_SERVER_ERROR instead of something auth-specific, which is what pointed you toward a server fault. The message body did carry "Not Authorized", so that's the field to key on.
Status changed to Awaiting User Response Railway • about 1 month ago
a month ago
This thread has been marked as solved automatically due to a lack of recent activity. Please re-open this thread or create a new one if you require further assistance. Thank you!
Status changed to Solved Railway • about 1 month ago