Skip to content
Start here

Create a new application

containers.applications.create(ApplicationCreateParams**kwargs) -> ApplicationCreateResponse
POST/accounts/{account_id}/containers/applications

Create a Containers application.

Use scheduling_policy: "default" for a scheduler-backed application. The Containers scheduler maintains the requested instance count and manages deployment configuration, placement, scaling, versions, and rollouts.

Use scheduling_policy: "durable_object" for a Durable Object-managed application. Each Durable Object creates and manages the lifecycle of its container instance. Supply name, scheduling_policy, and durable_objects, with optional configuration and optional top-level observability settings. Deployment configuration, scaling, constraints, versions, and rollouts do not apply.

Security
API Token

The preferred authorization scheme for interacting with the Cloudflare API. Create a token.

Example:Authorization: Bearer Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY
API Email + API Key

The previous authorization scheme for interacting with the Cloudflare API, used in conjunction with a Global API key.

Example:X-Auth-Email: user@example.com

The previous authorization scheme for interacting with the Cloudflare API. When possible, use API tokens instead of Global API keys.

Example:X-Auth-Key: 144c9defac04969c7bfad8efaa8ea194
ParametersExpand Collapse
account_id: str

Defines the deployment configuration for every deployment in this application.

image: str

Image url.

authorized_keys: Optional[Iterable[CcContainersCreateScheduledApplicationRequestConfigurationAuthorizedKey]]
public_key: str

An SSH public key.

name: Optional[str]

Optional human readable name for this key.

command: Optional[Sequence[str]]

The command that runs when the container starts, passed to the entrypoint. You can override this at run-time. If you override only the command, it gets passed to the default entrypoint specified in the image.

entrypoint: Optional[Sequence[str]]

The entry point for the container, specifying the executable to run when the container starts. You can override this at run-time. If you do, the default command from the image is ignored. Specify both entrypoint and command at run-time to completely replace the image defaults.

environment_variables: Optional[Iterable[CcContainersCreateScheduledApplicationRequestConfigurationEnvironmentVariable]]

Container environment variables.

name: str

An environment variable name.

value: str

An environment variable value.

instance_type: Optional[Literal["lite", "basic", "standard-1", 3 more]]

The instance type configures vCPU, memory, and disk.

  • “lite”: 1/16 vCPU, 256 MiB memory, 2 GB disk
  • “basic”: 1/4 vCPU, 1 GiB memory, 4 GB disk
  • “standard-1”: 1/2 vCPU, 4 GiB memory, 8 GB disk
  • “standard-2”: 1 vCPU, 6 GiB memory, 12 GB disk
  • “standard-3”: 2 vCPU, 8 GiB memory, 16 GB disk
  • “standard-4”: 4 vCPU, 12 GiB memory, 20 GB disk
One of the following:
"lite"
"basic"
"standard-1"
"standard-2"
"standard-3"
"standard-4"
observability: Optional[CcContainersCreateScheduledApplicationRequestConfigurationObservability]

Settings for deployment observability such as logging.

logs: Optional[CcContainersCreateScheduledApplicationRequestConfigurationObservabilityLogs]

Observability logging settings.

enabled: Optional[bool]
instances: int

The initial number of deployments to create.

minimum0
max_instances: int

Sets the maximum number of instances that the application can run.

minimum0
name: str

The name for this application.

scheduling_policy: Literal["default"]

Selects a scheduler-backed application. Use default when the Containers scheduler should maintain the requested number of instances and manage deployment configuration, placement, scaling, versions, and rollouts.

jurisdiction: Optional[str]

Restricts placement to datacenters in the selected jurisdiction. Choose “eu”, “fedramp”, or “us”. When combined with regions, EU supports EEUR and WEUR while FedRAMP and US support ENAM and WNAM.

regions: Optional[Sequence[str]]

Optionally associates this scheduler-backed application with a Durable Object namespace.

One of the following:
class CcContainersCreateScheduledApplicationRequestDurableObjectsCcDurableObjectsConfigurationNamespaceID: …

Durable object configuration using a namespace ID.

namespace_id: str

The namespace ID of the durable object namespace to use for this application.

class CcContainersCreateScheduledApplicationRequestDurableObjectsCcDurableObjectsConfigurationScriptAndClass: …

Durable object configuration using script and class names.

class_name: str

The class name of the durable object.

script_name: str

The script name where the durable object class is defined.

Top-level observability settings for the application. This field is mutually exclusive with configuration.observability.

logs: Optional[CcContainersCreateScheduledApplicationRequestObservabilityLogs]

Observability logging settings.

