LogoLogo
edgegap.comDashboard
  • 📘Learning Center
    • Getting Started
    • Unity Games
      • Getting Started - Servers
      • Developer Tools
    • Unreal Engine Games
      • Getting Started - Servers
      • Developer Tools
    • Matchmaking
      • Getting Started
      • Matchmaker In-Depth
      • Ping Beacons
    • Advanced Features
      • Apps and Versions
      • Deployments
      • Managed Clusters
  • API Reference
    • Dedicated Servers
    • Integration
    • Matchmaking
    • Peer to Peer
  • Release Notes
  • 📚Documentation
    • Sample Projects
      • Unity Netcodes
        • Unity NGO
        • Photon Fusion 1
        • Photon Fusion 2
        • Mirror
        • Mirror WebGL
        • Fishnet
        • Fishnet WebGL
        • Photon Bolt
      • Unreal Top-Down Sample
      • NuxtJS
      • Ruby On Rails
      • Unity Lobbies
      • Unity Matchmaker
    • Tools & Integrations
      • Container
        • What is Docker
        • Your First Docker
        • The Good Practices
        • SSH in Your Container
        • External Registries
          • Docker Hub
          • AWS ECR
          • GCP GCR
          • Gitlab registry
      • Deploy from Nakama
      • EOS Lobby Integration
      • Switch From Gamelift
      • Switch From Multiplay
      • Playfab Bridge
    • Deployment
      • Endpoint Storage
        • How to Save Logs
        • Upload File to Deployment
      • Webhooks
    • Application
      • Command and Arguments
      • 1:1 Port Mapping
    • Session
      • How They Work
      • Application Version Configuration
      • Manage Request
      • Selectors Filtering
    • Fleet
      • Fleet Policy
      • Policy Filter
      • Linking Version
      • Fleet's Deployment
    • Container Registry
    • Distributed Relay
      • Matchmaker/Lobby
      • Relay Edgegap API
      • Transport Samples
    • Lobby
      • Lobby Service
      • Functions
    • Glossary
    • SLA Terms
Powered by GitBook
LogoLogo

Connect with Community

  • Discord
  • Linkedin
  • X

Read More

  • Release Notes
  • Blog
  • Enterprise
  • Legal
  • edgegap.com

© 2025 Edgegap

On this page
  • 🗺️ Orchestration
  • 1. Just-in-Time Deployment
  • 2. Regional Standby
  • 3. Player-Host Authoritative
  • 📍 Server Placement
  • 1. Server Score Strategy (Best Practice)
  • 2. Geolocation Strategy
  • 3. Region Lock Strategy
  • 🟢 Connection Quality
  • 🔄 Deployment Lifecycle
  • 👀 Observability
  • Discoverability
  • Injected Environment Variables
  • Dashboard Monitoring
  • Context & Status
  • Filter Deployments
  • Webhooks & Postbacks
  • 🚨 Troubleshooting

Was this helpful?

  1. Learning Center
  2. Advanced Features

Deployments

PreviousApps and VersionsNextManaged Clusters

Last updated 3 hours ago

Was this helpful?

Learn about deployments and their lifecycle - concepts and best practices for deeper understanding.

If you're new to Edgegap, we recommend starting with:

  • Getting Started - Servers (Unity),

  • Getting Started - Servers (Unreal Engine).

🗺️ Orchestration

Edgegap Deployment service starts new servers on demand, only once your players need them, using cloud-native approach, and treating server instances as - replacing faulty instances entirely instead of nursing each one manually. To fully understand the pros and cons, let’s compare with other orchestration methods.

Your orchestration choice will impact your devops cost, server cost, and scalability.

Most games don’t fit perfectly in a box. Reach out to us over for friendly advice.

1. Just-in-Time Deployment

Golden standard for modern studios providing the easiest integration with best cost efficiency.

👍 Advantages

  • lowest hosting cost, scaling capacity to meet demand minute by minute,

  • lowest devops cost due to region-less hosting, Edgegap automates 99% of tasks,

  • lowest ping time due to 615+ sites in Edgegap’s global server pool,

  • fastest scale up (burst-ability) in case of unexpected traffic spike (~3s to deploy),

  • highest standard of security and player cheating prevention (server authority),

  • minimal impact of unexpected server crash on players, only affecting a single match.

