Integration
📦 Applications
Create an application that will regroup application versions.
The application name
Example App
If the application can be deployed
true
If the telemetry agent is installed on the versions of this app.
Image base64 string
iVBORw0KGgoAAAANSUhEUg[...]AAABJRU5ErkJggg==
POST /v1/app HTTP/1.1
Host: api.edgegap.com
authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 128
{
"name": "Example App",
"is_active": true,
"is_telemetry_agent_active": false,
"image": "iVBORw0KGgoAAAANSUhEUg[...]AAABJRU5ErkJggg=="
}
{
"name": "Example App",
"is_active": true,
"is_telemetry_agent_active": false,
"image": "iVBORw0KGgoAAAANSUhEUg[...]AAABJRU5ErkJggg==",
"create_time": "2025-07-05 12:00:39.088042",
"last_updated": "2025-07-05 12:00:39.088042"
}
Update an application with new information.
Application name
Example App
If the application can be deployed
true
If the telemetry agent is installed on the versions of this app.
Image base64 string
iVBORw0KGgoAAAANSUhEUg[...]AAABJRU5ErkJggg==
PATCH /v1/app/{app_name} HTTP/1.1
Host: api.edgegap.com
authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 128
{
"name": "Example App",
"is_active": true,
"is_telemetry_agent_active": false,
"image": "iVBORw0KGgoAAAANSUhEUg[...]AAABJRU5ErkJggg=="
}
{
"name": "Example App",
"is_active": true,
"is_telemetry_agent_active": false,
"image": "iVBORw0KGgoAAAANSUhEUg[...]AAABJRU5ErkJggg==",
"create_time": "2025-07-05 12:00:39.088042",
"last_updated": "2025-07-05 12:00:39.088042"
}
Retrieve an application and its information.
GET /v1/app/{app_name} HTTP/1.1
Host: api.edgegap.com
authorization: YOUR_API_KEY
Accept: */*
{
"name": "Example App",
"is_active": true,
"is_telemetry_agent_active": false,
"image": "iVBORw0KGgoAAAANSUhEUg[...]AAABJRU5ErkJggg==",
"create_time": "2025-07-05 12:00:39.088042",
"last_updated": "2025-07-05 12:00:39.088042"
}
Delete an application and all its current versions.
DELETE /v1/app/{app_name} HTTP/1.1
Host: api.edgegap.com
authorization: YOUR_API_KEY
Accept: */*
No content
Create an application version associated with an application. The version contains all the specifications to create a deployment.
The name of the application associated
This is the identifier for your version. It’s often linked to a build version, but can be any unique name.
1.0.0
This boolean tells the system whether this version can be deployed or is deactivated.
true
‘docker_repository’ is named incorrectly, this property references the Docker registry where this version’s container image is hosted (e.g., ‘registry.edgegap.com’ or ‘docker.io’).
docker.io
The Docker image for your version, usually including a namespace or project.
edgegap/lyrastartergame
The Docker tag for your version. It must be valid according to your Docker image.
25.05.30-16.45.19-04
The username used to access your container registry. This is not your Edgegap account credential.
my_username
The token or password used to access your container registry. This is not your Edgegap account password.
my_password
The number of vCPU units required to run your server container (1024 units = 1 vCPU).
1536
The amount of memory in MB required to run your server container (1024 MB = 1 GB). It can be at most twice the number of vCPU units requested.
3072
Units of GPU needed (1024 = 1 GPU)
The maximum duration in minutes the app version can run before being automatically stopped. If omitted, the default is 1440 minutes (24 hours).
30
Enable faster deployments by caching your container across all Edgegap locations. Recommended for live games.
true
Time in seconds to wait for the app version to deploy before marking it as failed. Useful for enforcing strict deployment time limits.
15
By enabling the verify_image option, your image information (docker_repository, docker_image, docker_tag) will be tested to ensure the image can be pulled successfully.
false
Example: true
Termination grace period in seconds after sending the SIGTERM signal to the container. Allows graceful shutdown and post-processing before the container stops.
5
The name of the endpoint storage to use to store the container logs at the end of the deployment. This will overwrite the default storage in the app version.
my-storage
Entrypoint/command override for your container. This replaces the default command and should be used with caution.
null | 'string'
Arguments to pass to the container’s command. This replace the default arguments and should be used with caution
null | 'string'
The name of the DNS configuration to link with your deployment.
If true, the app version will only be deployed in Mainland China locations. Otherwise, it will never deploy in Mainland China locations.
false
POST /v1/app/{app_name}/version HTTP/1.1
Host: api.edgegap.com
authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 775
{
"name": "1.0.0",
"is_active": true,
"docker_repository": "docker.io",
"docker_image": "edgegap/lyrastartergame",
"docker_tag": "25.05.30-16.45.19-04",
"private_username": "my_username",
"private_token": "my_password",
"req_cpu": 1536,
"req_memory": 3072,
"req_video": 0,
"max_duration": 30,
"force_cache": true,
"time_to_deploy": 15,
"session_config": {
"kind": "Seat",
"sockets": 10,
"autodeploy": true,
"empty_ttl": 60,
"session_max_duration": 1
},
"ports": [
{
"port": 7777,
"protocol": "UDP",
"to_check": true,
"tls_upgrade": false,
"name": "game_port"
}
],
"envs": [
{
"key": "MAP_ID",
"value": "forest1",
"is_secret": true
}
],
"verify_image": true,
"termination_grace_period_seconds": 5,
"endpoint_storage": "my-storage",
"command": "null | 'string'",
"arguments": "null | 'string'",
"dns_config": "text",
"will_deploy_in_mainland_china": false
}
{
"success": true,
"version": {
"name": "1.0.0",
"is_active": true,
"docker_repository": "docker.io",
"docker_image": "edgegap/lyrastartergame",
"docker_tag": "25.05.30-16.45.19-04",
"private_username": "my_username",
"private_token": "my_password",
"req_cpu": 1536,
"req_memory": 3072,
"req_video": 0,
"max_duration": 30,
"force_cache": true,
"kind": 0,
"time_to_deploy": 15,
"session_config": {
"kind": "Seat",
"sockets": 10,
"autodeploy": true,
"empty_ttl": 60,
"session_max_duration": 1
},
"ports": [
{
"port": 7777,
"protocol": "UDP",
"to_check": true,
"tls_upgrade": false,
"name": "game_port"
}
],
"envs": [
{
"key": "MAP_ID",
"value": "forest1",
"is_secret": true
}
],
"verify_image": true,
"termination_grace_period_seconds": 5,
"endpoint_storage": "my-storage",
"command": "null | 'string'",
"arguments": "null | 'string'",
"create_time": "2025-07-05T23:02:26.973Z",
"last_updated": "2025-07-05T23:02:26.973Z",
"dns_config": "text",
"will_deploy_in_mainland_china": false
}
}
Delete a specific version of an application.
The name of the application
The name of the application version
DELETE /v1/app/{app_name}/version/{version_name} HTTP/1.1
Host: api.edgegap.com
authorization: YOUR_API_KEY
Accept: */*
{
"success": true,
"message": "text"
}
Retrieve the specifications of an application version.
The name of the application
The name of the application version
GET /v1/app/{app_name}/version/{version_name} HTTP/1.1
Host: api.edgegap.com
authorization: YOUR_API_KEY
Accept: */*
{
"name": "1.0.0",
"is_active": true,
"docker_repository": "docker.io",
"docker_image": "edgegap/lyrastartergame",
"docker_tag": "25.05.30-16.45.19-04",
"private_username": "my_username",
"private_token": "my_password",
"req_cpu": 1536,
"req_memory": 3072,
"req_video": 0,
"max_duration": 30,
"force_cache": true,
"kind": 0,
"time_to_deploy": 15,
"session_config": {
"kind": "Seat",
"sockets": 10,
"autodeploy": true,
"empty_ttl": 60,
"session_max_duration": 1
},
"ports": [
{
"port": 7777,
"protocol": "UDP",
"to_check": true,
"tls_upgrade": false,
"name": "game_port"
}
],
"envs": [
{
"key": "MAP_ID",
"value": "forest1",
"is_secret": true
}
],
"verify_image": true,
"termination_grace_period_seconds": 5,
"endpoint_storage": "my-storage",
"command": "null | 'string'",
"arguments": "null | 'string'",
"create_time": "2025-07-05T23:02:26.973Z",
"last_updated": "2025-07-05T23:02:26.973Z",
"dns_config": "text",
"will_deploy_in_mainland_china": false
}
Update an application version with new specifications.
The name of the application
The name of the application version
This is the identifier for your version. It’s often linked to a build version, but can be any unique name.
1.0.0
This boolean tells the system whether this version can be deployed or is deactivated.
true
‘docker_repository’ is named incorrectly, this property references the Docker registry where this version’s container image is hosted (e.g., ‘registry.edgegap.com’ or ‘docker.io’).
docker.io
The Docker image for your version, usually including a namespace or project.
edgegap/lyrastartergame
The Docker tag for your version. It must be valid according to your Docker image.
25.05.30-16.45.19-04
The username used to access your container registry. This is not your Edgegap account credential.
my_username
The token or password used to access your container registry. This is not your Edgegap account password.
my_password
The maximum duration in minutes the app version can run before being automatically stopped. If omitted, the default is 1440 minutes (24 hours).
30
Enable faster deployments by caching your container across all Edgegap locations. Recommended for live games.
true
Time in seconds to wait for the app version to deploy before marking it as failed. Useful for enforcing strict deployment time limits.
15
Termination grace period in seconds after sending the SIGTERM signal to the container. Allows graceful shutdown and post-processing before the container stops.
5
By enabling the verify_image option, your image infos (docker_repository, docker_image, docker_tag) will be tested.
false
Example: true
The name of the endpoint storage to use to store the container logs at the end of the deployment. This will overwrite the default storage in the app version.
my-storage
Entrypoint/command override for your container. This replaces the default command and should be used with caution.
null | 'string'
Arguments to pass to the container’s command. This replace the default arguments and should be used with caution
null | 'string'
The name of the DNS configuration to link with your deployment.
If true, the app version will only be deployed in Mainland China locations. Otherwise, it will never deploy in Mainland China locations.
false
PATCH /v1/app/{app_name}/version/{version_name} HTTP/1.1
Host: api.edgegap.com
authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 728
{
"name": "1.0.0",
"is_active": true,
"docker_repository": "docker.io",
"docker_image": "edgegap/lyrastartergame",
"docker_tag": "25.05.30-16.45.19-04",
"private_username": "my_username",
"private_token": "my_password",
"max_duration": 30,
"force_cache": true,
"time_to_deploy": 15,
"session_config": {
"kind": "Seat",
"sockets": 10,
"autodeploy": true,
"empty_ttl": 60,
"session_max_duration": 1
},
"ports": [
{
"port": 7777,
"protocol": "UDP",
"to_check": true,
"tls_upgrade": false,
"name": "game_port"
}
],
"envs": [
{
"key": "MAP_ID",
"value": "forest1",
"is_secret": true
}
],
"termination_grace_period_seconds": 5,
"verify_image": true,
"endpoint_storage": "my-storage",
"command": "null | 'string'",
"arguments": "null | 'string'",
"dns_config": "text",
"will_deploy_in_mainland_china": false
}
{
"success": true,
"version": {
"name": "1.0.0",
"is_active": true,
"docker_repository": "docker.io",
"docker_image": "edgegap/lyrastartergame",
"docker_tag": "25.05.30-16.45.19-04",
"private_username": "my_username",
"private_token": "my_password",
"req_cpu": 1536,
"req_memory": 3072,
"req_video": 0,
"max_duration": 30,
"force_cache": true,
"kind": 0,
"time_to_deploy": 15,
"session_config": {
"kind": "Seat",
"sockets": 10,
"autodeploy": true,
"empty_ttl": 60,
"session_max_duration": 1
},
"ports": [
{
"port": 7777,
"protocol": "UDP",
"to_check": true,
"tls_upgrade": false,
"name": "game_port"
}
],
"envs": [
{
"key": "MAP_ID",
"value": "forest1",
"is_secret": true
}
],
"verify_image": true,
"termination_grace_period_seconds": 5,
"endpoint_storage": "my-storage",
"command": "null | 'string'",
"arguments": "null | 'string'",
"create_time": "2025-07-05T23:02:26.973Z",
"last_updated": "2025-07-05T23:02:26.973Z",
"dns_config": "text",
"will_deploy_in_mainland_china": false
}
}
List all versions of a specific application.
The name of the application
GET /v1/app/{app_name}/versions HTTP/1.1
Host: api.edgegap.com
authorization: YOUR_API_KEY
Accept: */*
{
"versions": [
{
"name": "1.0.0",
"is_active": true,
"docker_repository": "docker.io",
"docker_image": "edgegap/lyrastartergame",
"docker_tag": "25.05.30-16.45.19-04",
"private_username": "my_username",
"private_token": "my_password",
"req_cpu": 1536,
"req_memory": 3072,
"req_video": 0,
"max_duration": 30,
"force_cache": true,
"kind": 0,
"time_to_deploy": 15,
"session_config": {
"kind": "Seat",
"sockets": 10,
"autodeploy": true,
"empty_ttl": 60,
"session_max_duration": 1
},
"ports": [
{
"port": 7777,
"protocol": "UDP",
"to_check": true,
"tls_upgrade": false,
"name": "game_port"
}
],
"envs": [
{
"key": "MAP_ID",
"value": "forest1",
"is_secret": true
}
],
"verify_image": true,
"termination_grace_period_seconds": 5,
"endpoint_storage": "my-storage",
"command": "null | 'string'",
"arguments": "null | 'string'",
"create_time": "2025-07-05T23:02:26.973Z",
"last_updated": "2025-07-05T23:02:26.973Z",
"dns_config": "text",
"will_deploy_in_mainland_china": false
}
],
"total_count": 1
}
List all the applications that you own.
GET /v1/apps HTTP/1.1
Host: api.edgegap.com
authorization: YOUR_API_KEY
Accept: */*
{
"applications": [
{
"name": "Example App",
"is_active": true,
"is_telemetry_agent_active": false,
"image": "iVBORw0KGgoAAAANSUhEUg[...]AAABJRU5ErkJggg==",
"create_time": "2025-07-05 12:00:39.088042",
"last_updated": "2025-07-05 12:00:39.088042"
}
]
}
💾 Container Registry
List all tags of a specific registry image.
The name of the image
GET /v1/container-registry/images/{image_name}/tags HTTP/1.1
Host: api.edgegap.com
authorization: YOUR_API_KEY
Accept: */*
{
"data": [
{
"tag": "tag1",
"last_push_at": "2025-07-05T23:02:26.973Z",
"artifact": {
"artifact_deleted": true,
"remaining_tags": [
"tag1",
"tag2"
],
"image_hash": "sha256:1234567890abcdef",
"size_mb": 1
}
}
]
}
Delete a single tag from a artifact in the registry.
The name of the image
The name of the tag
DELETE /v1/container-registry/images/{image_name}/tags/{tag_name} HTTP/1.1
Host: api.edgegap.com
authorization: YOUR_API_KEY
Accept: */*
{
"artifact": {
"artifact_deleted": true,
"size_mb": 1,
"remaining_tags": [
"text"
],
"image_hash": "text"
},
"deleted_tag": "text"
}
🗒️ Log Storage
Create an endpoint storage to store your container logs at the end of a deployment.
Name of the Endpoint Storage
my-s3-bucket
Your access key ID to connect to your S3 Bucket.
my-access-key-id
Full URL to your S3 Bucket with https or http. It's recommended to not include your bucket name as a subdomain
https://us-east-1.your-s3-provider.com
Your secret access key to connect to your S3 Bucket. Will be encrypted.
my-bucket
The format how the logs will be exported to the bucket.
TEXT
Example: NDJSON
Possible values: Your secret access key to connect to your S3 Bucket. Will be encrypted.
my-secret-access
POST /v1/storage/endpoint HTTP/1.1
Host: api.edgegap.com
authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 195
{
"name": "my-s3-bucket",
"access_key_id": "my-access-key-id",
"endpoint": "https://us-east-1.your-s3-provider.com",
"bucket": "my-bucket",
"output_format": "NDJSON",
"secret_access_key": "my-secret-access"
}
{
"name": "my-s3-bucket",
"access_key_id": "my-access-key-id",
"endpoint": "https://us-east-1.your-s3-provider.com",
"bucket": "my-bucket",
"output_format": "NDJSON",
"create_time": "2022-01-01 00:00:00.000000",
"last_updated": "2022-01-01 00:00:00.000000"
}
Delete an endpoint storage. All the application versions linked to it won't be able to store logs anymore.
DELETE /v1/storage/endpoint/{endpoint_name} HTTP/1.1
Host: api.edgegap.com
authorization: YOUR_API_KEY
Accept: */*
No content
Retrieve an endpoint storage. The secret_access_key
won't be displayed.
GET /v1/storage/endpoint/{endpoint_name} HTTP/1.1
Host: api.edgegap.com
authorization: YOUR_API_KEY
Accept: */*
{
"name": "my-s3-endpoint",
"access_key_id": "my-access-key-id",
"endpoint": "https://us-east-1.your-s3-provider.com",
"bucket": "my-bucket",
"output_format": "NDJSON",
"create_time": "2022-01-01 00:00:00.000000",
"last_updated": "2022-01-01 00:00:00.000000"
}
Update an Endpoint Storage with new specifications.
Name of the Endpoint Storage
my-s3-endpoint
Your access key ID to connect to your S3 Bucket.
my-access-key-id
Full URL to your S3 Bucket with https or http. It's recommended to not include your bucket name as a subdomain
https://us-east-1.your-s3-provider.com
Your secret access key to connect to your S3 Bucket. Will be encrypted.
my-bucket
The format how the logs will be exported to the bucket.
TEXT
Example: NDJSON
Possible values: Your secret access key to connect to your S3 Bucket. Will be encrypted.
my-secret-access
PATCH /v1/storage/endpoint/{endpoint_name} HTTP/1.1
Host: api.edgegap.com
authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 197
{
"name": "my-s3-endpoint",
"access_key_id": "my-access-key-id",
"endpoint": "https://us-east-1.your-s3-provider.com",
"bucket": "my-bucket",
"output_format": "NDJSON",
"secret_access_key": "my-secret-access"
}
{
"name": "my-s3-endpoint",
"access_key_id": "my-access-key-id",
"endpoint": "https://us-east-1.your-s3-provider.com",
"bucket": "my-bucket",
"output_format": "NDJSON",
"create_time": "2022-01-01 00:00:00.000000",
"last_updated": "2022-01-01 00:00:00.000000"
}
Create a pull profile. Pull profile will upload data from an endpoint storage to a deployment container on boot. You must link the application version to the pull profile first.
Name of the pull profile
pull_profile_name
Source in the S3 bucket to fetch from
/my-bucket/config.cfg
If the source is a File or a Directory
File
Possible values: Destination path where your source will be uploaded in your container. Make sure to avoid protected destinations, such as /etc/
, as this will prevent the files from being copied to your deployment, and will make your deployment fail. Make sure a normal user can write to the destination folder.
/usr/share/configs
POST /v1/storage/endpoint/{endpoint_name}/pull-profile HTTP/1.1
Host: api.edgegap.com
authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 117
{
"name": "pull_profile_name",
"source": "/my-bucket/config.cfg",
"source_type": "File",
"destination": "/usr/share/configs"
}
{
"name": "pull_profile_name",
"source": "/my-bucket/config.cfg",
"source_type": "File",
"destination": "/usr/share/configs",
"create_time": "2022-01-01 00:00:00.000000",
"last_updated": "2022-01-01 00:00:00.000000"
}
Delete a pull profile. All the application versions linked won't receive the data upload anymore. It will not delete your endpoint storage.
DELETE /v1/storage/endpoint/{endpoint_name}/pull-profile/{pull_profile_name} HTTP/1.1
Host: api.edgegap.com
authorization: YOUR_API_KEY
Accept: */*
No content
Retrieve a pull profile and its specifications.
GET /v1/storage/endpoint/{endpoint_name}/pull-profile/{pull_profile_name} HTTP/1.1
Host: api.edgegap.com
authorization: YOUR_API_KEY
Accept: */*
{
"name": "pull_profile_name",
"source": "/my-bucket/config.cfg",
"source_type": "File",
"destination": "/usr/share/configs",
"create_time": "2022-01-01 00:00:00.000000",
"last_updated": "2022-01-01 00:00:00.000000"
}
Update a pull profile with new specifications.
Name of the pull profile
pull_profile_name
Source in the S3 bucket to fetch from
/my-bucket/config.cfg
If the source is a File or a Directory
File
Possible values: Destination path where your source will be uploaded in your container. Make sure to avoid protected destinations, such as /etc/
, as this will prevent the files from being copied to your deployment, and will make your deployment fail. Make sure a normal user can write to the destination folder.
/usr/share/configs
PATCH /v1/storage/endpoint/{endpoint_name}/pull-profile/{pull_profile_name} HTTP/1.1
Host: api.edgegap.com
authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 117
{
"name": "pull_profile_name",
"source": "/my-bucket/config.cfg",
"source_type": "File",
"destination": "/usr/share/configs"
}
{
"name": "pull_profile_name",
"source": "/my-bucket/config.cfg",
"source_type": "File",
"destination": "/usr/share/configs",
"create_time": "2022-01-01 00:00:00.000000",
"last_updated": "2022-01-01 00:00:00.000000"
}
Link a pull profile to an app version. Without a link, the pull profile by itself will do nothing.
PUT /v1/storage/endpoint/{endpoint_name}/pull-profile/{pull_profile_name}/app/{app_name}/version/{version_name} HTTP/1.1
Host: api.edgegap.com
authorization: YOUR_API_KEY
Accept: */*
{
"app": "app_name",
"app_version": "version_name",
"endpoint": "endpoint_name",
"pull_profile": "pull_profile_name",
"create_time": "2022-01-01 00:00:00.000000",
"last_updated": "2022-01-01 00:00:00.000000"
}
Unlink a pull profile from an app version. It will not delete the pull profile.
DELETE /v1/storage/endpoint/{endpoint_name}/pull-profile/{pull_profile_name}/app/{app_name}/version/{version_name} HTTP/1.1
Host: api.edgegap.com
authorization: YOUR_API_KEY
Accept: */*
No content
List all pull profiles of an endpoint storage.
Page number for pagination
Limit of pull profiles for each page
GET /v1/storage/endpoint/{endpoint_name}/pull-profiles HTTP/1.1
Host: api.edgegap.com
authorization: YOUR_API_KEY
Accept: */*
{
"pull_profiles": [
{
"name": "pull_profile_name",
"source": "/my-bucket/config.cfg",
"source_type": "File",
"destination": "/usr/share/configs",
"create_time": "2022-01-01 00:00:00.000000",
"last_updated": "2022-01-01 00:00:00.000000"
}
],
"pagination": {
"number": 1,
"next_page_number": 1,
"previous_page_number": 1,
"paginator": {
"num_pages": 1
},
"has_next": true,
"has_previous": true
}
}
List all endpoint storage.
Page number for pagination
Limit of Fleet for each page
An optional fields mask
GET /v1/storage/endpoints HTTP/1.1
Host: api.edgegap.com
authorization: YOUR_API_KEY
Accept: */*
{
"endpoints": [
{
"name": "my-s3-endpoint",
"access_key_id": "my-access-key-id",
"endpoint": "https://us-east-1.your-s3-provider.com",
"bucket": "my-bucket",
"output_format": "NDJSON",
"create_time": "2022-01-01 00:00:00.000000",
"last_updated": "2022-01-01 00:00:00.000000"
}
],
"pagination": {
"number": 1,
"next_page_number": 1,
"previous_page_number": 1,
"paginator": {
"num_pages": 1
},
"has_next": true,
"has_previous": true
}
}
Last updated
Was this helpful?