enabled: Optional[bool]
rollout_active_grace_period: Optional[int]

Grace period for active instances to stay alive before becoming eligible for shutdown signal due to a rollout, in seconds. Defaults to 0.

maximum604800
minimum0
ReturnsExpand Collapse

The public Containers API returns an application.

One of the following:
class CcScheduledApplication: …

Describes an application and the parameters that govern how it places its instances.

id: str

An Application ID represents an identifier of an application.

account_id: str

A unique identifier for the user’s account.

configuration: CcScheduledApplicationConfiguration

User-specified container configuration.

image: str

Image url.

authorized_keys: Optional[List[CcScheduledApplicationConfigurationAuthorizedKey]]
public_key: str

An SSH public key.

name: Optional[str]

Optional human readable name for this key.

command: Optional[List[str]]

The command that runs when the container starts, passed to the entrypoint. You can override this at run-time. If you override only the command, it gets passed to the default entrypoint specified in the image.

entrypoint: Optional[List[str]]

The entry point for the container, specifying the executable to run when the container starts. You can override this at run-time. If you do, the default command from the image is ignored. Specify both entrypoint and command at run-time to completely replace the image defaults.

environment_variables: Optional[List[CcScheduledApplicationConfigurationEnvironmentVariable]]

Container environment variables.

name: str

An environment variable name.

value: str

An environment variable value.

instance_type: Optional[Literal["lite", "basic", "standard-1", 3 more]]

The instance type configures vCPU, memory, and disk.

  • “lite”: 1/16 vCPU, 256 MiB memory, 2 GB disk
  • “basic”: 1/4 vCPU, 1 GiB memory, 4 GB disk
  • “standard-1”: 1/2 vCPU, 4 GiB memory, 8 GB disk
  • “standard-2”: 1 vCPU, 6 GiB memory, 12 GB disk
  • “standard-3”: 2 vCPU, 8 GiB memory, 16 GB disk
  • “standard-4”: 4 vCPU, 12 GiB memory, 20 GB disk
One of the following:
"lite"
"basic"
"standard-1"
"standard-2"
"standard-3"
"standard-4"
observability: Optional[CcScheduledApplicationConfigurationObservability]

Settings for deployment observability such as logging.

logs: Optional[CcScheduledApplicationConfigurationObservabilityLogs]

Observability logging settings.

enabled: Optional[bool]
created_at: str

UTC timestamp string in ISO 8601 format.

instances: int

Number of deployments to create.

name: str

The application name.

scheduling_policy: Literal["default", "durable_object"]

The scheduling policy to use for an application.

One of the following:
"default"
"durable_object"
updated_at: str

UTC timestamp string in ISO 8601 format.

version: int
active_rollout_id: Optional[str]

An identifier for a specific rollout within an application.

constraints: Optional[CcScheduledApplicationConstraints]
jurisdiction: Optional[str]

Restricts placement to datacenters in the selected jurisdiction. Choose “eu”, “fedramp”, or “us”. When combined with regions, EU supports EEUR and WEUR while FedRAMP and US support ENAM and WNAM.

regions: Optional[List[str]]
durable_objects: Optional[CcScheduledApplicationDurableObjects]

Durable object configuration stored on and returned from a Cloudchamber application.

namespace_id: str

The namespace ID of the durable object namespace to use for this application.

health: Optional[CcScheduledApplicationHealth]
errors: List[CcScheduledApplicationHealthError]
event: CcScheduledApplicationHealthErrorEvent

An event within a Placement or a Job.

id: str
details: Dict[str, object]
message: str
name: Literal["SchedulerPlaced", "NetworkingIPAssigned", "VMStarted", 14 more]

Name of the event that describes the kind event that happened.

  • SchedulerPlaced: It’s the first event that creates a container placement. It happens when the Containers runtime was able to retrieve deployment resources and start verifying everything is correct.
  • NetworkingIPAssigned: It’s sent when the Containers runtime maps the IP to the container.
  • VMStarted: It’s sent when the Containers runtime starts the VM. The container might remain unhealthy at this point.
  • ImagePulled: It’s sent when the Containers runtime pulls the image successfully.
  • ImagePullError: It’s sent when the Containers runtime is having issues pulling the image. The message and details have more information on what happened for debugging.
  • VMFailedToStart: It’s sent when the Containers runtime was unable to boot the VM.
  • VMStopping: It’s sent when the scheduler is stopping the VM.
  • VMStopped: It’s sent when the VM finally exits.
  • VMFailed: It’s sent when the scheduling of the VM failed in the current location.
  • RuntimeStartFailed: It’s sent when the runtime hits an internal error.
  • SSHStarted: It’s sent when the container gains network connectivity and opens the SSH port. Containers only send this event when SSH keys exist.
  • CheckUpdate: Sent when the status of a health or readiness check changes. This may also affect the health status of the placement.
  • DurableObjectConnected: Sent when a durable object instance connects and gains control of the deployment. This event is only sent for durable object deployments. It is sent after VMStarted.
  • ContainerStarted: It’s sent when the container starts running.