👎 Disadvantages

  • adopting a new orchestration mental model requires some ramp up effort initially,

  • servers running longer than 24 hours will be automatically terminated.

🧩 Best Suited For

  • competitive, latency-sensitive games - netcode optimization can only get you so far,

    • First Person Shooters, Fighting Games, VR & XR (virtual and extended reality), …

  • match-based games - with an upper limit on match duration,

    • MOBA, Battle Royale, Cooperative Shooters, Sports Games, ARPGs & Dungeon Crawlers, …

🔎 Discoverability

2. Regional Standby

Traditional model for live games seeking easy and cost efficient alternative to their current hosting.

👍 Advantages

  • highest standard of security and player cheating prevention (server authority),

  • familiar and easy to understand, traditional approach for battle-scarred veterans,

  • allows long-running servers past 24 hours of lifetime (frequent backups recommended).

👎 Disadvantages

  • higher hosting cost, each region requires 1+ unused standby servers (burst capacity),

  • higher devops cost, operations and maintenance duplicated per region,

  • varying ping time depending on player location, usually up to 15 server server locations,

  • unexpected server crash may impact multiple matches, if hosted on the same machine.

🧩 Best Suited For

  • asynchronous multiplayer games - server crashes have minimal impact on player experience:

    • race against ghosts, loot enemy base, timer-based social building/farming games, …

  • latency-tolerant games - when server authoritative real-time physics aren’t required:

    • MMOs, some Cooperative Games, TCGs/CCGs, Turn-Based Strategies, …

  • applications with heavy initialization process - when preparing servers takes minutes.

🔎 Discoverability

  • aim to fill running servers before starting new servers to control standby cost,

See Managed Clusters for self-hosting your microservices and backend services on Edgegap.

3. Player-Host Authoritative

Shift development efforts from dedicated servers to relay netcode for non-competitive games.

👍 Advantages

  • lowest hosting cost, requiring only Relay servers to solve NAT punch-through

  • lowest devops cost, maintenance required only for client builds and distribution channels

  • minimal impact of unexpected server crash on players, only affecting a single match,

  • easy to implement and fast time to prototype, without any backend development required,

👎 Disadvantages

  • increased peer-to-peer netcode development effort requiring concurrent programming skills,

  • worst ping times and most sensitive to unfavorable network conditions (e.g. mobile internet),

  • weakest security, vulnerable to man-in-the-middle attacks and session hijacking,

🧩 Best Suited For

  • cooperative & casual games - when cheating doesn’t take away from fun or break the game,

    • Open-World Sandbox Games, Kids Games, Exploration Games, Adventures, …

  • indie games seeking funding - cost-effective option to produce a publisher demo.

🔎 Discoverability

📍 Server Placement

No matter which orchestration method you choose, picking the right server location for each player (or a group of players) is crucial in ensuring the best possible ping, and optimal player experience. Learn about different strategies for server placement, and how they impact your players.

Your server placement strategy will impact your players’ experience, retention, and your game reviews.

See Deployment Balance Points to analyze server placement in real time, at scale.

1. Server Score Strategy (Best Practice)

Server score strategy uses Edgegap’s patented placement methodology, which optimizes placement of servers for each match individually. Our system performs non-intrusive telemetry to approximate each player’s network proximity to our server locations, and chooses the server which aims for:

  • responsiveness - provides lowest ping for all players on average,

  • fairness - provides a balanced and fair ping for all players.

Unresponsive placement - server is far away, high ping for all players:

Unfair placement - uneven ping, one player is at a disadvantage:

Good placement example - responsive and fair ping for all players:

This strategy is especially effective for hosting a group of players far away from each other (North America vs. Europe, or West coast vs. East coast), frequently the case with pre-made lobbies.

2. Geolocation Strategy

Alternatively, provide players' latitude & longitude coordinates or coordinates of a preferred server location instead of leveraging automated telemetry. This approach requires additional client-side geo-lookup implementation, fully relying on game developer’s solution.

Geolocation strategy is not recommended except for enterprise applications with strict regulatory requirements for inter-regional data transfers, or when player IP is unavailable.

3. Region Lock Strategy

As the last resort, servers may be placed based on a crudely generalized region parameter, either:

  • automatically chosen for the player, based on their metadata (player account database), or

  • selected by the player during matchmaking, allowing placement with high client-server latency.

Using only Region Lock strategy alone is not recommended as it may result in poor network performance.

🟢 Connection Quality

Some games (and some players) are more sensitive to latency or lag than others. While player reports are a great indicator of incidents or regression bugs at scale, players may lack deep understanding of networking concepts and are quick to assign blame to studios, netcode, or servers.

Root cause of some issues may be hidden from players, so cooperation of studio and hosting provider may be crucial. Edgegap’s priority is always to provide the best possible service.

If you’re receiving numerous player reports, experiencing widespread outages, or repeated issues, please reach out to us immediately through a support ticket in our platform.

Low Latency

Player latency is a combination of latency from transferring data between:

  • host to host - resulting from protocol, transport, and security measures,

  • process to process - resulting from (un)boxing and processing data in client/server.

Edgegap reduces physical latency by placing servers closer to your players for shorter responses and lower number of network hops. With locations across 17 cloud and bare metal providers, you get best-in-class ping for players anywhere in the world.

Server and internet coverage globally (not only with Edgegap) is limited due to factors like:

  • infrastructure availability - internet connection quality in a given region may not be sufficient,

  • natural factors - highly complex server racks require mostly stable environment.

High Availability

Availability of servers in various locations around the world will vary over time, changing multiple times throughout the day. Edgegap automatically scales up/down locations on demand, considering:

  • burst traffic - deployments made within a 15 minute period,

  • vCPU requirements - more vCPU per deployment increases overall demand for specific location,

  • provider offering - some remote locations have less provider options available,

  • machine availability - some locations may only offer 4 vCPU or 8 vCPU machines,

  • studio requests for testing, quality assurance, early access, closed betas, or tournaments.

All applications' deploy requests are combined to assess location demand. All organizations have equal allocation priority by default, with the possibility to add private server pools for enterprise customers requiring specific hardware or locations.

Please reach out to us to plan a release, or if you have any requests regarding location availability.

Player Issue Resolution

Player issues may be rooted in server bugs or provider incidents, but may also arise from third parties such as local ISPs, game services, bugs in low level libraries, infrastructure providers, or other sources.

When troubleshooting player reports or incidents, consider factors:

  • matchmaking quality - players should be close to each other (same region) for 📍 Server Placement to yield best results:

    • see Getting Started and Ping Beacons for our recommendations,

  • regional issues:

    • localized Internet Service Providers (ISPs) may be resolving an incident momentarily,

    • some regions (e.g. China, Russia) may be restricted due to localized sanctions,

  • caching level - Edgegap will prioritize fast deployments in cached locations:

  • maximum time to deploy - deployments may fail due to slow and heavy initialization process:

  • server image or integration issues - see 🚨 Troubleshooting.

Display deployment IDs in client match history UI to trace players when troubleshooting.

Notify users about widespread bugs, temporary issues, and outages to mitigate negative sentiment.

🔄 Deployment Lifecycle

Edgegap deployments go through several lifecycle stages, denoted by deployment status.

1. Start a Deployment

A deployment for testing purposes may be started with:

  • Getting Started - Servers - plugin for Unity projects,

  • Getting Started - Servers - plugin for Unreal Engine projects,

A deployment for live production environment should be started with:

Save request_id (Deployment ID) and tag Deployments to identify and troubleshoot them later.

2. Deploying

Once a deployment is started, our system will perform a number of steps in rapid succession:

  • Telemetry - we’re measuring network responsivity from available data centers to each player,

  • Deployment - we’re reserving capacity and preparing to start your server container,

  • Container Boot - we’re starting the container, installing dependencies, and initializing,

  • Post Processing - we’re adding log storage, monitoring, and finalizing the deployment.