One of the following:
"SchedulerPlaced"
"NetworkingIPAssigned"
"VMStarted"
"ImagePulled"
"ImagePullError"
"VMFailedToStart"
"NetworkingIPAssignmentFailed"
"VMRunning"
"VMStopping"
"VMStopped"
"VMFailed"
"RuntimeStartFailed"
"SSHStarted"
"ServiceHealthUpdates"
"CheckUpdate"
"DurableObjectConnected"
"ContainerStarted"
status_change: Dict[str, object]
time: str

UTC timestamp string in ISO 8601 format.

type: Literal["Info", "Error", "Warn", 2 more]
One of the following:
"Info"
"Error"
"Warn"
"UserError"
"SystemError"
instance_id: str

An instance ID represents an identifier of an instance configuration that maintains an underlying placement.

instances: CcScheduledApplicationHealthInstances

Shows a count of application instance states.

active: int

Number of instances whose runtime reports the container as running (container_status = “running”). This is a subset of the placements that remain up: an instance that is already bound to a Durable Object and serving traffic is counted under “assigned” until its container_status catches up to “running”, so container_status can briefly lag Durable Object attachment under churn. To estimate running, Durable-Object-bound instances, sum “active” + “assigned” rather than reading “active” alone.

assigned: int

Number of instances bound to a Durable Object with a running placement whose container_status remains behind “running”. These count as live, serving instances; “active” + “assigned” approximates the running, Durable-Object-bound count.

summary: Optional[Literal["healthy", "degraded", "unhealthy", "pending"]]

High-level health assessment. Only populated for “new_instances” strategy. Based on a sample of target-version instances rather than a full count.

  • “pending”: Zero target-version instances exist yet.
  • “healthy”: Every sampled target-version instance reports running or active.
  • “degraded”: Some sampled instances remain starting or scheduling.
  • “unhealthy”: One or more sampled instances have failed.
One of the following:
"healthy"
"degraded"
"unhealthy"
"pending"
max_instances: Optional[int]

Maximum number of instances the application allows. This is relevant for applications that auto-scale.

observability: Optional[CcScheduledApplicationObservability]

Top-level observability settings for the application. This field is mutually exclusive with configuration.observability.

logs: Optional[CcScheduledApplicationObservabilityLogs]

Observability logging settings.

enabled: Optional[bool]
rollout_active_grace_period: Optional[int]

Grace period for active instances to stay alive before becoming eligible for shutdown signal due to a rollout, in seconds. Defaults to 0.

maximum604800
minimum0
class CcDurableObjectApplication: …

Each Durable Object creates and manages the lifecycle of its container instance.

id: str

An Application ID represents an identifier of an application.

account_id: str

A unique identifier for the user’s account.

created_at: str

UTC timestamp string in ISO 8601 format.

durable_objects: CcDurableObjectApplicationDurableObjects

Durable object configuration using a namespace ID.

namespace_id: str

The namespace ID of the durable object namespace to use for this application.

name: str

The application name.

scheduling_policy: Literal["durable_object"]

Selects a Durable Object-managed application. Each Durable Object creates and manages the lifecycle of its container instance. Configure application-wide observability settings here. Deployment configuration, scaling, placement constraints, versions, and rollouts do not apply.

updated_at: str

UTC timestamp string in ISO 8601 format.

configuration: Optional[CcDurableObjectApplicationConfiguration]

Application-wide settings for a Durable Object-managed application.

authorized_keys: Optional[List[CcDurableObjectApplicationConfigurationAuthorizedKey]]
public_key: str

An SSH public key.

name: Optional[str]

Optional human readable name for this key.

wrangler_ssh: Optional[CcDurableObjectApplicationConfigurationWranglerSSH]

Configuration properties for connecting with SSH to a container using Wrangler.

enabled: Optional[bool]
port: Optional[int]
maximum65535
minimum1
health: Optional[CcDurableObjectApplicationHealth]

Aggregate current activity for the latest observed placement of each instance. Runtime snapshots feed periodic background sweeps. Counts refresh after each complete sweep. Instance listings retain their separate three-month history for failure discovery.