3. Deployment Ready

Your container is fully initialized and your server is starting up now. For a few seconds/minute, your server may be still initializing and may not respond to player requests until your game engine (or custom runtime) is fully ready to accept player connections.

Once the deployment is Ready, retry player connection until successful, or until pre-defined client timeout.

4. Deployment Error

Your deployment may end up in Error state at any point in time, for unexpected reasons. This is more likely to happen while testing your integration, or testing new server builds.

You are not charged for deployments in Error, which are automatically stopped after 24 hours.

Troubleshooting steps:

  • Try running your server container locally using Docker Desktop to rule out Edgegap issues.

When asking for help, include your deployment ID and any useful details so we can investigate promptly!

5. Deployment Stopped

We never stop your servers without your directive, to prevent impacting your players’ experience negatively. Your deployment may be stopped for these reasons:

  • Self-Stop via DELETE_URL - deployment stopped itself after players left and match ended,

    • see Injected Environment Variables,

Once a deployment is stopped, we trigger graceful termination by sending SIGTERM signal to your main process, allowing a short termination period. Once expired, a SIGKILL signal is sent to stop deployment.

👀 Observability

Allow game servers to interoperate with third parties and gain operational insights.

Discoverability

Use deployment tags to easily mark your deployments and Filter Deployments.

Outbound traffic (to clients or backend) from your game servers is never blocked or filtered.

Websockets (WS) and Secure Websockets (WSS)

To use websocket-based netcode with Edgegap, you have two options:

  • managed certificate, set up in 1 minute without writing any code:

    • configure your Apps and Versions to use Websocket (WS) and Enable TLS Upgrade,

    • use Edgegap URL to connect clients (e.g. https://5fa53fa00a57.pr.edgegap.net/)

  • self-managed certificate, if you want to use your own custom domain:

    • configure your Apps and Versions to use Secure Websocket (WSS),

Injected Environment Variables

Game servers often need additional information, such as server IP, internal port values, or other.

To make accessing important information more convenient, we inject environment variables:

Basic Information

  • ARBITRIUM_REQUEST_ID - Unique deployment ID, also referred to as request ID. Used to retrieve more information. Example - f68e011bfb01.

    • Deployment URLs always have format {ARBITRIUM_REQUEST_ID}.pr.edgegap.net.

  • ARBITRIUM_PUBLIC_IP - Public IP address of this deployment. Example - 162.254.141.66.

  • ARBITRIUM_CONTEXT_URL - Only callable from the deployment, returns deployment details.

    • Example - https://api.edgegap.com/v1/context/9170f5211e17/17.

    • Requires ARBITRIUM_CONTEXT_TOKEN in Authorization header.

  • ARBITRIUM_CONTEXT_TOKEN - Example - dfaf50b9333b9ee07b22ed247e4a17e6.

  • ARBITRIUM_DEPLOYMENT_TAGS - Comma-delimited tags. Example - tag1,tag2

Port Mapping

  • ARBITRIUM_PORT_GAMEPORT_INTERNAL - Server listens on internal port. Example - 7777.

  • ARBITRIUM_PORT_GAMEPORT_EXTERNAL - Clients connect to external port. Example - 31504.

    • External port values are randomized for each deployment for security purposes.

  • ARBITRIUM_PORT_GAMEPORT_PROTOCOL - Protocol of your netcode transport. Example - UDP.

Examples assume you have named your port gameport (default). Each port adds an additional set of sanitized port mapping variables: @Super Port! ⇒ ARBITRIUM_PORT_SUPER_PORT_INTERNAL .

Lifecycle Management

    • Example value - https://api.edgegap.com/v1/self/stop/9f511e17/660.

    • Requires ARBITRIUM_DELETE_TOKEN in Authorization header.

  • ARBITRIUM_DELETE_TOKEN - Example - 7df4cd933df87084b34ae80d8abde293.

Structured Information (JSON as string)

Environment variables are stored as stringified JSONs, parse them using an SDK or a custom method.

ARBITRIUM_DEPLOYMENT_LOCATION: - Detailed information about deployment location.
ARBITRIUM_DEPLOYMENT_LOCATION="{
  "city": "Montreal",
  "country": "Canada",
  "continent": "North America",
  "administrative_division": "Quebec",
  "timezone": "Eastern Time",
  "latitude": 45.513707,
  "longitude": -73.619073
}"
ARBITRIUM_PORTS_MAPPING: - Detailed information about your internal and external ports.
ARBITRIUM_PORTS_MAPPING="{
  "ports": {
    "gameport": {
      "name": "Game Port",
      "internal": 7777,
      "external": 31504,
      "protocol": "UDP"
    },
    "webport": {
      "name": "Web Port",
      "internal": 8888,
      "external": 31553,
      "protocol": "TCP"
    }
  }
}"

Custom Variables

Define up to 20 custom variables for each deployment, each containing up to 4KB of string data.

Avoid using reserved names above to prevent overwriting existing variables with custom variables.

Dashboard Monitoring

Analytics

  • General Insights: monitor releases with live server count per version + resource usage overview,

  • CPU Insights: troubleshoot lagging servers due to processor-heavy operations,

  • Memory Insights: mitigate server restarts due to exceeding allocated memory,

  • Networking Insights: detect inefficient networking patterns and optimize netcode.

Deployment Map

Preview deployment location, available locations, and estimated player locations on the map:

Deployment Balance Points

Preview deployment balance points heatmap and filter by Apps and Versions. Balance points are approximate locations with equal network proximity to each player in a given deployment:

Balance point hotspots in strange locations (e.g. Greenland) indicate matchmaking of players far from each other. Learn about 🟢 Connection Quality and Ping Beacons to optimize your matchmaking.

Deployment Logs

Deployment logs display information about 🔄 Deployment Lifecycle:

Container Logs

Inspect your game server’s logs in case of issues, or when debugging:

Container Metrics

Review container metrics (processor, memory, networking) to:

  • identify common connection issues when 🚨 Troubleshooting,

  • detect inefficient implementation patterns causing spikes in resource usage,

  • pinpoint inefficient resource usage in particular scenarios,

  • verify changes in your server’s resource usage during optimization,

  • benchmark your server initialization resource consumption and duration.

History metrics display value averages with 1 minute time period, available in Free tier.

Context & Status

Additional deployment information can be retrieved in JSON format:

Context API (only from deployment) requires Context API token, while Status API uses your Edgegap token.

Filter Deployments

Deployment Attribute
Operators
Example Value

or

"ready" or "error"

or

or

"tagA"

or

[ "tagA", "tagB" ]

or or

or

"my-app"

or

[ "my-app", "my-other-app" ]

or

"1.0.0"

or

[ "1.0.0", "prod" ]

true or false

or or

or or

or

5

Each attribute can have at most 1 filter operator in a single request. See API Reference for more.

Sort results by multiple fields in the order they appear in request:

Deployment Attribute
Order

or

or

Example filter queries:

Don’t forget to add the Authorization header with your Edgegap API token in the request.

Webhooks & Postbacks

Webhooks are not retried, so if your backend does not process the request due to rate limiting or an error, the webhook may be lost. Use webhooks only for non-critical use cases or debugging purposes.

🚨 Troubleshooting

When troubleshooting deployments:

  1. verify there are no errors in your Deployment Logs and Container Logs,

  2. run your server locally to rule out integration bugs,

  3. review troubleshooting steps on this page,

See Player Issue Resolution for our recommendations on navigating player community feedback.

Can’t connect clients to server - Request timed out., 请求超时 , ConnectionFailed , or Port verification failed.
  • Please ensure that your game client is connecting to the external port shown on your Deployment details page, this value will be always randomized due to security reasons.

My deployment stopped/restarted and I can’t access it’s logs anymore.
  • In case the server process crashes due to an exception, our system will attempt restarting the server automatically. Consider testing your server locally to uncover the root cause.

  • See 5. Deployment Stopped to discover all causes for stopping your deployment.

My deployment stopped automatically after X minutes.
  • Free Tier deployments have a 60 minute time limit, please consider upgrading your account.

  • See 5. Deployment Stopped to discover all causes for stopping your deployment.