instances: CcDurableObjectApplicationHealthInstances

Counts of observed non-terminal instances.

active: int

Number of instances whose runtime reports running or stopping.

minimum0
starting: int

Number of instances whose runtime reports starting.

minimum0
summary: Optional[Literal["pending"]]

Present as pending until the first activity sweep completes; omitted afterward.

observability: Optional[CcDurableObjectApplicationObservability]

Application-wide logging settings for a Durable Object-managed application. The application publishes these settings to its runtime metadata. Updating them does not create a deployment or rollout.

logs: Optional[CcDurableObjectApplicationObservabilityLogs]

Application-wide logging settings.

enabled: Optional[bool]

Create a new application

import os
from cloudflare import Cloudflare

client = Cloudflare(
    api_token=os.environ.get("CLOUDFLARE_API_TOKEN"),  # This is the default and can be omitted
)
application = client.containers.applications.create(
    account_id="account-123",
    configuration={
        "image": "image"
    },
    instances=0,
    max_instances=0,
    name="name",
    scheduling_policy="default",
)
print(application)
{
  "errors": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "messages": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "result": {
    "id": "id",
    "account_id": "account_id",
    "configuration": {
      "image": "image",
      "authorized_keys": [
        {
          "public_key": "public_key",
          "name": "name"
        }
      ],
      "command": [
        "myapp",
        "--default-option"
      ],
      "entrypoint": [
        "/bin/bash"
      ],
      "environment_variables": [
        {
          "name": "name",
          "value": "value"
        }
      ],
      "instance_type": "lite",
      "observability": {
        "logs": {
          "enabled": true
        }
      }
    },
    "created_at": "2021-04-01T12:32:41.488Z",
    "instances": 0,
    "name": "name",
    "scheduling_policy": "default",
    "updated_at": "2021-04-01T12:32:41.488Z",
    "version": 0,
    "active_rollout_id": "active_rollout_id",
    "constraints": {
      "jurisdiction": "jurisdiction",
      "regions": [
        "WNAM"
      ]
    },
    "durable_objects": {
      "namespace_id": "14758f1afd44c09b7992073ccf00b43d"
    },
    "health": {
      "errors": [
        {
          "event": {
            "id": "id",
            "details": {
              "foo": "bar"
            },
            "message": "message",
            "name": "SchedulerPlaced",
            "statusChange": {
              "foo": "bar"
            },
            "time": "2021-04-01T12:32:41.488Z",
            "type": "Info"
          },
          "instance_id": "instance_id"
        }
      ],
      "instances": {
        "active": 0,
        "assigned": 0
      },
      "summary": "healthy"
    },
    "max_instances": 0,
    "observability": {
      "logs": {
        "enabled": true
      }
    },
    "rollout_active_grace_period": 0
  },
  "success": true
}
Returns Examples
{
  "errors": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "messages": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "result": {
    "id": "id",
    "account_id": "account_id",
    "configuration": {
      "image": "image",
      "authorized_keys": [
        {
          "public_key": "public_key",
          "name": "name"
        }
      ],
      "command": [
        "myapp",
        "--default-option"
      ],
      "entrypoint": [
        "/bin/bash"
      ],
      "environment_variables": [
        {
          "name": "name",
          "value": "value"
        }
      ],
      "instance_type": "lite",
      "observability": {
        "logs": {
          "enabled": true
        }
      }
    },
    "created_at": "2021-04-01T12:32:41.488Z",
    "instances": 0,
    "name": "name",
    "scheduling_policy": "default",
    "updated_at": "2021-04-01T12:32:41.488Z",
    "version": 0,
    "active_rollout_id": "active_rollout_id",
    "constraints": {
      "jurisdiction": "jurisdiction",
      "regions": [
        "WNAM"
      ]
    },
    "durable_objects": {
      "namespace_id": "14758f1afd44c09b7992073ccf00b43d"
    },
    "health": {
      "errors": [
        {
          "event": {
            "id": "id",
            "details": {
              "foo": "bar"
            },
            "message": "message",
            "name": "SchedulerPlaced",
            "statusChange": {
              "foo": "bar"
            },
            "time": "2021-04-01T12:32:41.488Z",
            "type": "Info"
          },
          "instance_id": "instance_id"
        }
      ],
      "instances": {
        "active": 0,
        "assigned": 0
      },
      "summary": "healthy"
    },
    "max_instances": 0,
    "observability": {
      "logs": {
        "enabled": true
      }
    },
    "rollout_active_grace_period": 0
  },
  "success": true
}