My deployment is ready but I’m not able to connect for several minutes afterwards.
  • Once a deployment is Ready, your game engine initialization begins. This process may take anywhere from seconds to minutes, and the server doesn’t accept to player connections during this period.

  • Consider optimizing your server initialization to decrease this time period.

  • Game clients should retry connection in 1 second intervals for a limited amount of time (depending on your initialization duration), after which they return to matchmaking.

  • Consider adding a loading scene so the server can perform initialization (and travel in case of Unreal Engine) at the same time as clients, while synchronizing state of both.

What will happen if a player leaves my deployment?
  • By default, servers don’t reject player connections. Authenticating players is up to your devs, since many different methods and player authentication providers can be used.

  • Game clients may store connection information locally to attempt reconnecting in case of unexpected client crashes.

My server shows 100% CPU utilization after becoming ready.
  • This may not be an issue, as game engines tend to perform CPU-heavy operations during server initializations. If the CPU usage doesn’t drop after 2-3 minutes from deployment start, you may need to optimize your server or increase app version resources.

  • Reducing tick rate can impact CPU usage as the server performs less messaging operations.

  • You’re limited to 1.5 vCPU and 3GB of memory (RAM) in Free Tier.

  • You may increase allocated resources when creating a new app version. You can duplicate your App version in our Dashboard and adjust these values as needed, without rebuilding your server or image.

My deployment is restarting repeatedly and shows error `OOM kill` .
  • This behavior is caused by exceeding allocated memory amount. Consider optimizing memory usage with object pooling, compression, or removing unneeded objects in your scene.

  • Ensure your project is loading the default scene containing your NetworkManager and the scene is included in Unity’s Build Settings.

  • You’re limited to 1.5 vCPU and 3GB of memory (RAM) in Free Tier.

  • You may increase allocated resources when creating a new app version. You can duplicate your App version in our Dashboard and adjust these values as needed, without rebuilding your server or image.

Sometimes, my server’s memory (RAM) usage spikes to a high value, is that a problem?
  • As long as you stay within the allocated app version memory amount, this is not an issue.

  • Exceeding the allocated app version memory amount will cause `OOM kill` (see above).

Will my server performance be impacted by other servers running on the same machine?
  • No, our platform ensures that allocated resources will not be used by other studios, or other servers on shared infrastructure. With Edgegap, there are no noisy neighbors.

start new games when ,

add players to ,

add to join running games with available capacity,

.

Edgegap automatically scales all 615+ server locations up/down based on player activity in each region. Prepare for success - seamlessly .

add players to ,

add to join running games with available capacity,

.

See our for regional standby alternative to maintain a low-tide capacity.

.

See our for service enabling peer to peer with best in class latency and security.

Edgegap deploys in the with available capacity, for fast and low-latency matches.

Our uses Server Score strategy by default, to ensure best possible experience. To use server score strategy with our and APIs, list players’ public IPs in geo_ip_list.

To use geolocation strategy with our and APIs, list players’ public IPs in geo_ip_list.

Using region selection as a secondary matchmaking pre-filter in combination with another strategy is a viable option. See or use filters field in for custom integrations.

physical devices - the physical signal travelling across ,

see to learn how to find server logs related to player reports,

,

see to increase the timeout period,

to delay initialization steps until absolutely necessary,

- easy to use web interface for testing server integration.

- secure and scalable managed service for game clients,

- server-to-server customized match integration (custom matchmaking),

- server-to-server customized session integration (custom group matchmaking),

- keep a minimum number of 2. Regional Standby servers running.

When testing with , you may override default Dockerfile CMD with custom command.

Too Many Requests 429 - to ensure stability and prevent surprise invoices, we rate limit your organization at 40 req/s. to plan releases, estimate launch traffic, and prepare for success.

Verify Edgegap Service Status by .

Stop from your backend - your server stopped this deployment using ,

Game Max Duration - the allocated time in your has expired,

Empty Time To Live - no players have connected within the defined period:

only triggered with , not available with Matchmaker In-Depth.

Once Ready, deployment is assigned a URL () and an external port for each internal port.

configure your own TLS certificate flow with a custom DNS record (e.g. on ).

Uncaught server exceptions will cause the deployment's container to restart and invalidate TLS security. In such case, and . .

Get variable values using or .

See your variables and Matchmaker in addition.

ARBITRIUM_DELETE_URL - Callable from the deployment, .

Our provides utilities to monitor your server scalability and assist with operations.

Find under category Server Hosting & Orchestration.

to unlock detailed server performance metrics and insights:

Find deployment map in .

Find deployment balance points heatmap in .

Find deployment logs in .

Find container logs in .

Once deployment stops, container logs will be deleted. Set up for persistent logs.

Find container metrics in .

to unlock precise metrics with 1 second time intervals.

prior to your release to request live hosting support for large scale releases.

from inside the deployment (game server), using ,

from outside the deployment (backend / third party), using .

Too Many Requests 429 - we rate limit your organization at 10 req/s for Context and Status API endpoints. Use Injected Environment Variables and for a scalable solution.

To quickly search amongst all deployments, you can :

and apply filters with backend integrations:

List to troubleshoot and remove.

Encoded URL:

https://api.edgegap.com/v1/deployments?query={"filters":[{"field":"status","operator":"eq","value":"error"},{"field":"application","operator":"eq","value":"my-app"},{"field":"version","operator":"eq","value":"green"}],"order_by":[{"field":"created_at","order":"desc"}]}

Formatted JSON query:

{
  "filters": [
    {
      "field": "status",
      "operator": "eq",
      "value": "error"
    },
    {
      "field": "application",
      "operator": "eq",
      "value": "my-app"
    },
    {
      "field": "version",
      "operator": "eq",
      "value": "green"
    }
  ],
  "order_by": [
    {
      "field": "created_at",
      "order": "desc"
    }
  ]
}
List to confirm a release is complete.

Encoded URL:

https://api.edgegap.com/v1/deployments?query={"filters":[{"field":"status","operator":"eq","value":"ready"},{"field":"application","operator":"eq","value":"my-app"},{"field":"version","operator":"eq","value":"blue"}],"order_by":[{"field":"created_at","order":"desc"}]}

Formatted JSON query:

{
  "filters": [
    {
      "field": "status",
      "operator": "eq",
      "value": "ready"
    },
    {
      "field": "application",
      "operator": "eq",
      "value": "my-app"
    },
    {
      "field": "version",
      "operator": "eq",
      "value": "blue"
    }
  ],
  "order_by": [
    {
      "field": "created_at",
      "order": "desc"
    }
  ]
}
List to join.

Encoded URL:

https://api.edgegap.com/v1/deployments?query={"filters":[{"field":"status","operator":"eq","value":"ready"},{"field":"application","operator":"eq","value":"my-app"},{"field":"version","operator":"eq","value":"prod"},{"field":"is_joinable_by_session","operator":"eq","value":true},{"field":"available_session_sockets","operator":"gte","value":1}],"order_by":[{"field":"available_session_sockets","order":"desc"},{"field":"created_at","order":"asc"}]}

Formatted JSON query:

{
  "filters": [
    {
      "field": "status",
      "operator": "eq",
      "value": "ready"
    },
    {
      "field": "application",
      "operator": "eq",
      "value": "my-app"
    },
    {
      "field": "version",
      "operator": "eq",
      "value": "prod"
    },
    {
      "field": "is_joinable_by_session",
      "operator": "eq",
      "value": true
    },
    {
      "field": "available_session_sockets",
      "operator": "gte",
      "value": 1
    }
  ],
  "order_by": [
    {
      "field": "available_session_sockets",
      "order": "desc"
    },
    {
      "field": "created_at",
      "order": "asc"
    }
  ]
}

If you need to receive a simple HTTP notification when a deployment is Ready or in Error, you can specify a in your .

For reliable deployment observers, implement jittered exponential retry or poll .

reach out to us in and include your deployment ID.

First, make sure that the deployment is Ready, and there are no runtime exceptions or errors in your deployment log. If your deployment stopped, inspect logs in our .

If you’re using Mirror netcode you need to have selected in your NetworkManager , rebuild, push, and redeploy your server.

If you’re using FishNet netcode you need to enable in your ServerManager, rebuild, push, and redeploy your server.

If you’re using Photon Fusion 2 netcode, please ensure that your server is passing the deployment public IP, external port and the roomCode on the server, and the same room code in the client in the parameter StartGameArgs. Deployment ID (e.g. b63e6003b19f) is a great choice as it’s globally unique and easily accessible to client by assignment and to the .

Next, please verify that your port setting in your server build’s netcode settings matches the internal port in your . You can change the port mapping by editing the without rebuilding. Find your protocol in your netcode integration.

If you’re using Secure Websocket (WSS) protocol in your netcode integration, please ensure that your port configuration for the WSS port has TLS Upgrade enabled.

Are you located in China and are using ? Your connection may be blocked by the Great Firewall. Consider adding a server located in China to your fleet, or using a VPN to connect.

We only keep logs for the duration of the deployment, if you wish to inspect logs after deployment stops, please .

All deployments will be terminated after 24 hours of runtime following our server sanitization policy, for infrastructure maintenance, and to prevent racking up unexpected costs when deployment wasn’t shut down properly. For long-running servers, consider using .

To allow players to join games in progress, consider using or .

If you’re using Mirror netcode you need to have selected in your NetworkManager , rebuild, push, and redeploy your server.

If you’re using FishNet netcode you need to enable in your ServerManager, rebuild, push, and redeploy your server.

📘
cattle rather than pets
Community Discord
sufficient players join matchmaking
scale to 14 million concurrent users in 60 minutes
Smart Fleets
Distributed Relays
Matchmaker
Deploy
Session
Deploy
Session
Internet networking topology
Dashboard Web UI
Deploy API
Session API
Smart Fleet Policy
Deploy API
Contact us
visiting our uptime monitoring page
Deploy API
Seat or Match sessions
fqdn
Cloudflare
GetEnvironmentVariable in C#
GetEnvironmentVariable in C++
Dashboard
analytics dashboards in the sidebar menu
🌟
Upgrade to Pay as You Go tier
your deployment details page on Dashboard
your application details page on Dashboard
your deployment details page on Dashboard
your deployment details page on Dashboard
third party S3 log storage
your deployment details page on Dashboard
🌟
Upgrade to Pay as You Go tier
Contact us
Deployment Context API
Deployment Status API
Webhooks
use our dashboard
List deployments with API
Deployments with available Session socket capacity
webhook URL
deployment API request
Deployment Status API
Community Discord
Dashboard
"Auto Start Server”
“Start on Headless”
App version
App version
App version
Smart Fleets
integrate a third party log storage
Smart Fleets
"Auto Start Server”
“Start on Headless”
best possible location
deployment will be gracefully stopped
Deployments in Error
2025-05-12T20:03:20Z
application
version
is_joinable_by_session
available_session_sockets
available_session_sockets
status
request_id
tags
created_at
created_at
✏️ Customize Server Image
🏷️ App Versions
🏷️ App Versions
our APIs
“NeworkRunner.StartGame”
Matchmaker
Sessions
stop your server
implement lobby or matchmaking solutions to discover active hosts
implement lobby or matchmaking solutions to discover active hosts
implement third party lobby and/or matchmaking solutions to discover active hosts
activate caching to deploy your servers within seconds
version parameters
🗺️ Region Selection UI
🔎 Server Browser
🔎 Server Browser
Player Traceability
🎫 Player Tickets
App version's
Injected Environment Variables
Injected Environment Variables
Backfill
backfill existing matches and replace leavers
backfill existing matches and replace leavers
Deployments with outdated App version

If you need help, . For live games support see our .

If you need help, . For live games support see our .

please reach out to us over Discord
ticketing system
please reach out to us over Discord
ticketing system
Server state may be lost

Enable caching (CDN) in your to deploy servers within seconds.

🏷️ App Versions
rematch players to a new deployment

Unexpected crash of server will cause your server to restart automatically. .

Server state may be lost